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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top