Почему magento 2 создает директивы для медиаизображений, используя URL-адрес администратора?
например, когда я добавляю изображение на странице категории WYSIWYG, оно добавляет
<img src="{{media url="wysiwyg/image.jpg"}}" alt="" />
но потом magento разбирает его для внешнего интерфейса и вот так
<img src="https://domain.co.uk/admin/cms/wysiwyg/directive/___directive/e3ttZWRpYSB1cmw9Ind5c2l3eWcvQ29udmV5b3JfYmVsdHNfZmFzdF9kZWxpdmVyeS5qcGcifX0,/key/b67d0a8069ef28a8443e0bad6d912512704213d60e1d9021b1ec2b9dd34bf390/" alt="">
потому что его ссылка на администратора - единственный способ загрузить его в браузер, если вы вошли в систему с правами администратора. Это также создает проблему безопасности, поскольку раскрывает путь администратора на веб-интерфейсе.
Я посмотрел в vendor / magento / module-cms / Helper // Wysiwyg / images.php и похоже, что функция getImageHtmlDeclaration () генерирует это
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;
}
Я пытался использовать статические URL для мультимедиа, но все еще безрезультатно, поэтому единственное, что я могу обдумать, - это отредактировать эту функцию, чтобы использовать URL внешнего интерфейса вместо back / end / admin
любая помощь по этому вопросу будет очень ценится :)
источник
{{media url="wysiwyg/some-image.jpg"}}
формат, который мы привыкли ожидать в MagentoОтветы:
Это известная ошибка, которая все еще присутствует в CE 2.1.5.
Известное исправление заключается в добавлении
'add_directives' => true
кgetConfig
функцииvendor/magento/module-cms/Model/Wysiwyg/Config.php
.Лучший способ сделать это - написать перехватчик .
В вашем собственном
etc/di.xml
файле расширения Magento 2 :Vendor\Module\Plugin\WysiwygConfig.php
:Установить его
php bin/magento setup:upgrade
Важно: после установки вам необходимо повторно отредактировать описание соответствующих категорий и повторно загрузить изображения.
Идея этого расширения не моя, а этот парень . Он также собрал все это на github для скачивания .
Я сам проверил его на CE 2.1.4, и он работает нормально.
источник
Самое простое решение - обновить
getImageHtmlDeclaration()
функцию вvendor/magento/module-cms/Helper//Wysiwyg/images.php
Возможно, это не лучший подход, но он работает.
источник
У меня та же проблема с CE 1.9 И вот решение: идея состоит в том, чтобы попытаться изменить переменную $ html (вы можете использовать Di, Plugin или Patch packagist.org/packages )
Magento \ Cms \ Helper \ Wysiwyg \ Images.php line 180
$html = $this->_backendData->getUrl('cms/wysiwyg/directive', ['___directive' => $directive]);
заменить на
См. Github.com/PieterCappelle
источник
В файле etc / di.xml вашего собственного расширения Magento 2:
Производитель \ Модуль \ Plugin \ CatalogCheckIsUsingStaticUrlsAllowedObserver.php
Работаю на меня!
источник