Magento2: ¿Cómo habilitar pdf en wysiwyg para cargar archivos adjuntos a productos?

9

¿Dónde puedo editar el código para habilitar los archivos PDF o cómo puedo hacerlo en Magento 2 para subir archivos PDF a los productos?

navya
fuente

Respuestas:

12

He creado un módulo simple para permitir tipos de archivos adicionales en el editor WYSIWYG. Este módulo está disponible en GitHub https://github.com/experius/Magento-2-Module-Experius-WysiwygDownloads

Señor Lewis
fuente
Nice one. Funciona bien en 2.1.10
vbak
@Señor. Lewis, ¿funcionará para el formato de archivo .stl? y como instalar esto en magento 2? cualquier manual?
efímero el
Puede encontrarlo en el archivo Léame
Sr. Lewis el
No recibí el manual de instalación
Estudiante
todavía funciona en 2.3.2
Julime
4

Me topé con el mismo problema y se me ocurrió una solución lista para usar, que solo requiere acceso ftp / sftp:

  • cargar un icono de pdf (algo así como adobe icono de pdf) en una carpeta (llamada "pdf", por ejemplo)
  • cargue todos sus archivos pdf a través de ftp / sftp en la misma carpeta (en / [webroot] / pub / media / wysiwyg / pdf (si nombró la carpeta "pdf"))
  • si desea vincular a un pdf, incruste el icono y coloque un enlace que dirija al pdf en cuestión alrededor del icono. Eso es.

Además: debe habilitar que los PDF se muestren en el editor de wysywig. cree un módulo simple con un di.xml que agregue "pdf" a las extensiones de archivo permitidas y se vea así:

<?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
fuente
no funciona para mi
Sarfaraj Sipai
3

Puede hacerlo agregando "pdf" en la sección de extensión permitida debajo, vendor/magento/module-cms/etc/di.xmlcomo a continuación:

<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>
Varun Jyothi
fuente
1
Asegúrese de que debe crear un módulo y anular el di.xml allí
Varun Jyothi
1
Eso no funciona para mí ... :( (caché borrado)
Karol F
1
También asegúrese de que el valor upload_max_filesize de su php.ini sea lo suficientemente alto. No verá errores en Magento si este valor es demasiado bajo. Los PDF pueden ser de mayor tamaño que las imágenes en general.
Anton Evers
2

Tengo Magento 2.1.xy tuve que usar un módulo personalizado para sobrescribir la configuración en el módulo cms y habilitar la carga de pdf. Aquí cómo lo haces .

medina
fuente
0

para crear un módulo que debería usar como este creadores [ 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>

Debería crear algún módulo básico y en di xml debería poner este código. Para mi esta funcionando.

Artashes Baghdasaryan
fuente
0

Nunca debe modificar el código de núcleo de Magento porque cuando actualizamos nuestro código no se actualizará con él. Las extensiones que dependen de la misma clase ya no funcionarán y los parches no tendrán el resultado deseado.

No modifique el código central

Además ... si desea agregar pdf a "Tipos de archivo permitidos" en Magento, puede usar esta referencia que proporciona instrucciones paso a paso agregando un archivo de configuración simple que incluye el tipo de archivo junto con los tipos predeterminados Y un módulo para activar / desactivar esta función.

Agregar pdf como tipo de archivo permitido en Magento

Tony
fuente
0

Cree un di.xml en un módulo personalizado y pegue el siguiente código en el di.xml. Esto permitirá al usuario cargar pdf en el editor de administración 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>

Después de eso, anule el archivo Magento \ Cms \ Model \ Wysiwyg \ Images \ Storage y agregue el siguiente código para evitar el error que se muestra después de la carga de la imagen.

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

Agregue el código de condición if para evitar el archivo de cambio de tamaño para archivos PDF. A continuación se muestra la función donde necesitamos agregar el código anterior.

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;
}

Gracias

Alegrarse
fuente
0

Use este código en di.xml funcionando bien

aplicación / aplicación zip / pdf

sureshc
fuente