Tengo un controlador personalizado al que se accede en la ruta /custommodule/customer/infoque está cargando la 2columns-left.phtmlplantilla en el rootnodo de la siguiente manera:
<custommodule_customer_info>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
</custommodule_customer_info>
Lo que me gustaría hacer es actualizar la plantilla raíz para los clientes que no han iniciado sesión, algo como:
<customer_logged_out>
<custommodule_customer_info>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</custommodule_customer_info>
</customer_logged_out>
Entiendo que no puedo apuntar a varios controladores de diseño de esta manera, pero la intención debe ser clara; actualice la plantilla raíz para este controlador de diseño mientras los clientes no hayan iniciado sesión.
Pensé que podría apuntar al controlador de mi controlador con lo siguiente:
<customer_logged_out>
<reference name="custommodule_customer_info">
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</reference>
</customer_logged_out>
De hecho, esto actualiza la plantilla raíz con la 1column.phtmlplantilla, pero lo está haciendo en lo que parecen ser todas las páginas en lugar de solo la página destinada en mi referencenodo.
He intentado varias permutaciones de esta actualización de diseño, pero ninguna parece funcionar. ¿Cómo puedo apuntar a este controlador de diseño mientras al mismo tiempo uso el customer_logged_outcontrolador de diseño?
- editar - Para ser claros, este es en realidad un módulo de terceros.

customer_logged_in/outmangos podrían ser tan poderosos, pero se les da miedo debido a esta limitación.Alan Storm ha respondido algo similar a esto:
/programming//a/5601579/1157493
Puede usar un ayudante para hacer su lógica de verificar si la costumbre está conectada.
Se llamará
Mage::helper('mymodule/myhelper')->switchTemplateIf();En ese ayudante puede decidir cambiar la plantilla o simplemente mantenerlo así.Creo que establece la plantilla a lo que sea
returnen esa función.Se vería algo así:
No probado
fuente
Recientemente necesitaba este tipo de funcionalidad y me resultaba difícil agregar más y más identificadores de diseño para todas las diferentes combinaciones de identificadores de diseño existentes, así que creé una extensión magento para agregar la capacidad de apuntar a múltiples identificadores de diseño directamente desde el xml de diseño.
Aquí está el enlace a la extensión: https://github.com/mridul89/MultipleHandles.git
Lo usarías así:
Esto le indicará a magento que solo use este
customer_logged_outcontrolador de diseño en particular si elcustommodule_customer_infocontrolador de diseño también está presente.fuente