Magento2:wysiwygでPDFを有効にして製品に添付ファイルをアップロードするにはどうすればよいですか?


9

PDFを有効にするためにコードをどこで編集できますか?または製品にPDF添付ファイルをアップロードするためにMagento 2でそれをどのように行うことができますか?

回答:


12

WYSIWYGエディターで追加のファイルタイプを許可する単純なモジュールを作成しました。このモジュールはGitHub https://github.com/experius/Magento-2-Module-Experius-WysiwygDownloadsから入手できます


いいですね。2.1.10で問題なく動作します
vbak

@氏。ルイスは.stlファイル形式で動作しますか?そして、これをmagento 2にインストールする方法は?マニュアル?
エフェメラル

あなたはそれをreadmeで見つけることができます
ルイス氏

インストールマニュアルを入手できませんでした
学習者

引き続き2.3.2で動作します
Julime

4

私は同じ問題に出くわしました、そしてftp / sftp-accessだけを必要とするすぐに使える解決策を思いつきました:

  • PDFアイコン(などadobe pdfアイコン)をフォルダ(たとえば、「pdf」という名前)にアップロードします。
  • すべてのPDFファイルをftp / sftpを介して同じフォルダーにアップロードします(/ [webroot] / pub / media / wysiwyg / pdf(フォルダーに「pdf」という名前を付けた場合))
  • PDFにリンクする場合は、アイコンを埋め込み、問題のPDFへのリンクをアイコンの周りに配置します。それでおしまい。

さらに:PDFがwysywigエディターに表示されるようにする必要があります。許可されたファイル拡張子に「pdf」を追加するdi.xmlを持つ単純なモジュールを作成し、次のようにします。

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

私のために働いていません。
Sarfaraj Sipai

3

vendor/magento/module-cms/etc/di.xml以下のように許可された拡張機能セクションに「pdf」を追加することでそれを行うことができます:

<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
モジュールを作成し、そこでdi.xmlをオーバーライドする必要があることを確認してください
Varun Jyothi

1
それは私のために機能していません... :((キャッシュがクリアされました)
Karol F

1
また、php.iniのupload_max_filesize値が十分に大きいことを確認してください。この値が低すぎる場合、Magentoでエラーは表示されません。PDFは一般的に画像よりもサイズが大きくなる可能性があります。
アントンエバーズ2017年



0

モジュールを作成するには、この作成者のように使用する必要があります[ 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>

基本的なモジュールをいくつか作成し、di xmlにこのコードを配置する必要があります。私にとっては働いています。


0

Magentoのコアコードは変更しないでください。コードをアップグレードすると、コードも一緒にアップグレードされません。同じクラスに依存する拡張機能は機能しなくなり、パッチは期待どおりの結果になりません。

コアコードを変更しない

また、Magentoの「許可されるファイルの種類」にPDFを追加する場合は、この参照を使用して、デフォルトの種類とモジュールとともにファイルの種類を含む簡単な構成ファイルを追加することにより、ステップバイステップの手順を提供できます。この機能をオン/オフにします。

Magentoの許容ファイルタイプとしてPDFを追加


0

カスタムモジュールでdi.xmlを作成し、以下のコードをdi.xmlに貼り付けます。これにより、ユーザーは管理者のWYSIWYGエディターでPDFをアップロードできます。

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

その後、Magento \ Cms \ Model \ Wysiwyg \ Images \ Storageファイルをオーバーライドし、以下のコードを追加して、画像のアップロード後に表示されるエラーを回避します。

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

PDFファイルのサイズ変更ファイルを回避するには、if条件コードを追加します。以下は、上記のコードを追加する必要がある関数です。

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

ありがとう


0

このコードをdi.xmlで使用すると正常に動作します

application / zip application / pdf

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.