Ä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.

Oscar Azpeitia
quelle

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;
Rakesh Jesadiya
quelle
rakeshjesadiya.com/… alle Details
Rakesh Jesadiya
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.

Thao Pham
quelle
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);
Jayesh Parmar
quelle
1
Dies ist nicht für Magento 2
Blueblazer172