Por que o magento 2 está criando diretivas para imagens de mídia usando o URL do administrador?
por exemplo, quando adiciono uma imagem na página de categoria WYSIWYG, ela adiciona
<img src="{{media url="wysiwyg/image.jpg"}}" alt="" />
mas o magento analisa para frontend e fica assim
<img src="https://domain.co.uk/admin/cms/wysiwyg/directive/___directive/e3ttZWRpYSB1cmw9Ind5c2l3eWcvQ29udmV5b3JfYmVsdHNfZmFzdF9kZWxpdmVyeS5qcGcifX0,/key/b67d0a8069ef28a8443e0bad6d912512704213d60e1d9021b1ec2b9dd34bf390/" alt="">
porque o link para o administrador, a única maneira de carregar no navegador, é se você estiver conectado ao administrador. Isso também apresenta um problema de segurança, pois está divulgando o caminho do administrador no frontend.
Eu olhei em vendor / magento / module-cms / Helper // Wysiwyg / images.php e se parece com a função getImageHtmlDeclaration () gera isso
public function getImageHtmlDeclaration($filename, $renderAsTag = false)
{
$fileurl = $this->getCurrentUrl() . $filename;
$mediaUrl = $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
$mediaPath = str_replace($mediaUrl, '', $fileurl);
$directive = sprintf('{{media url="%s"}}', $mediaPath);
if ($renderAsTag) {
$html = sprintf('<img src="%s" alt="" />', $this->isUsingStaticUrlsAllowed() ? $fileurl : $directive);
} else {
if ($this->isUsingStaticUrlsAllowed()) {
$html = $fileurl; // $mediaPath;
} else {
$directive = $this->urlEncoder->encode($directive);
$html = $this->_backendData->getUrl('cms/wysiwyg/directive', ['___directive' => $directive]);
}
}
return $html;
}
Tentei usar URLs estáticos para mídia, mas ainda não adianta, portanto, a única solução possível é editar essa função para usar URL de front-end em vez de back-end / admin
qualquer ajuda sobre isso seria muito apreciada :)
fonte
{{media url="wysiwyg/some-image.jpg"}}
formato que temos vindo a esperar em MagentoRespostas:
Este é um bug conhecido que ainda está presente no CE 2.1.5.
A correção conhecida é adicionar
'add_directives' => true
àgetConfig
função devendor/magento/module-cms/Model/Wysiwyg/Config.php
.A melhor maneira de fazer isso é escrever um interceptador .
No
etc/di.xml
arquivo da sua extensão Magento 2 personalizada :Vendor\Module\Plugin\WysiwygConfig.php
:Instale-o
php bin/magento setup:upgrade
Importante: após a instalação, é necessário editar novamente as descrições de categorias afetadas e fazer upload de imagens novamente.
A idéia dessa extensão de correção não é minha, mas esse cara . Ele também empacotou tudo no github para você baixar .
Eu mesmo testei no CE 2.1.4 e funciona bem.
fonte
A solução mais simples é atualizar a
getImageHtmlDeclaration()
função novendor/magento/module-cms/Helper//Wysiwyg/images.php
Esta pode não ser a melhor abordagem, mas funciona.
fonte
Eu tive o mesmo problema com o CE 1.9 E aqui está a solução: a idéia é tentar alterar a variável $ html (você pode usar Di, Plugin ou Patch packagist.org/packages )
Magento \ Cms \ Helper \ Wysiwyg \ Images.php linha 180
$html = $this->_backendData->getUrl('cms/wysiwyg/directive', ['___directive' => $directive]);
substitua para
Consulte: github.com/PieterCappelle
fonte
No arquivo etc / di.xml da extensão personalizada do Magento 2:
Fornecedor \ Módulo \ Plugin \ CatalogCheckIsUsingStaticUrlsAllowedObserver.php
Trabalhando para mim!
fonte