template magento static widget rendering block

template - Renderización de widgets de Magento en contenido no perteneciente a CMS



layout magento 2 (2)

Esto debería funcionar

<?php $filter = new Mage_Widget_Model_Template_Filter(); $_widget = $filter->filter(''{{widget type="cms/widget_page_link" template="cms/widget/link/link_block.phtml" page_id="2"}}''); echo $_widget; ?>

¿Hay una forma simple de enganchar en la función de renderizado de widgets de Magento en algo que no sea el bloque o la página de CMS?

Tengo una extensión de información sobre herramientas para mostrar información sobre herramientas en opciones personalizadas. Habrá muchos productos, todos con las mismas opciones y todos que necesitan el mismo texto de información sobre herramientas. Si bien la extensión de información sobre herramientas que utilizamos proporciona un medio para declarar fragmentos que luego pueden usarse en productos, los fragmentos se agregan a productos individuales en el momento de la configuración en lugar de hacer referencia a la instancia de fragmento único. Por lo tanto, si el contenido de la información sobre herramientas necesita cambiar en todos los productos, debemos editar el fragmento y luego volver a aplicar el fragmento modificado a todos los productos.

Sería preferible poder referir el fragmento directamente en lugar de solo usarlo en la configuración del producto, pero no es así como funciona. Así que una alternativa sería incluir un bloque estático en la descripción de la información sobre herramientas y hacer referencia a la instancia de descripción única con la función de widgets ya provista de nuestro tema que funciona en páginas CMS, por ejemplo {{widget type = "cms / widget_block" template = "cms / widget /static_block/default.phtml "block_id =" xx "}}, donde xx es el bloque creado para esta información sobre herramientas.

Esto necesita la descripción HTML de la herramienta sintáctica analizada a través de lo que sea en Magento que analiza el contenido HTML y procesa las directivas de widgets que contiene.

Intenté lo siguiente, donde $ tipstext es el HTML de información sobre herramientas que contiene la directiva de widgets, pero no voy. ¡No pensé que sería así de simple!

Mage_Cms_Model_Template_Filter::filter($tipstext);

Anyhone tiene alguna idea de si / cómo esto podría lograrse fácilmente?


La clase Mage_Cms_Model_Template_Filter no tiene un método widgetDirective , por lo que no sabe cómo analizar {{widget}} códigos cortos. Pruebe en cambio Mage_Widget_Model_Template_Filter :

Mage::getSingleton(''widget/template_filter'')->filter($text);