Magento2: Comment activer le pdf sur wysiwyg pour télécharger des pièces jointes aux produits?

9

Où puis-je modifier le code pour activer les fichiers PDF ou comment le faire sur Magento 2 pour télécharger des pièces jointes PDF aux produits?

navya
la source

Réponses:

12

J'ai créé un module simple pour autoriser des types de fichiers supplémentaires dans l'éditeur WYSIWYG. Ce module est disponible sur GitHub https://github.com/experius/Magento-2-Module-Experius-WysiwygDownloads

M. Lewis
la source
Nice one.Fonctionne bien le 2.1.10
vbak
@Monsieur. Lewis fonctionnera-t-il pour le format de fichier .stl? et comment l'installer sur magento 2? un manuel?
éphémère
Vous pouvez le trouver dans le fichier Lisez
M. Lewis
Je n'ai pas reçu le manuel d'installation
Apprenant
fonctionne toujours le 2.3.2
Julime
4

je suis tombé sur le même problème et j'ai trouvé une solution prête à l'emploi, qui ne nécessite qu'un accès ftp / sftp:

  • télécharger une icône pdf (quelque chose comme icône adobe pdf) dans un dossier (nommé "pdf" par exemple)
  • téléchargez tous vos fichiers pdf via ftp / sftp dans le même dossier (sous / [webroot] / pub / media / wysiwyg / pdf (si vous avez nommé le dossier "pdf"))
  • si vous souhaitez créer un lien vers un pdf, intégrez l'icône et placez un lien vers le pdf en question autour de l'icône. c'est ça.

ajout: vous devez activer l'affichage des pdf dans l'éditeur wysywig. créer un module simple avec un di.xml qui ajoute "pdf" aux extensions de fichiers autorisées et ressemble à ceci:

<?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
la source
ne fonctionne pas pour moi.
Sarfaraj Sipai
3

Vous pouvez le faire en ajoutant "pdf" dans la section des extensions autorisées sous vendor/magento/module-cms/etc/di.xmlcomme ci-dessous:

<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
la source
1
Assurez-vous que vous devez créer un module et remplacer le di.xml là
Varun Jyothi
1
Cela ne fonctionne pas pour moi ... :( (cache effacé)
Karol F
1
Assurez-vous également que la valeur upload_max_filesize de votre php.ini est suffisamment élevée. Vous ne verrez aucune erreur dans Magento si cette valeur est trop faible. Les fichiers PDF peuvent être plus grands que les images en général.
Anton Evers
2

J'ai Magento 2.1.x et j'ai dû utiliser un module personnalisé pour écraser les paramètres dans les cms du module et activer le téléchargement de pdf. Voici comment procéder .

médina
la source
0

pour créer un module, vous devez utiliser comme ceci les créateurs [ 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>

Vous devez créer un module de base et sur di xml vous devez mettre ce code. Pour moi, ça marche.

Artashes Baghdasaryan
la source
0

Vous ne devez jamais modifier le code principal de Magento car lorsque nous mettons à niveau notre code ne sera pas mis à niveau avec. Les extensions qui reposent sur la même classe ne fonctionneront plus et les correctifs n'auront pas le résultat souhaité.

Ne modifiez pas le code principal

Aussi ... si vous souhaitez ajouter un fichier PDF à "Types de fichiers autorisés" dans Magento, vous pouvez utiliser cette référence qui fournit des instructions pas à pas en ajoutant un fichier de configuration simple qui inclut le type de fichier avec les types par défaut ET un module pour activer / désactiver cette fonction.

Ajouter un pdf en tant que type de fichier autorisé dans Magento

Tony
la source
0

Créez un di.xml dans un module personnalisé et collez le code ci-dessous dans le di.xml. Cela permettra à l'utilisateur de télécharger un fichier PDF dans l'éditeur WYSIWYG administrateur.

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

Après cela, remplacez le fichier Magento \ Cms \ Model \ Wysiwyg \ Images \ Storage et ajoutez le code ci-dessous pour éviter l'erreur qui s'affiche après le téléchargement de l'image.

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

Ajoutez le code de condition if pour éviter le fichier de redimensionnement pour les fichiers PDF. Ci-dessous, la fonction où nous devons ajouter le code ci-dessus.

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

Merci

Rejoe
la source
0

Utilisez ce code dans di.xml fonctionne correctement

application / application zip / pdf

sureshc
la source