Como adiciono algum código HTML após um elemento na página inicial?
Pergunta
O que eu quero conseguir é que eu tenha algum código html no cms/homepage/design, que desejo inserir após um determinado elemento na página inicial.Este é o código XML:
<cms_index_index translate="label">
<reference name="content">
<block type="sama_productblocks/list" name="sama_productblocks_newproducts" after="call_to_actions" template="sama_productblocks/list.phtml">
<action method="setIdentifier"><id>homepage-latest</id></action>
</block>
<block type="core/template" name="top_banners" before="-" template="homepage/topbanners.phtml">
<block type="experius_linkmanager/link_list" name="homepage_banner">
<action method="setIdentifier"><key>hoesjesoutlet-homepage_banner</key></action>
</block>
<block type="experius_linkmanager/link_list" name="homepage_small">
<action method="setIdentifier"><key>hoesjesoutlet-homepage_small</key></action>
</block>
</block>
<block type="core/template" name="cta_banners" after="modelfilter_search" template="homepage/cta.phtml">
<block type="experius_linkmanager/link_list" name="homepage_cta">
<action method="setIdentifier"><key>hoesjesoutlet-homepage_cta</key></action>
</block>
</block>
<block type="core/template" name="home_text" after="modelfilter_search" template="homepage/text.phtml">
<!-- Here should I call the html code -->
</block>
</reference>
</cms_index_index>
e o conteúdo do text.phtml deve ser o código HTML da guia de design.Bem, eu não quero removê-lo do design e colocá-lo todo no código HTML.Existe uma função ou método para chamar o conteúdo do design da página inicial?Este é o conteúdo do template/homepage/text.phtml
<div class="cta_row">
<?php // echo $this->getChildHtml('homepage_text');
// here i want to put the html code from the design tab from homepage
?>
</div>
Solução
Coloque seu conteúdo HTML dentro de um novo arquivo phtml.É assim que você deve fazer.
Arquivo: app\design\frontend\{your_package}\{your_theme}\template\homepage\my_homepage.phtml
<!-- put your html code inside this file -->
ou seja, seus códigos HTML vêm dentro my_homepage.phtml
modelo.Agora atualize a última parte do seu código xml assim.
<block type="core/template" name="home_text" after="modelfilter_search" template="homepage/text.phtml">
<!-- call to your custom html code block -->
<block type="core/template" name="my.homepage.block" as="homepage_text" template="homepage/my_homepage.phtml" />
</block>
Agora certifique-se de que seu text.phtml
segura essa ligação..
<?php echo $this->getChildHtml('homepage_text') ?>
Em seguida, limpe todo o cache e carregue a página novamente.Você terminou.
Editar
Se você deseja que esses códigos HTML sejam editáveis pelo administrador, como você declarou em seu comentário, coloque esses códigos HTML dentro de um bloco estático com um identificador homepage_custom_code
(você pode usar qualquer coisa aqui) e depois altere seu código xml assim.
Abordagem de atualização de layout
<block type="core/template" name="home_text" after="modelfilter_search" template="homepage/text.phtml">
<!-- call to your custom html code block -->
<block type="cms/block" name="my.homepage.sb" as="homepage_text">
<action method="setBlockId">
<block_id>homepage_custom_code</block_id>
</action>
</block>
e então chame seu bloco personalizado text.phtml
da mesma forma que fizemos acima ^^^^.
Abordagem de codificação rígida :(Eu odeio isso.)
Caso contrário, chame seu bloco estático diretamente dentro do seu text.phtml
assim.
<?php
$this->getLayout()->createBlock(
'cms/block',
'my_custom_text_from_sb',
array('block_id' => 'homepage_custom_code')
)
->toHtml()
?>
Ambas as formas funcionam.Mas eu recomendo a primeira abordagem.Para mim, parece mais claro.