¿Por qué está magento 2 creando directivas para imágenes de medios usando la URL del administrador?
por ejemplo, cuando agrego una imagen en la página de categoría WYSIWYG, agrega
<img src="{{media url="wysiwyg/image.jpg"}}" alt="" />
pero luego magento lo analiza para frontend y es así
<img src="https://domain.co.uk/admin/cms/wysiwyg/directive/___directive/e3ttZWRpYSB1cmw9Ind5c2l3eWcvQ29udmV5b3JfYmVsdHNfZmFzdF9kZWxpdmVyeS5qcGcifX0,/key/b67d0a8069ef28a8443e0bad6d912512704213d60e1d9021b1ec2b9dd34bf390/" alt="">
porque se vincula al administrador, la única forma en que se cargará en el navegador es si ha iniciado sesión en el administrador. Esto también plantea un problema de seguridad porque está revelando la ruta del administrador en la interfaz.
Miré en vendor / magento / module-cms / Helper // Wysiwyg / images.php y parece que la función getImageHtmlDeclaration () genera esto
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;
}
Traté de usar URL estáticas para los medios, pero todavía no lo uso, así que lo único que puedo pensar es editar esta función para usar la URL de frontend en lugar de backend / admin
cualquier ayuda en esto sería muy apreciada :)
fuente
{{media url="wysiwyg/some-image.jpg"}}
formato que esperamos en MagentoRespuestas:
Este es un error conocido que todavía está presente en CE 2.1.5.
La solución conocida es agregar
'add_directives' => true
a lagetConfig
función devendor/magento/module-cms/Model/Wysiwyg/Config.php
.La mejor manera de hacerlo es escribir un interceptor .
En el
etc/di.xml
archivo de la extensión Magento 2 personalizada :Vendor\Module\Plugin\WysiwygConfig.php
:Instalarlo
php bin/magento setup:upgrade
Importante: después de la instalación, debe volver a editar las descripciones de las categorías afectadas y volver a cargar las imágenes.
La idea de esta extensión de reparación no es mía sino de este tipo . También lo empaquetó todo en github para que lo descargues .
Lo probé yo mismo en CE 2.1.4 y funciona bien.
fuente
La solución más simple es actualizar la
getImageHtmlDeclaration()
función envendor/magento/module-cms/Helper//Wysiwyg/images.php
Puede que este no sea el mejor enfoque, pero funciona.
fuente
Tengo el mismo problema con CE 1.9 Y aquí está la solución: la idea es tratar de cambiar la variable $ html (puede usar Di, Plugin o Patch packagist.org/packages )
Magento \ Cms \ Helper \ Wysiwyg \ Images.php línea 180
$html = $this->_backendData->getUrl('cms/wysiwyg/directive', ['___directive' => $directive]);
reemplazar a
Consulte: github.com/PieterCappelle
fuente
En el archivo etc / di.xml de la extensión Magento 2 personalizada:
Vendor \ Module \ Plugin \ CatalogCheckIsUsingStaticUrlsAllowedObserver.php
Trabajando para mi!
fuente