Positionieren Sie Block in Homepage CMS -Inhalt
-
16-10-2019 - |
Frage
Ich habe eine interessante Situation, in der ich auf einer CMS -Seite einige neue Blöcke in der definiere update_layout_xml
Abschnitt - Auf die Shortcode -Syntax muss aus dem CMS -Inhalt selbst verwiesen werden {{block ...}}
Ich weiß, dass es möglich ist, neue Blöcke zu definieren, die von einem CMS -Textbereich instanziiert werden können. Es ist jedoch möglich, einen vorhandenen Block zu verweisen, um die genaue Position zu definieren, die er eingefügt werden muss.
Verwendung update_layout_xml
erlaubt nur die Positionierung mit Verwendung before=
oder after=
- Während ich eine stärkere körnige Kontrolle benötige, um das Element innerhalb des content
blockieren sich. Wenn dies über a erfolgen würde phtml
Datei - es wäre nur ein Fall der Verwendung getChildHtml
- Aber es scheint kein Äquivalent für CMS zu geben.
Ich weiß, ich kann ausdehnen Mage_Widget_Model_Template_Filter
Und fügen Sie eine neue Funktion hinzu - aber gibt es dafür bereits eine Kernmethode?
Lösung
Ich erweiterte Mage_Widget_Model_Template_Filter
um diese Funktion hinzuzufügen und sie macht den Trick, aber ich habe mich gefragt, ob es eine gab einheimisch Weg, es zu tun.
public function getchildDirective($construction)
{
$layout = Mage::app()->getLayout();
$blockParameters = $this->_getIncludeParameters($construction[2]);
return $layout->getBlock('root')->getChildHtml($blockParameters['id']);
}
Andere Tipps
Abhängig von Ihren Aktionsmethoden sollten Sie der _construct -Methode Ihres Blocks Funktionen hinzufügen können (wie durch Ihren Blocktyp definiert)
Aber wenn Ihre Aktionsmethoden einfach eine Variable wie einstellen wie
<action method="setCategoryId"><category_id>17</category_id></action>
Anschließend können Sie Ihre Smiley -Syntax wie folgt hinzufügen:
{{block type="cms/block" block_id="your_block_id" category_id="17"}}
Ich weiß, dass Sie statische Blöcke in einen CMS -Inhalt mit so etwas aufnehmen können:
{{block type="cms/block" block_id="your_block_id"}}
Ich verstehe nicht, warum diese Methode nicht für benutzerdefinierte Blöcke funktioniert. Hast du es zumindest ausprobiert?
Es behebt es nicht, wenn sich der Shortcode in einer Variablen aus einem Modul befindet.
Beispiel: Ich habe ein Slider -Modul und wenn ich eingehe {{store direct_url="customer-service"}}
Als Link -Attribut wird es nicht ersetzt.