Pourquoi magento 2 crée-t-il des directives pour les images multimédias à l'aide de l'URL d'administration?
par exemple, lorsque j'ajoute une image sur la page de catégorie WYSIWYG, elle ajoute
<img src="{{media url="wysiwyg/image.jpg"}}" alt="" />
mais magento analyse le frontend et est comme ça
<img src="https://domain.co.uk/admin/cms/wysiwyg/directive/___directive/e3ttZWRpYSB1cmw9Ind5c2l3eWcvQ29udmV5b3JfYmVsdHNfZmFzdF9kZWxpdmVyeS5qcGcifX0,/key/b67d0a8069ef28a8443e0bad6d912512704213d60e1d9021b1ec2b9dd34bf390/" alt="">
car sa liaison à l'administrateur ne se chargera sur le navigateur que si vous êtes connecté à l'administrateur. Cela pose également un problème de sécurité car il révèle le chemin d'administration sur le frontend.
J'ai regardé dans vendor / magento / module-cms / Helper // Wysiwyg / images.php et on dirait que la fonction getImageHtmlDeclaration () génère ceci
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;
}
J'ai essayé d'utiliser des URL statiques pour les médias, mais toujours pas utile, donc le seul moyen de contourner ce problème est de modifier cette fonction pour utiliser l'URL frontend au lieu du backend / admin
toute aide à ce sujet serait très appréciée :)
la source
{{media url="wysiwyg/some-image.jpg"}}
format auquel nous nous attendions à MagentoRéponses:
Il s'agit d'un bug connu qui est toujours présent dans CE 2.1.5.
Le correctif connu consiste à ajouter
'add_directives' => true
à lagetConfig
fonction devendor/magento/module-cms/Model/Wysiwyg/Config.php
.La meilleure façon de le faire est d'écrire un intercepteur .
Dans le
etc/di.xml
fichier de votre extension Magento 2 personnalisée :Vendor\Module\Plugin\WysiwygConfig.php
:Installez-le
php bin/magento setup:upgrade
Important: après l'installation, vous devez modifier à nouveau les descriptions des catégories concernées et télécharger à nouveau les images.
L'idée de cette extension de correctif n'est pas la mienne mais ce mec . Il a également tout emballé sur github pour que vous puissiez le télécharger .
Je l'ai testé moi-même sur CE 2.1.4 et cela fonctionne très bien.
la source
La solution la plus simple consiste à mettre à jour la
getImageHtmlDeclaration()
fonction dansvendor/magento/module-cms/Helper//Wysiwyg/images.php
Ce n'est peut-être pas la meilleure approche, mais cela fonctionne.
la source
J'ai le même problème avec CE 1.9 Et voici la solution: l'idée est d'essayer de changer la variable $ html (vous pouvez utiliser Di, Plugin ou Patch packagist.org/packages )
Magento \ Cms \ Helper \ Wysiwyg \ Images.php ligne 180
$html = $this->_backendData->getUrl('cms/wysiwyg/directive', ['___directive' => $directive]);
remplacer pour
Référez: github.com/PieterCappelle
la source
Dans le fichier etc / di.xml de votre extension Magento 2 personnalisée:
Vendor \ Module \ Plugin \ CatalogCheckIsUsingStaticUrlsAllowedObserver.php
Travailler pour moi!
la source