Réponses:
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
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:
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>
Vous pouvez le faire en ajoutant "pdf" dans la section des extensions autorisées sous vendor/magento/module-cms/etc/di.xml
comme 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>
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 .
J'ai trouvé cette solution, vous pouvez télécharger n'importe quel type de fichier sur la page produit.
Voir https://www.mageplaza.com/blog/how-upload-product-attachments-magento-2.html
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.
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
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