Tengo un controlador personalizado al que se accede en la ruta /custommodule/customer/info
que está cargando la 2columns-left.phtml
plantilla en el root
nodo 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.phtml
plantilla, pero lo está haciendo en lo que parecen ser todas las páginas en lugar de solo la página destinada en mi reference
nodo.
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_out
controlador de diseño?
- editar - Para ser claros, este es en realidad un módulo de terceros.
customer_logged_in/out
mangos 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
return
en 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_out
controlador de diseño en particular si elcustommodule_customer_info
controlador de diseño también está presente.fuente