Magento2: Wie aktiviere ich PDF auf wysiwyg, um Anhänge zu Produkten hochzuladen?


8

Wo kann ich den Code bearbeiten, um die PDFs zu aktivieren, oder wie kann ich ihn auf Magento 2 ausführen, um PDF-Anhänge zu Produkten hochzuladen?

Antworten:


12

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


Nizza one.Works gut am 2.1.10
vbak

@Herr. Lewis wird es für das .stl-Dateiformat funktionieren? und wie installiert man das auf magento 2? irgendein Handbuch?
kurzlebig

Sie finden es in der Readme-Datei
Mr. Lewis

Ich habe kein Installationshandbuch erhalten
Learner

funktioniert noch am 2.3.2
Julime

4

Ich bin auf das gleiche Problem gestoßen und habe eine sofort einsatzbereite Lösung gefunden, die nur FTP / SFTP-Zugriff erfordert:

  • Laden Sie ein PDF-Symbol (so etwas wie Adobe PDF-Symbol) in einen Ordner hoch (zum Beispiel "pdf").
  • Laden Sie alle Ihre PDF-Dateien über ftp / sftp in denselben Ordner hoch (unter / [webroot] / pub / media / wysiwyg / pdf (wenn Sie den Ordner "pdf" genannt haben)).
  • Wenn Sie einen Link zu einem PDF erstellen möchten, binden Sie das Symbol ein und fügen Sie einen Link ein, der auf das betreffende PDF um das Symbol verweist. das ist es.

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>

Ich arbeite nicht für mich.
Sarfaraj Sipai

2

Sie können dies tun, indem Sie "pdf" im Abschnitt "Zulässige Erweiterung" vendor/magento/module-cms/etc/di.xmlwie 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>

1
Stellen Sie sicher, dass Sie ein Modul erstellen und die Datei di.xml dort überschreiben sollten
Varun Jyothi

1
Das funktioniert bei mir nicht ... :( (Cache geleert)
Karol F

1
Stellen Sie außerdem sicher, dass der Wert upload_max_filesize Ihrer php.ini hoch genug ist. In Magento werden keine Fehler angezeigt, wenn dieser Wert zu niedrig ist. PDFs können im Allgemeinen größer sein als Bilder.
Anton Evers



0

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.


0

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.

Ändern Sie den Kerncode nicht

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.

Fügen Sie PDF als zulässigen Dateityp in Magento hinzu


0

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


0

Verwenden Sie diesen Code in di.xml und funktionieren einwandfrei

Anwendung / Zip-Anwendung / pdf

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.