Antworten:
Ich habe ein einfaches Modul erstellt, um zusätzliche Dateitypen im WYSIWYG-Editor zuzulassen. Dieses Modul ist auf GitHub https://github.com/experius/Magento-2-Module-Experius-WysiwygDownloads verfügbar
Ich bin auf das gleiche Problem gestoßen und habe eine sofort einsatzbereite Lösung gefunden, die nur FTP / SFTP-Zugriff erfordert:
zusätzlich: du musst aktivieren, dass pdf im wysywig editor angezeigt werden. Erstellen Sie ein einfaches Modul mit einer di.xml, das den zulässigen Dateierweiterungen "pdf" hinzufügt und folgendermaßen aussieht:
<?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>
Sie können dies tun, indem Sie "pdf" im Abschnitt "Zulässige Erweiterung" vendor/magento/module-cms/etc/di.xml
wie folgt hinzufügen :
<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>
Ich habe Magento 2.1.x und musste ein benutzerdefiniertes Modul verwenden, um die Einstellungen im Modul cms zu überschreiben und den PDF-Upload zu aktivieren. Hier erfahren Sie, wie Sie es schaffen .
Ich habe diese Lösung gefunden. Sie können jeden Dateityp auf die Produktseite hochladen.
Siehe https://www.mageplaza.com/blog/how-upload-product-attachments-magento-2.html
Zum Erstellen eines Moduls sollten Sie diese Ersteller verwenden [ 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>
Sie sollten ein Basismodul erstellen und auf di xml diesen Code einfügen. Für mich arbeitet.
Sie sollten den Magento-Kerncode niemals ändern, da unser Code beim Upgrade nicht mit ihm aktualisiert wird. Erweiterungen, die auf derselben Klasse basieren, funktionieren nicht mehr und Patches haben nicht das gewünschte Ergebnis.
Wenn Sie in Magento PDF zu "Zulässige Dateitypen" hinzufügen möchten, können Sie diese Referenz verwenden, die schrittweise Anweisungen enthält, indem Sie eine einfache Konfigurationsdatei hinzufügen, die den Dateityp zusammen mit den Standardtypen UND einem Modul enthält um diese Funktion ein- / auszuschalten.
Erstellen Sie eine di.xml in einem benutzerdefinierten Modul und fügen Sie den folgenden Code in die di.xml ein. Auf diese Weise kann der Benutzer PDF-Dateien im WYSIWYG-Editor des Administrators hochladen.
<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>
Danach überschreiben Sie die Datei Magento \ Cms \ Model \ Wysiwyg \ Images \ Storage und fügen den folgenden Code hinzu, um den Fehler zu vermeiden, der nach dem Hochladen des Bildes auftritt.
if (strtolower($uploader->getFileExtension()) !== 'pdf') {
$this->resizeFile($targetPath . '/' . $uploader->getUploadedFileName(), true);
}
Fügen Sie den if-Bedingungscode hinzu, um die Größenänderung der Datei für PDF-Dateien zu vermeiden. Unten ist die Funktion, in der wir den obigen Code hinzufügen müssen.
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;
}
Vielen Dank