Warum erstellt Magento 2 Direktiven für Medienbilder mithilfe der Admin-URL?
Zum Beispiel, wenn ich ein Bild auf der Kategorieseite WYSIWYG hinzufüge
<img src="{{media url="wysiwyg/image.jpg"}}" alt="" />
aber dann analysiert Magento es für Frontend und ist so
<img src="https://domain.co.uk/admin/cms/wysiwyg/directive/___directive/e3ttZWRpYSB1cmw9Ind5c2l3eWcvQ29udmV5b3JfYmVsdHNfZmFzdF9kZWxpdmVyeS5qcGcifX0,/key/b67d0a8069ef28a8443e0bad6d912512704213d60e1d9021b1ec2b9dd34bf390/" alt="">
Da die Verknüpfung mit dem Administrator erfolgt, wird der Browser nur geladen, wenn Sie beim Administrator angemeldet sind. Dies stellt auch ein Sicherheitsproblem dar, da der Administrationspfad im Frontend angegeben wird.
Ich habe in vendor / magento / module-cms / Helper // Wysiwyg / images.php gesucht und es sieht so aus, als ob die Funktion getImageHtmlDeclaration () dies erzeugt
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;
}
Ich habe versucht, statische URLs für Medien zu verwenden, aber immer noch keine Verwendung. Daher kann ich nur daran denken, diese Funktion so zu bearbeiten, dass Frontend-URLs anstelle von Backend / admin verwendet werden
Jede Hilfe hierzu wäre sehr dankbar :)
quelle
{{media url="wysiwyg/some-image.jpg"}}
Antworten:
Dies ist ein bekannter Fehler, der in CE 2.1.5 noch vorhanden ist.
Das bekannte Update ist, um
'add_directives' => true
diegetConfig
Funktion von hinzuzufügenvendor/magento/module-cms/Model/Wysiwyg/Config.php
.Der beste Weg, dies zu tun, besteht darin, einen Abfangjäger zu schreiben .
In der
etc/di.xml
Datei Ihrer benutzerdefinierten Magento 2-Erweiterung :Vendor\Module\Plugin\WysiwygConfig.php
:Es installieren
php bin/magento setup:upgrade
Wichtig: Nach der Installation müssen Sie Re-Editierung die betroffenen Kategoriebeschreibungen und erneuten Upload Bilder.
Die Idee zu dieser Fix-Erweiterung ist nicht meine, sondern dieser Typ . Er hat auch alles auf Github gepackt, damit Sie es herunterladen können .
Ich habe es selbst auf CE 2.1.4 getestet und es funktioniert einwandfrei.
quelle
Die einfachste Lösung besteht darin, die
getImageHtmlDeclaration()
Funktion in zu aktualisierenvendor/magento/module-cms/Helper//Wysiwyg/images.php
Dies ist möglicherweise nicht der beste Ansatz, aber er funktioniert.
quelle
Ich habe das gleiche Problem mit CE 1.9. Und hier ist die Lösung: Die Idee ist, die Variable $ html zu ändern (Sie können Di, Plugin oder Patch packagist.org/packages verwenden ).
Magento \ Cms \ Helper \ Wysiwyg \ Images.php Zeile 180
$html = $this->_backendData->getUrl('cms/wysiwyg/directive', ['___directive' => $directive]);
ersetzen
Siehe: github.com/PieterCappelle
quelle
In der etc / di.xml-Datei Ihrer benutzerdefinierten Magento 2-Erweiterung:
Vendor \ Module \ Plugin \ CatalogCheckIsUsingStaticUrlsAllowedObserver.php
Für mich arbeiten!
quelle