Pergunta

Como remover a newsletter link da conta de cliente de navegação em Magento?

Começamos usando o Avançado Boletim de extensão e, agora, duas newsletter links na nossa conta de cliente de navegação, um para o padrão de newsletter e outros para o padrão de newsletter.

Eu posso ver que o padrão newsletter link é adicionado à conta do cliente no nav app/design/frontend/base/default/layout/newsletter.xml em ln 48 com:

<customer_account>
    <!-- Mage_Newsletter -->
    <reference name="customer_account_navigation">
        <action method="addLink" translate="label" module="newsletter"><name>newsletter</name><path>newsletter/manage/</path><label>Newsletter Subscriptions</label></action>
    </reference>
    <remove name="left.newsletter"/>
</customer_account>

Eu tentei remover esse link no nosso tema local.xml com:

<reference name="customer_account_navigation">
    <!--<action method="removeLinkByName"><name>newsletter</name></action>-->
    <!--<remove name="newsletter"/>-->
    <action method="removeLinkByUrl"><url helper="newsletter/manage/"/></action>
</reference>

Nenhum desses métodos funcionaram para mim & eu recebo um erro ao tentar removê-los com um método de ação.

<action method="removeLinkByName"><name>newsletter</name></action> dá esse erro: Invalid method Mage_Customer_Block_Account_Navigation::removeLinkByName(Array

<action method="removeLinkByUrl"><url helper="newsletter/manage/"/></action> dá esse erro: Fatal error: Class 'Mage_Newsletter_Helper_Manage' not found in /app/Mage.php on line 546

Enquanto <remove name="newsletter"/> não dá nenhum erro, mas não remove o link

Foi útil?

Solução

Você precisa reescrever o Magento Cliente Mage_Customer_Block_Account_Navigation Bloco de classe.

criar config.xml arquivo em app/code/local/Neo/CustomerNavigationLinks/etc

<?xml version="1.0"?>
<config>
    <modules>
        <Neo_CustomerNavigationLinks>
            <version>0.0.1</version>
        </Neo_CustomerNavigationLinks>
    </modules>
    <global>
        <blocks>
            <customer>
                <rewrite>
                    <account_navigation>Neo_CustomerNavigationLinks_Block_Account_Navigation</account_navigation>
                </rewrite>
            </customer>
        </blocks>
        <helpers>
            <customernavigationlinks>
                <class>Neo_CustomerNavigationLinks_Helper</class>
            </customernavigationlinks>
        </helpers>
    </global>
</config>

em estilo Neo/CustomerNavigationLinks/Bloco/Conta/ careate um arquivo chamado Navigation.php com o seguinte conteúdo

<?php

class Neo_CustomerNavigationLinks_Block_Account_Navigation extends Mage_Customer_Block_Account_Navigation
{
    public function removeLinkByName($name)
    {
        unset($this->_links[$name]);
        return $this;
    }
}
?>

em app/etc/modules criar um arquivo chamado Neo_CustomerNavigationLinks.xml com o seguinte conteúdo

<?xml version="1.0"?>
<config>
    <modules>
        <Neo_CustomerNavigationLinks>
            <active>true</active>
            <codePool>local</codePool>
        </Neo_CustomerNavigationLinks>
    </modules>
</config>

Agora em local.xml adicionar o seguinte conteúdo

<customer_account>
        <reference name="customer_account_navigation">
            <action method="removeLinkByName">
                <name>newsletter</name> 
            </action>
        </reference>
</customer_account>

Outras dicas

Além de Pradeep a solução inteligente acima, eu também achei uma boa extensão, permitindo a você gerenciar esses links do Magento Painel de Administração

https://github.com/integer-net/RemoveCustomerAccountLinks

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