Tenho um novo emprego, onde trabalho estritamente no Magento todos os dias agora. Eu não tenho experiência anterior com Magento, por isso tem sido um desafio para dizer o mínimo até agora!
Deixe-me explicar brevemente a extensão que estamos construindo.
Isso nos permitirá mostrar uma janela pop-up / modal. O conteúdo HTML do Modal será armazenado em
umStatic Block
PÁGINA DE ADMINISTRAÇÃO
Portanto, o painel do administrador consiste em uma nova guia em System/Confuration/
NEW TAB
O painel do administrador permite que você selecione em uma lista suspensa nessa NOVA PÁGINA o padrão Static Block
a ser usado para essas seções ...
HOME PAGE
ou HOME PAGE w/Items in Shopping Cart
ALL CATEGORY PAGES
ou ALL CATEGORY PAGES w/Items in Shopping Cart
ALL PRODUCTS PAGES
ou ALL PRODUCTS PAGES w/Items in Shopping Cart
ALL CMS PAGES
ou ALL CMS PAGES w/Items in Shopping Cart
SHOPPING CART PAGE
ou SHOPPING CART PAGE w/Items in Shopping Cart
SOBRECARGA PADRÃO
Em seguida, as páginas reais CMS , CATEGORY e PRODUCT permitem as mesmas configurações que a página do Painel do administrador, exceto que permitem definir STATIC BLOCK
uma por item e substituir a configuração padrão que tínhamos nas configurações de administrador acima .
Até agora, temos o lado do administrador da extensão concluído. Temos todas as guias de administração de cada seção ... produto, categoria, CMS e página de configuração.
O próximo passo será adicionar a mesma extensão e Static Block
inserir na página. Isso Static Block
será responsável por ... Mostrar o correto Static Block
em cada página com base nas configurações definidas nas áreas mencionadas acima .....
- Determinando a página em que estamos e o tipo de página (cms, produto, página inicial, categoria)
- Em seguida, ele terá que ler todas as configurações personalizadas definidas nas áreas mencionadas acima.
- Se for determinado que estamos em uma
Category
página, teremos que obter a categoria específica específica em que estamos. Por exemploCategory 3
. Veremos então se há uma configuração específica para essa categoria específica. Se estiver escritoEnabled
, procuraremos o queStatic Block
está salvo para essa categoria e o mostraremos em nossaStatic Block
página principal ! - Se a categoria específica acima estiver definida como
Disabled
a nossaModal Window
, procuraremos mais nas configurações globais do Modal e veremos se um Modal está ativado para todas as categorias. Se sim, veremos o queStatic Block
está definido para ser mostrado para todas as categorias. - Além de tudo isso, ele fará esse processo para cada um dos tipos de página principal (produto, categorias, cms, home, carrinho)
- Também teremos que verificar se o carrinho de compras está vazio ou não. SE não estiver vazio ... teremos que levar isso em consideração acima quando estivermos verificando o que
Static Block
mostrar para essa página, pois cada configuração permite que umStatic Block
seja definido para o carrinho vazio e 1 para o carrinho não vazio! (Eu sei que essa é uma tarefa enorme e difícil, mas temos o lado do administrador feito principalmente. Só precisamos fazer a parte que leva tudo isso em consideração na determinação de qualStatic Block
exibição em qual página específica.
Então, para me colocar na direção certa, tenho algumas perguntas menores ...
- Como posso dentro do meu
Static Block
código (a parte PHP) determinar em qual TIPO de PAGE estou. Como mencionei, preciso saber se estou em ... PÁGINA INICIAL , PÁGINA CMS , PÁGINA DE CATEGORIA , PÁGINA DE PRODUTO ou PÁGINA DE CARRINHO DE COMPRAS ? - Além do TIPO DE PÁGINA , preciso obter a página real. Portanto, se eu estiver na identificação do produto 1234 , preciso obter a configuração (bloco estático definido para essa página) para essa página específica.
Eu sei que este foi um post longo e possivelmente confuso. Se você chegou até aqui, obrigado por dedicar um tempo para ler isso =)
Se você puder ajudar com minha pergunta, cada pedacinho me aproximará do objetivo final
Abaixo está um fluxograma que eu fiz de como meu módulo precisará trabalhar para determinar qual bloco estático inserir na página
fonte
Mage_Widget
módulo, certo?Mage_Widget
? Eu preciso olhar para isso tambémRespostas:
Além do que o @benmarks respondeu :
Aqui está um pequeno código para verificar algumas das condições que você mencionou:
Para verificar se o carrinho está vazio ou não, use
Você também perguntou se pode verificar a página atual dentro de um bloco CMS.
Essa provavelmente não é uma boa abordagem (você teria que incluir blocos personalizados, o que anularia o propósito de usar blocos CMS na primeira página).
Em vez disso, é melhor verificar a página atual primeiro e depois escolher o bloco CMS a ser exibido com base nisso.
EDIT : corrigido
Mage::app()->getRequest()->getFullActionName()
para serMage::app()->getFrontController()->getAction()->getFullActionName()
como mencionado por Joseph nos comentários. Obrigado!fonte
Mage::app()->getRequest()->getFullActionName()
em um modelo de carrinho resulta em um erro fatal ou pelo menos ocorreu para mim no 1.7.0.2.$this->getAction()->getFullActionName()
funcionou perfeitamente!Muitas abordagens que você pode adotar. Eu recomendo adicionar seu bloco através do
<default>
identificador de atualização de layout, que o tornaria disponível em todas as páginas. No_prepareLayout()
método do seu bloco , você pode determinar o escopo obtendo o nome da ação completa atual do objeto request ($this->getRequest()->getFullActionName()
) e usando-o para determinar o contexto.Os produtos e categorias serão registrados no registro. Seu bloco também pode examinar os identificadores de atualização de layout, que incluirão identificadores de ID do produto ou de categoria.
fonte
Para detectar a página inicial, você precisa usar a sequência identificadora (por exemplo, "página inicial") para corresponder ao valor de configuração, em vez do ID numérico:
Aqui estão alguns outros:
Obrigado pela informação útil a todos!
fonte