Câu trả lời:
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
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:
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>
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.xml
như 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>
Tôi đã có Magento 2.1.x và tôi phải sử dụng một mô-đun tùy chỉnh để ghi đè cài đặt trong cms mô-đun và cho phép tải lên pdf. Dưới đây như thế nào bạn nhận được nó thực hiện .
Tôi tìm thấy giải pháp này, bạn có thể tải lên bất kỳ loại tệp nào lên Trang sản phẩm.
Xem https://www.mageplaza.com/blog/how-upload-product-attachments-magento-2.html
để 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.
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.
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.
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