Posición en el bloque de contenido Página de CMS
-
16-10-2019 - |
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
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