Pergunta

Então, aqui está a situação.Eu preciso criar um core/template bloquear programaticamente, se houver CMS Block(Static Block) está presente na estrutura do layout.Usarei este modelo para adicionar algum conteúdo dinamicamente.

Se houver algum observador para blocos estáticos, posso usá-lo.Outra opção seria, eu posso conseguir o mesmo através de layouts, se houver um identificador de layout específico de bloco estático (assim como cms_page alça de layout).

Mas ainda não consegui encontrar nenhum observador para blocos estáticos.Então não posso ir com observador.Também procuro qualquer identificador de layout específico de bloco estático.Essa busca também me deixou desesperado.Não consegui encontrar um.Portanto a atualização do layout também não é possível.

Portanto, parece que a única maneira de conseguir isso é observar quaisquer eventos gerais (pode ser controller_action_layout_generate_blocks_after).Mas eu sinto que é muito ruim..

Então o que devo fazer agora?Qual seria o melhor método para fazer isso?Posso precisar criar um ouvinte de evento personalizado para blocos estáticos (não sei se é possível!!)?Compartilhe seus pensamentos.

Observação : Estou criando uma extensão.Quero que fique o mais limpo possível.:)

Foi útil?

Solução 2

Parece que não há outra maneira de fazer isso.Então eu ouvi o evento geral controller_action_layout_generate_blocks_after .Lá eu criei um novo bloco se o bloco cms estiver presente.

Outras dicas

Talvez você possa usar um helper no XML e verificar se há uma condição dentro dele, fazendo uma condicional dentro do XML e depois agir de acordo.Pode ser melhor do que observar cada carga de bloco com um observador.

Aqui está uma resposta para fazer a abordagem XML.

<action method="addLink" translate="label title" module="catalog" ifconfig="catalog/seo/site_map">
    <label>Site Map</label>
    <url helper="catalog/map/getCategoryUrl" />
    <title>Site Map</title>
</action>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top