Magento2: come abilitare pdf su wysiwyg per caricare allegati ai prodotti?


9

Dove posso modificare il codice per abilitare i pdf o come posso farlo su Magento 2 per caricare gli allegati pdf ai prodotti?

Risposte:


12

Ho creato un modulo semplice per consentire tipi di file aggiuntivi nell'editor WYSIWYG. Questo modulo è disponibile su GitHub https://github.com/experius/Magento-2-Module-Experius-WysiwygDownloads


Bello. Funziona bene il 2.1.10
vbak il

@Sig. Lewis funzionerà per il formato di file .stl? e come installarlo su magento 2? qualche manuale?
effimero

Lo puoi trovare nel readme
Mr. Lewis

Non ho ricevuto il manuale di installazione
Learner,

funziona ancora il 2.3.2
Julime

4

mi sono imbattuto nello stesso problema e ho trovato una soluzione pronta all'uso, che richiede solo l'accesso ftp / sftp:

  • carica un'icona pdf (qualcosa del genere icona pdf di Adobe) in una cartella (chiamata "pdf" per esempio)
  • carica tutti i tuoi file pdf via ftp / sftp nella stessa cartella (sotto / [webroot] / pub / media / wysiwyg / pdf (se hai chiamato la cartella "pdf"))
  • se vuoi collegarti a un pdf, incorpora l'icona e metti un link che rimanda al pdf in questione attorno all'icona. questo è tutto.

Inoltre: devi abilitare la visualizzazione dei pdf nell'editor wysywig. crea un semplice modulo con un di.xml che aggiunge "pdf" alle estensioni di file consentite e si presenta così:

<?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>

non funziona per me.
Sarfaraj Sipai,

3

Puoi farlo aggiungendo "pdf" nella sezione delle estensioni consentite sotto vendor/magento/module-cms/etc/di.xmlcome sotto:

<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
Assicurati di creare un modulo e sovrascrivere il di.xml lì
Varun Jyothi,

1
Non funziona per me ... :( (cache cancellata)
Karol F,

1
Assicurati anche che il valore upload_max_filesize del tuo php.ini sia abbastanza alto. Non vedrai errori in Magento se questo valore è troppo basso. I PDF possono avere dimensioni maggiori rispetto alle immagini in generale.
Anton Evers,

2

Ho Magento 2.1.x e ho dovuto usare un modulo personalizzato per sovrascrivere le impostazioni nel modulo cms e abilitare il caricamento in pdf. Ecco come lo fai .



0

per la creazione del modulo dovresti usare come questo creatori [ 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>

Dovresti creare un modulo base e su di xml dovresti inserire questo codice. Per me sta funzionando.


0

Non devi mai modificare il codice core di Magento perché quando eseguiamo l'aggiornamento il nostro codice non verrà aggiornato con esso. Le estensioni che fanno affidamento sulla stessa classe non funzioneranno più e le patch non avranno il risultato desiderato.

Non modificare il codice principale

Inoltre ... se vuoi aggiungere pdf a "Tipi di file consentiti" in Magento puoi usare questo riferimento che fornisce istruzioni passo-passo aggiungendo un semplice file di configurazione che include il tipo di file insieme ai tipi predefiniti E un modulo per attivare / disattivare questa funzione.

Aggiungi pdf come Tipo di file consentito in Magento


0

Crea un di.xml in un modulo personalizzato e incolla il codice seguente in di.xml. Ciò consentirà all'utente di caricare pdf nell'editor WYSIWYG di amministrazione.

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

Successivamente, sovrascrivi il file Magento \ Cms \ Model \ Wysiwyg \ Images \ Storage e aggiungi il codice seguente per evitare l'errore che viene visualizzato dopo il caricamento dell'immagine.

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

Aggiungi il codice condizione if per evitare il file di ridimensionamento per i file PDF. Di seguito è la funzione in cui è necessario aggiungere il codice sopra.

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

Grazie


0

Utilizzare questo codice in di.xml funzionando correttamente

application / zip application / pdf

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.