Magento2: Como habilitar o pdf no wysiwyg para enviar anexos aos produtos?

9

Onde posso editar o código para ativar os PDFs ou como fazê-lo no Magento 2 para fazer upload de anexos em PDF aos produtos?

navya
fonte

Respostas:

12

Eu criei um módulo simples para permitir tipos de arquivos adicionais no editor WYSIWYG. Este módulo está disponível no GitHub https://github.com/experius/Magento-2-Module-Experius-WysiwygDownloads

Sr. Lewis
fonte
Bem agradável one.Works em 2.1.10
VBAK
@Senhor. Lewis funcionará no formato de arquivo .stl? e como instalar isso no magento 2? algum manual?
efêmero
Você pode encontrá-lo no leia
Sr. Lewis
Eu não recebi o manual de instalação
Aprendiz
ainda funciona em 2.3.2
Julime 12/11/19
4

Eu me deparei com o mesmo problema e encontrei uma solução pronta para uso, que requer apenas acesso ftp / sftp:

  • faça upload de um ícone de pdf (algo como ícone do adobe pdf) em uma pasta (chamada "pdf", por exemplo)
  • faça upload de todos os seus arquivos pdf via ftp / sftp na mesma pasta (em / [webroot] / pub / media / wysiwyg / pdf (se você tiver chamado a pasta "pdf"))
  • se você deseja vincular a um pdf, incorpore o ícone e coloque um link que direcione para o pdf em questão ao redor do ícone. é isso aí.

Além disso: você precisa habilitar o pdf para ser exibido no editor wysywig. crie um módulo simples com um di.xml que adicione "pdf" às extensões de arquivo permitidas e tenha a seguinte aparência:

<?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>
EarlBromStyle
fonte
não está trabalhando para mim.
Sarfaraj Sipai
3

Você pode fazer isso adicionando "pdf" na seção de extensão permitida, vendor/magento/module-cms/etc/di.xmlcomo abaixo:

<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>
Varun Jyothi
fonte
11
Certifique-se que você deve criar um módulo e substituir o di.xml lá
Varun Jyothi
11
Isso não está funcionando para mim ... :( (cache limpo) #
Karol F
11
Certifique-se também de que o valor upload_max_filesize do seu php.ini seja alto o suficiente. Você não verá erros no Magento se esse valor for muito baixo. Os PDFs podem ter um tamanho maior do que as imagens em geral.
Anton Evers
2

Eu tenho o Magento 2.1.xe tive que usar um módulo personalizado para substituir as configurações no módulo cms e permitir o upload de pdf. Aqui, como você faz isso .

medina
fonte
0

para criar o módulo, você deve usar como este criadores [ 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>

Você deve criar algum módulo básico e no di xml você deve colocar este código. Para mim está funcionando.

Artashes Baghdasaryan
fonte
0

Você nunca deve modificar o código principal do Magento porque, quando atualizarmos, nosso código não será atualizado com ele. Extensões que dependem da mesma classe não funcionarão mais e os patches não terão o resultado desejado.

Não modifique o código principal

Além disso ... se você deseja adicionar pdf a "Tipos de arquivos permitidos" no Magento, pode usar esta referência que fornece instruções passo a passo adicionando um arquivo de configuração simples que inclui o tipo de arquivo junto com os tipos padrão E um módulo para ativar / desativar esse recurso.

Adicionar pdf como tipo de arquivo permitido no Magento

Tony
fonte
0

Crie um di.xml em um módulo personalizado e cole o código abaixo no di.xml. Isso permitirá que o usuário faça o upload do pdf no editor admin WYSIWYG.

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

Depois disso, substitua o arquivo Magento \ Cms \ Model \ Wysiwyg \ Images \ Storage e adicione o código abaixo para evitar o erro que aparece após o upload da imagem.

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

Adicione o código de condição if para evitar o redimensionamento de arquivos PDF. Abaixo está a função em que precisamos adicionar o código acima.

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

obrigado

Rejoe
fonte
0

Use esse código no di.xml funcionando bem

aplicação / aplicação zip / pdf

sureshc
fonte