Magento2: Làm cách nào để bật pdf trên wysiwyg để tải tệp đính kèm lên sản phẩm?


8

Tôi có thể chỉnh sửa mã ở đâu để bật pdf hoặc làm cách nào tôi có thể làm điều đó trên Magento 2 để tải tệp đính kèm pdf lên sản phẩm?

Câu trả lời:


12

Tôi đã tạo một mô-đun đơn giản để cho phép các loại tệp bổ sung trong trình soạn thảo WYSIWYG. Mô-đun này có sẵn trên GitHub https://github.com/experius/Magento-2-Module-Experius-WysiwygDoads


Nice one.Works tốt vào ngày 2.1.10
vbak

@Ông. Lewis sẽ làm việc cho định dạng tệp .stl? và làm thế nào để cài đặt cái này trên magento 2? hướng dẫn nào?
phù du

Bạn có thể tìm thấy nó trong readme
Ông Lewis

Tôi không nhận được hướng dẫn cài đặt
Học viên

vẫn hoạt động vào ngày 2.3.2
Julime

4

tôi đã vấp phải một vấn đề tương tự và đã đưa ra một giải pháp vượt trội, chỉ yêu cầu truy cập ftp / sftp:

  • tải lên một biểu tượng pdf (ví dụ như biểu tượng pdf) vào một thư mục (ví dụ "pdf")
  • tải lên tất cả các tệp pdf của bạn qua ftp / sftp vào cùng một thư mục (dưới / [webroot] / pub / media / wysiwyg / pdf (nếu bạn đặt tên thư mục là "pdf"))
  • nếu bạn muốn liên kết đến pdf, hãy nhúng biểu tượng và đặt liên kết hướng đến pdf đang được đề cập xung quanh biểu tượng. đó là nó.

Ngoài ra: bạn phải kích hoạt pdf được hiển thị trong trình chỉnh sửa wysywig. tạo một mô-đun đơn giản với một di.xml có thêm "pdf" vào các phần mở rộng tệp được phép và trông như thế này:

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

không làm việc cho tôi
Sarfaraj Sipai

2

Bạn có thể làm điều đó bằng cách thêm "pdf" trong phần mở rộng được phép bên dưới vendor/magento/module-cms/etc/di.xmlnhư dưới đây:

<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
Hãy chắc chắn rằng bạn nên tạo một mô-đun và ghi đè lên di.xml ở đó
Varun Jyothi

1
Điều đó không hiệu quả với tôi ... :( (đã xóa bộ nhớ cache)
Karol F

1
Đồng thời đảm bảo rằng giá trị upload_max_filesize của php.ini đủ cao. Bạn sẽ thấy không có lỗi trong Magento nếu giá trị này quá thấp. PDF có thể có kích thước lớn hơn hình ảnh nói chung.
Anton Evers



0

để tạo mô-đun, bạn nên sử dụng như người tạo này [ 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>

Bạn nên tạo một số mô-đun cơ bản và trên di xml, bạn nên đặt mã này. Đối với tôi là làm việc.


0

Bạn không bao giờ nên sửa đổi mã lõi Magento vì khi chúng tôi nâng cấp mã của chúng tôi sẽ không nâng cấp với mã đó. Các tiện ích mở rộng dựa trên cùng một lớp sẽ không còn hoạt động và các bản vá sẽ không có kết quả mong muốn.

Không sửa đổi mã lõi

Ngoài ra ... nếu bạn muốn thêm pdf vào "Loại tệp cho phép" trong Magento, bạn có thể sử dụng tham chiếu này cung cấp hướng dẫn từng bước bằng cách thêm tệp cấu hình đơn giản bao gồm loại tệp cùng với loại mặc định VÀ mô-đun để bật / tắt tính năng này.

Thêm pdf dưới dạng Loại tệp được phép trong Magento


0

Tạo một di.xml trong một mô-đun tùy chỉnh và dán mã dưới đây vào di.xml. Điều này sẽ cho phép người dùng tải lên pdf trong trình soạn thảo WYSIWYG của quản trị viên.

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

Sau đó, ghi đè tệp Magento \ Cms \ Model \ Wysiwyg \ Images \ Storage và thêm mã bên dưới để tránh lỗi hiển thị sau khi tải lên hình ảnh.

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

Thêm mã điều kiện if để tránh thay đổi kích thước tệp cho tệp PDF. Dưới đây là chức năng mà chúng ta cần thêm mã ở trên.

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

Cảm ơn


0

Sử dụng mã này trong di.xml hoạt động tốt

ứng dụng / ứng dụng zip / pdf

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.