Pregunta

Tengo una situación interesante, donde en una página de la CMS, estoy definiendo algunos nuevos bloques en la sección update_layout_xml - que necesitan ser referenciado desde dentro del propio contenido de CMS usando la sintaxis de código corto {{block ...}}

Sé que es posible definir nuevos bloques para crear una instancia de un área de texto CMS -. Pero ¿es posible hacer referencia a un bloque existente para definir la posición exacta que necesita insertarse

Uso update_layout_xml sólo permite el posicionamiento utilizando before= o after= - mientras que necesito un control más granular para el posicionamiento del elemento dentro del propio bloque content. Si esto llegara a ser hecho a través de un archivo phtml - que sólo sería un caso de uso de getChildHtml -., Pero no parece ser un equivalente para CMS

Sé que puedo extender Mage_Widget_Model_Template_Filter y añadir una nueva función - pero ¿hay ya un método básico para hacer esto

?
¿Fue útil?

Solución

Me extendió Mage_Widget_Model_Template_Filter añadir esta función y lo hace el truco, pero me preguntaba si había un forma nativa para hacerlo.

public function getchildDirective($construction)
{
    $layout = Mage::app()->getLayout();
    $blockParameters = $this->_getIncludeParameters($construction[2]);

    return $layout->getBlock('root')->getChildHtml($blockParameters['id']);

}

Otros consejos

En función de sus métodos de acción, que debe ser capaz de añadir funcionalidad al método _construct de su bloque (como se define por el tipo de bloque)

Pero si sus métodos de acción son simplemente instalando alguna variable como

<action method="setCategoryId"><category_id>17</category_id></action>

A continuación, se puede añadir esos parametros a su sintaxis sonriente como esto:

{{block type="cms/block" block_id="your_block_id" category_id="17"}}

Sé que puede incluir bloques estáticos en un contenido CMS con algo como esto:

{{block type="cms/block" block_id="your_block_id"}}

No veo por qué este método no funcionaría para bloques personalizados. ¿Usted ha intentado al menos?

No solucionarlo cuando el código corto está en una variable de un módulo.

Ejemplo: Tengo un módulo de control deslizante, y cuando entro {{store direct_url="customer-service"}} como el atributo de enlace, que no consigue sustituir

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top