Eu tenho um controlador personalizado acessado no caminho /custommodule/customer/info
que está carregando o 2columns-left.phtml
modelo no root
nó da seguinte maneira:
<custommodule_customer_info>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
</custommodule_customer_info>
O que eu gostaria de fazer é atualizar o modelo raiz para clientes que não estão conectados, 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>
Entendo que não posso segmentar várias alças de layout dessa maneira, mas a intenção deve ser clara; atualize o modelo raiz para esse identificador de layout enquanto os clientes não estiverem conectados.
Eu pensei que poderia direcionar o identificador do meu controlador com o seguinte:
<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>
Na verdade, isso atualiza o modelo raiz com o 1column.phtml
modelo, mas é o que parece ser todas as páginas, em vez de apenas a página direcionada no meu reference
nó.
Eu tentei várias permutações dessa atualização de layout, mas nenhuma parece funcionar. Como posso segmentar esse identificador de layout enquanto usa o customer_logged_out
identificador de layout?
- edit - Para ficar claro, este é realmente um módulo de terceiros.
customer_logged_in/out
alças podem ser muito poderosas, mas são limitadas por causa dessa limitação.Alan Storm respondeu algo semelhante a este:
/programming//a/5601579/1157493
Você pode usar um auxiliar para fazer sua lógica de verificar se o costume está conectado.
Ele chamará
Mage::helper('mymodule/myhelper')->switchTemplateIf();
esse auxiliar, você pode decidir mudar o modelo ou apenas mantê-lo assim.Eu acredito que define o modelo para o que você
return
nessa função.Seria algo como isto:
Não testado
fonte
Recentemente, eu precisava desse tipo de funcionalidade e estava ficando difícil adicionar mais e mais identificadores de layout para todas as combinações diferentes de identificadores existentes, então criei uma extensão magento para adicionar a capacidade de direcionar vários identificadores de layout diretamente do xml de layout.
Aqui está o link para a extensão - https://github.com/mridul89/MultipleHandles.git
Você usaria assim -
Isso dirá ao magento para usar apenas esse
customer_logged_out
identificador de layout específico se ocustommodule_customer_info
identificador de layout também estiver presente.fonte