Ändern Sie {{media url = "wysiwyg / image.jpg"}} im Frontend im benutzerdefinierten Modul


7

Ich baue ein benutzerdefiniertes Modul, ein sehr einfaches Blog. Ich habe schon alles funktioniert. Das letzte, was ich hinzugefügt habe, war die WYSIWYG-Funktion zum Hochladen von Bildern.

Im Admin funktioniert alles einwandfrei. Aber vorne sehe ich den Rohquellcode und die <img>Tags sind gefüllt mit:{{media url="wysiwyg/some_image.jpg"}}

Wenn ich zu navigiere /pub/media/wysiwyg/some_image.jpg, existiert das JPG. Aber ich kann nicht herausfinden, wie ich dies über einen Helfer oder eine Funktion ändern kann, um es richtig in das Frontend zu bringen.

Antworten:


16

Sie können es mit filtern filter() function,

$content = 'This is test demo imgage, {{media url="wysiwyg/some_image.jpg"}}';
$om = \Magento\Framework\App\ObjectManager::getInstance();
$filterManager = $om->get('Magento\Cms\Model\Template\FilterProvider')->getPageFilter()->filter($content);
echo $filterManager;


4

Sie müssen diese Klasse im Konstruktor von Block deklarieren:

Magento\Cms\Model\Template\FilterProvider $filterProvider

$content = '{{media url="wysiwyg/some_image.jpg"}}';
$contentGenerating = $this->_filterProvider->getPageFilter()->filter($content);
echo $contentGenerating; //Generate HTML <img src="http://baseUrl/pub/media/wysiwyg/some_image.jpg"/>

Ich hoffe es hilft dir.


1

Sie müssen einen Prozessor hinzufügen, damit WYSIWYG-Inhalte im Frontend angezeigt werden. Es verarbeitet alle im Editor verwendeten Variablen und zeigt sie mit ihren Werten an. Wenn Sie den Inhalt in einer Variablen haben.

$content = $myContent;
echo Mage::helper('cms')->getPageTemplateProcessor()->filter($content);

1
Dies ist nicht für Magento 2
Blueblazer172
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.