Remover newsletter link de conta de cliente de navegação
-
12-12-2019 - |
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
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