Quero fazer algumas coisas e sou novo e muito, muito longe de ser proficiente em Magento; o que estou pedindo é a melhor e mais concisa maneira de fazer o seguinte:
Gostaria de editar o conteúdo da minha página inicial - e provavelmente de todas as outras páginas do CMS, à medida que me aprofundar neste projeto - no meu editor de texto e não no painel de administração WYSIWYG. Acho que eu teria um modelo como a
home-content.phtml
minha marcação para o meu carrossel e tudo o mais que eu acabasse colocando na minha página inicial. Pareceu-me a maneira mais lógica de fazer isso é anexar minhahome-content.phtml
aogetChildHtml('content')
método no painel Admin -> CMS -> Páginas -> Página Inicial -> guia 'Design' -> xml layout Atualização com um código como este:<reference name="content"> <block type="core/template" name="home-content" as="home-content" template="home-content.phtml" /> </reference>
No entanto, isso foi confuso com a próxima coisa que eu queria fazer ...
Na minha opinião, a estrutura HTML padrão do Magento é terrivelmente inchada, com muitos aninhados
div
( wrapper -> página -> container principal col1-layout -> main -> col-main apenas para acessar o conteúdo de uma página) . Isso torna o estilo com Sass um pesadelo para mim, com todos os estilos dessas classes divididos em 5 partes parciais diferentes. Portanto, estou limpando a estrutura padrão para corresponder aos meus próprios princípios de design. Parte disso significa remover elementos vazios, como os infames<div class="std"> </div>
. A maneira mais eficaz de se livrar disso (como não planejo usar o painel de administração para o conteúdo) é usando<remove name="cms.wrapper">
o XML de atualização do layout inicial do CMS. O problema é que isso remove tudo o que adiciono com o método acima (reference name="content"
).
Basicamente: como posso adicionar conteúdo à minha Home Page com .phtml
e remover o <div class="std"> </div>
sem conflito? Não entendo como a funcionalidade do admin -> CMS -> atualização de layout XML difere da funcionalidade de layout.xml, ou por que devo usar um sobre o outro (como, por exemplo, não posso <cms index-index>
fazer a mesma coisa?) .
Agradecemos antecipadamente a todos.
fonte
.std
adiciona estilos de lista onde eles não são desejados. Previsivelmente com o Magento, é um procedimento demorado a resolver.Respostas:
Vamos dividir seu problema em três seções e analisá-lo.
1. Você precisa adicionar um arquivo de modelo à sua página do CMS
O método que você adota aqui funcionará com certeza. Ou seja, você precisa adicionar esse snippet de código na sua página cms, na guia Design
Como seu arquivo de modelo está diretamente
content
bloqueado, o conteúdo do seu modelo será renderizado pelo magento. Então você não precisa usaras
propriedades no seucore/template block
.2. Como evitar
<div class="std"></div>
Esta div é realmente um elemento div de wrapper para páginas cms. Veja a definição deste bloco aqui.
Como você pode ver, o
cms.wrapper
bloco é do tipopage/html_wrapper
. O que esse bloco faz é: ele envolverá todo o seu bloco filho com um elemento div (elemento padrão) e renderizará os blocos filho automaticamente.Para evitar esse bloco, você usou este código
No entanto, está completamente errado. Ele remove realmente a div do wrapper. Mas junto com isso também remove o bloqueio filho
cms_page
. Issocms_page
é com um tipocms/page
. Isso significa que se refere ao blocoMage_Cms_Block_Page
. Este bloco é o "coração" das páginas do CMS. Portanto, remover o invólucro também eliminou o bloqueio cardíaco do CMS Page. É por isso que você não obteve nenhuma saída na sua página de cms.Então, o que você deve fazer para evitar esse invólucro? A resposta é muito simples. Escape
cms_page
do invólucro e remova-o com segurança. Então, aqui está o código que você precisa usar na seção de layout da página do cms.Como você pode ver no código xml do layout, primeiro removemos o wrapper e, portanto, inserimos o
cms_page
bloco no nosso código. Também usamos nosso bloco de modelos, como você pode ver. Isso renderizará o conteúdo do arquivo de modelo primeiro em sua página, depois seguido pelo conteúdo da página cms.3. Como admin -> CMS -> XML de atualização de layout difere da funcionalidade do layout.xml
Suponha que você gostaria de ter uma aparência especial para uma das páginas do CMS que você possui em seu site. Para isso, o melhor método que você pode optar é adicionar a atualização de layout em admin-> CMS-> Layout. Isso será aplicável exclusivamente à página do CMS.
Mas se você precisar aplicar algumas alterações gerais a todas as páginas do CMS, será fácil continuar
layout.xml
.Portanto, geralmente, que método deve ser adotado para alterar o layout depende exclusivamente do que você deseja alcançar. Dependendo disso, você precisa seguir um método. Nem todo método.
espero que ajude
fonte
Se houver apenas uma página ofensiva, a melhor e mais fácil maneira IMO:
Edite a
"Design"
guia da página do CMS .Faça referência ao elemento wrapper, use o
setElementClass
método para aplicar nenhuma classe ou uma nova classe.fonte
Você deve modificar o layout, normalmente 1column.phtml, 2columns.phtml, etc, e torná-los como deseja / precisa.
Esses PHTMLs são a estrutura básica de qualquer layout e são preenchidos programaticamente com atualizações XML.
Isso não afetará mais nada se você mantiver a consistência entre seus modelos e layouts em seu próprio tema.
fonte
if this is the home page, include this code ...
em todas as páginas de layout e excluindo ogetCHildHtml('content')
em todas as páginas? Eu quero aprender como usar o Magento e suas ferramentas melhor, não apenas a marreta do problema.Levei um minuto para entender todas as instruções da resposta aceita; portanto, para dar uma guinada, é tudo o que era necessário para remover o wrapper de todas as páginas do CMS:
<div class="std"></div>
No cms.xml, altere o bloco cms_page para:
fonte