Pergunta

Sou novo no magento e estou lutando com esse problema.Quero adicionar a página Personalizar Comparar Produto à Conta do Cliente, então criei meu bloco de personalização em

\template\catalog\product\compare\mycompare.phtml

e no meu local.xml eu adiciono

<action method="addLink" translate="label" module="catalog">
     <name>catalog.compare.list</name>
     <path>index.php/catalog/product_compare/index/</path>
     <label>My Compare</label>
</action>

<catalog_product_compare_index>
        <label>Catalog Product Compare List</label>
        <!-- Mage_Catalog -->
        <update handle="customer_account"/>
        <reference name="my.account.wrapper">
        <block type="catalog/product_compare_list" name="catalog.compare.list" template="catalog/product/compare/mycompare.phtml"/>
        </reference>
</catalog_product_compare_index>

Dá trabalho, mas esse bloco foi chamado 2 vezes.E os produtos de comparação originais (um com novas janelas quando clicados) também mudaram seu layout!Como devo fazer para consertar isso??

Foi útil?

Solução

O problema foi porque eu uso o mesmo caminho com o produto de comparação pop-up.

<path>index.php/catalog/product_compare/index/</path>

e este código

 <catalog_product_compare_index>
        <label>Catalog Product Compare List</label>
        <!-- Mage_Catalog -->
        <update handle="customer_account"/>
        <reference name="my.account.wrapper">
        <block type="catalog/product_compare_list" name="catalog.compare.list" template="catalog/product/compare/mycompare.phtml"/>
        </reference>
</catalog_product_compare_index>

alterar o pop-up de comparação do layout do produto.

Então, o que faço aqui é apenas criar um novo módulo.Criar IndexController com indexAction,

public function indexAction() {
        $this->loadLayout();
        $this->getLayout()->getBlock('head')->setTitle($this->__('My Compare'));
        $this->renderLayout(); 
}

e altere algum código em local.xml:

<action method="addLink" translate="label" module="mycompare">
     <name>mycompare</name>
     <path>mycompare/index</path>
     <label>My Compare</label>
</action>

<mycompare_index>
        <label>Catalog Product Compare List</label>
        <!-- Mage_Catalog -->
        <update handle="customer_account"/>
        <reference name="my.account.wrapper">
        <block type="catalog/product_compare_list" name="mycompare" as="mycompare" template="catalog/product/compare/mycompare.phtml"/>
        </reference>
</mycompare_index>

Outras dicas

Como não tenho certeza do que você deseja alcançar, fornecerei duas soluções diferentes:

Solução 1. Se você precisar remover a duplicação na janela pop-up de comparação de produtos e adicionar seu próprio modelo de bloco de comparação de produtos personalizado, será necessário implementar o seguinte em local.xml:

<catalog_product_compare_index>
        <update handle="customer_account"/>

        <reference name="content">
            <action method="unsetChild"><name>catalog.compare.list</name></action>
        </reference>            

        <reference name="my.account.wrapper">
            <block type="catalog/product_compare_list" name="catalog.compare.list" template="catalog/product/compare/mycompare.phtml"/>
        </reference>
</catalog_product_compare_index>

Solução 2. Se você precisar adicionar seu bloco de modelo de comparação de produtos personalizado à página Painel da conta do cliente, será necessário implementar o seguinte em local.xml:

<customer_account_index>

    <reference name="my.account.wrapper">
        <block type="catalog/product_compare_list" name="catalog.compare.list" template="catalog/product/compare/mycompare.phtml"/>
    </reference>

</customer_account_index>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top