Magento2: Как включить pdf на wysiwyg для загрузки вложений в продукты?

9

Где я могу отредактировать код для включения PDF-файлов или как я могу сделать это в Magento 2 для загрузки PDF-вложений в продукты?

navya
источник

Ответы:

12

Я сделал простой модуль, чтобы разрешить дополнительные типы файлов в редакторе WYSIWYG. Этот модуль доступен на GitHub https://github.com/experius/Magento-2-Module-Experius-WysiwygDownloads

Мистер льюис
источник
Хорошо. Работает хорошо на 2.1.10
vbak
@Г-н. Льюис будет работать для формата файлов .stl? и как установить это на magento 2? любое руководство?
эфемерное
Вы можете найти это в readme
Мистер Льюис
Я не получил руководство по установке
учащийся
до сих пор работает на 2.3.2
Julime
4

я наткнулся на ту же проблему и нашел готовое решение, которое требует только ftp / sftp-доступа:

  • загрузить значок PDF (что-то вроде Adobe PDF значок) в папку (например, с именем «PDF»)
  • загрузите все ваши pdf файлы через ftp / sftp в одну и ту же папку (в / [webroot] / pub / media / wysiwyg / pdf (если вы назвали папку «pdf»))
  • если вы хотите создать ссылку на PDF-файл, вставьте значок и поместите вокруг значка ссылку, которая указывает на соответствующий PDF-файл. это оно.

дополнение: вы должны включить отображение pdf в редакторе wysywig. создайте простой модуль с файлом di.xml, который добавляет «pdf» к разрешенным расширениям файлов и выглядит так:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
        <arguments>
            <argument name="extensions" xsi:type="array">
                <item name="allowed" xsi:type="array">
                    <item name="pdf" xsi:type="number">1</item>
                </item>
                <item name="image_allowed" xsi:type="array">
                    <item name="pdf" xsi:type="number">1</item>
                </item>
            </argument>
        </arguments>
    </type>
</config>
EarlBromStyle
источник
не работает для меня.
Сарфарадж Сипай
3

Вы можете сделать это, добавив «pdf» в раздел разрешенных расширений, vendor/magento/module-cms/etc/di.xmlкак показано ниже:

<item name="allowed" xsi:type="array">
    <item name="jpg" xsi:type="number">1</item>
    <item name="jpeg" xsi:type="number">1</item>
    <item name="png" xsi:type="number">1</item>
    <item name="gif" xsi:type="number">1</item>
    <item name="pdf" xsi:type="number">1</item>
</item>
Варун Джоти
источник
1
Убедитесь, что вы должны создать модуль и переопределить файл di.xml
Jyothi
1
Это не работает для меня ... :( (кеш очищен)
Karol F
1
Также убедитесь, что значение upload_max_filesize вашего php.ini достаточно высокое. Вы не увидите ошибок в Magento, если это значение слишком низкое. PDF может быть больше по размеру, чем изображения в целом.
Антон Эверс
2

У меня есть Magento 2.1.x, и мне пришлось использовать пользовательский модуль, чтобы перезаписать настройки в модуле cms и включить загрузку PDF. Вот как ты это делаешь .

медина
источник
0

для создания модуля вы должны использовать как это создатели [ http://schogini.biz/magento_module_builder/]

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
     <type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
        <arguments>
             <argument name="extensions" xsi:type="array">
                  <item name="allowed" xsi:type="array">
                       <item name="pdf" xsi:type="number">1</item>
                  </item>
             </argument>
        </arguments>
   </type>
</config>

Вы должны создать некоторый базовый модуль, и в di xml вы должны поместить этот код. Для меня это работа.

Арташес Багдасарян
источник
0

Вы никогда не должны изменять основной код Magento, потому что при обновлении наш код не будет обновляться вместе с ним. Расширения, которые полагаются на тот же класс, больше не будут работать, а исправления не будут иметь желаемого результата.

Не модифицируйте основной код

Кроме того ... если вы хотите добавить pdf в «Допустимые типы файлов» в Magento, вы можете использовать эту ссылку, которая предоставляет пошаговые инструкции, добавив простой файл конфигурации, который включает в себя тип файла вместе с типами по умолчанию И модуль включить / выключить эту функцию.

Добавить PDF как допустимый тип файла в Magento

Тони
источник
0

Создайте di.xml в пользовательском модуле и вставьте приведенный ниже код в di.xml. Это позволит пользователю загружать PDF в WYSIWYG редакторе администратора.

<type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
    <arguments>
        <argument name="resizeParameters" xsi:type="array">
            <item name="height" xsi:type="number">75</item>
            <item name="width" xsi:type="number">100</item>
        </argument>
        <argument name="extensions" xsi:type="array">
            <item name="allowed" xsi:type="array">
                <item name="jpg" xsi:type="string">image/jpg</item>
                <item name="jpeg" xsi:type="string">image/jpeg</item>
                <item name="png" xsi:type="string">image/png</item>
                <item name="gif" xsi:type="string">image/gif</item>
                <item name="pdf" xsi:type="string">application/pdf</item>
            </item>
            <item name="image_allowed" xsi:type="array">
                <item name="jpg" xsi:type="string">image/jpg</item>
                <item name="jpeg" xsi:type="string">image/jpeg</item>
                <item name="png" xsi:type="string">image/png</item>
                <item name="gif" xsi:type="string">image/gif</item>
            </item>
            <item name="media_allowed" xsi:type="array">
                <item name="flv" xsi:type="string">video/x-flv</item>
                <item name="avi" xsi:type="string">video/x-msvideo</item>
                <item name="mov" xsi:type="string">video/x-sgi-movie</item>
                <item name="rm" xsi:type="string">application/vnd.rn-realmedia</item>
                <item name="wmv" xsi:type="string">video/x-ms-wmv</item>
                <item name="pdf" xsi:type="string">application/pdf</item>
            </item>
        </argument>
        <argument name="dirs" xsi:type="array">
            <item name="exclude" xsi:type="array">
                <item name="captcha" xsi:type="array">
                    <item name="regexp" xsi:type="boolean">true</item>
                    <item name="name" xsi:type="string">pub[/\\]+media[/\\]+captcha[/\\]*$</item>
                </item>
                <item name="catalog/product" xsi:type="array">
                    <item name="regexp" xsi:type="boolean">true</item>
                    <item name="name" xsi:type="string">pub[/\\]+media[/\\]+catalog[/\\]+product[/\\]*$</item>
                </item>
                <item name="customer" xsi:type="array">
                    <item name="regexp" xsi:type="boolean">true</item>
                    <item name="name" xsi:type="string">pub[/\\]+media[/\\]+customer[/\\]*$</item>
                </item>
                <item name="downloadable" xsi:type="array">
                    <item name="regexp" xsi:type="boolean">true</item>
                    <item name="name" xsi:type="string">pub[/\\]+media[/\\]+downloadable[/\\]*$</item>
                </item>
                <item name="import" xsi:type="array">
                    <item name="regexp" xsi:type="boolean">true</item>
                    <item name="name" xsi:type="string">pub[/\\]+media[/\\]+import[/\\]*$</item>
                </item>
                <item name="theme" xsi:type="array">
                    <item name="regexp" xsi:type="boolean">true</item>
                    <item name="name" xsi:type="string">pub[/\\]+media[/\\]+theme[/\\]*$</item>
                </item>
                <item name="theme_customization" xsi:type="array">
                    <item name="regexp" xsi:type="boolean">true</item>
                    <item name="name" xsi:type="string">pub[/\\]+media[/\\]+theme_customization[/\\]*$</item>
                </item>
                <item name="tmp" xsi:type="array">
                    <item name="regexp" xsi:type="boolean">true</item>
                    <item name="name" xsi:type="string">pub[/\\]+media[/\\]+tmp[/\\]*$</item>
                </item>
            </item>
            <item name="include" xsi:type="array"/>
        </argument>
    </arguments>
</type>

После этого переопределения файл Magento \ Cms \ Model \ Wysiwyg \ Images \ Storage и добавьте следующий код, чтобы избежать ошибки, которая появляется после загрузки изображения.

if (strtolower($uploader->getFileExtension()) !== 'pdf') {
  $this->resizeFile($targetPath . '/' . $uploader->getUploadedFileName(), true); 
 }

Добавьте код условия if, чтобы избежать изменения размера файла PDF. Ниже приведена функция, в которую нам нужно добавить приведенный выше код.

public function uploadFile($targetPath, $type = null)
{
    if (!$this->isPathAllowed($targetPath, $this->getConditionsForExcludeDirs())) {
        throw new \Magento\Framework\Exception\LocalizedException(
            __('We can\'t upload the file to current folder right now. Please try another folder.')
        );
    }
    /** @var \Magento\MediaStorage\Model\File\Uploader $uploader */
    $uploader = $this->_uploaderFactory->create(['fileId' => 'image']);
    $allowed = $this->getAllowedExtensions($type);
    if ($allowed) {
        $uploader->setAllowedExtensions($allowed);
    }
    $uploader->setAllowRenameFiles(true);
    $uploader->setFilesDispersion(false);
    if (!$uploader->checkMimeType($this->getAllowedMimeTypes($type))) {
        throw new \Magento\Framework\Exception\LocalizedException(__('File validation failed.'));
    }
    $result = $uploader->save($targetPath);

    if (!$result) {
        throw new \Magento\Framework\Exception\LocalizedException(__('We can\'t upload the file right now.'));
    }

    // create thumbnail
    if (strtolower($uploader->getFileExtension()) !== 'pdf') {
        $this->resizeFile($targetPath . '/' . $uploader->getUploadedFileName(), true);
     }

    return $result;
}

Спасибо

Rejoe
источник
0

Используйте этот код в di.xml, работает нормально

приложение / почтовое приложение / pdf

sureshc
источник