Tengo un módulo de productos destacados que escribí que coloca un bloque personalizado en la página con una lista de productos que coinciden con los atributos que he definido en el bloque. Originalmente lo tenía funcionando agregando una línea {{block...}}
a la sección Contenido de la página CMS. Esto funcionó bien, pero no recibí el buscapersonas. Por lo tanto, me fijo que al eliminar la línea {{block...}}
de la sección de contenido XML y añadiendo a la sección XML Disposición de actualización de este modo:¿Cuál es la forma correcta de hacer actualizaciones de diseño con páginas CMS?
<reference name="content">
<block type="cms/block" name="product_list_top" />
<block type="vps_featured/list" name="vps_featured_list" template="catalog/product/sale_list.phtml">
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager"/>
</block>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
<action method="setAttributeName"><name>my_attribute</name></action>
</block>
</reference>
Esto también funcionaba muy bien. Entonces decidí, dado que hay tantas instancias de este bloque, que sería mucho más claro si añadiera un archivo XML a la carpeta de diseño de mi tema y colocara este código allí. Luego, en la sección Diseño de actualización, yo podría simplemente tener esto en su lugar:
<reference name="vps_featured_list">
<action method="setAttributeName"><name>other_attribute</name></action>
</reference>
tanto, he creado un archivo llamado vps_featured.xml
y agregó que esto es:
<layout version="0.1.0">
<default>
<reference name="content">
<block type="cms/block" name="product_list_top" />
<block type="vps_featured/list" name="vps_featured_list" template="catalog/product/sale_list.phtml">
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager" />
</block>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>
</reference>
</default>
</layout>
se hace referencia a este archivo XML actualización de diseño en el config.xml
para mi módulo destacado personalizado. Ingenuamente asumí que vps_featured.xml
solo se incorporaría al diseño de página cuando mi bloque de VPS Destacado estuviera en la página, lo que solo ocurriría en estas pocas instancias en páginas especiales de CMS. Aparentemente, ese no es el caso. Esto rompió cada otra página, supongo porque estaba anulando el identificador predeterminado.
Así que esto me lleva a la pregunta n. ° 1: ¿Cuándo se incluyen los archivos xml de diseño en el diseño de la página? ¿Se utilizan para TODAS las páginas, independientemente de si el módulo que hace referencia a ellas se utiliza o no?
Luego decidí intentar agregar un nuevo identificador de diseño al que pudiera hacer referencia cuando quisiera en mis páginas de CMS. Modifiqué mi archivo XML de diseño para que la parte principal esté dentro de las etiquetas <vps_featured_list>
en lugar de las etiquetas <default>
. Esto hizo que las otras páginas cobraran vida, pero, por supuesto, mis páginas CMS ya no funcionaban porque ese control de actualización de diseño no se usa en esas páginas. Traté de agregar <update handle="vps_featured_list" />
a la sección XML de actualización de diseño de la página de CMS, pero no funcionó (no esperaba).
Así que esto me lleva a la pregunta # 2: ¿Cuál es la forma correcta de lograr esto?
Esto no suena como debería ser tan difícil, pero claramente me falta algo. He leído todo lo que puedo encontrar en diseños, pero siempre son ejemplos simples, como "agregar esto a CADA página de producto". No quiero que se agregue algo a TODAS las páginas de cms ... solo unas pocas. ¿Estoy atascado usando la sección de Layout Update XML para las páginas de CMS en cuestión? Siento que tiene que haber una manera más limpia.
Gracias,
Brian
Se actualizó para corregir la información errónea acerca de las etiquetas de actualización que trabajan en páginas CMS. –
Muchas gracias @ alan-storm por la respuesta increíblemente detallada. De hecho, encontré tu libro reciente en mi búsqueda de una respuesta a esto y es probable que tome una copia. Curiosamente, había intentado exactamente lo que sugirió por primera vez, que, por supuesto, no funcionó. Voy a ver sus otras sugerencias pronto. Mientras tanto, el XML de actualización parece estar funcionando bien. Sin duda, me encantaría actualizar los controladores para las páginas de CMS ... – BrianVPS
GRR !! Agregué más pero tardé demasiado y rebasé el límite de edición de 5 minutos. ¡Me estoy cansando de todas estas malditas reglas! ¡Solo quiero ser parte de la comunidad! Deja de hacerme pasar por tanta burocracia !! – BrianVPS