2009-12-30 68 views
30

我正试图移除帐户导航中的链接。我看了一下customer/account/navigation.phtml模板。该模板通过$ this-> getLinks()获取链接。如何编辑getLinks()方法,以便我可以删除一些链接?Magento - 如何添加/删除我的帐户导航链接?

+0

自由“[前端链接管理器](http://www.magentocommerce.com/magento未设置链接替换

<?php $_links = $this->getLinks(); ?> 

-connect/MagePsycho/extension/7905/frontend_links_manager)'扩展程序可让您从控制面板执行此操作,除了“我的应用程序”。 – ehartwell 2013-03-17 14:38:11

+0

非常好的细节和例子来帮助你在Mangeto添加和删除排名靠前的使用'local.xml'文件:http://www.classyllama.com/development/magento-development/editing-magentos-top-links-the - 更好的路 – 2012-05-12 15:16:40

+0

您可以使用此模块:https://github.com/netz98/N98_LayoutHelper – Alex 2012-09-26 14:39:43

回答

33

您的问题的答案最终取决于您的问题。该导航中的链接通过不同的布局XML文件添加。以下是首先在layout/customer.xml中定义块的代码。请注意,它还定义了一些链接添加到菜单:

<block type="customer/account_navigation" name="customer_account_navigation" before="-" template="customer/account/navigation.phtml"> 
    <action method="addLink" translate="label" module="customer"><name>account</name><path>customer/account/</path><label>Account Dashboard</label></action> 
    <action method="addLink" translate="label" module="customer"><name>account_edit</name><path>customer/account/edit/</path><label>Account Information</label></action> 
    <action method="addLink" translate="label" module="customer"><name>address_book</name><path>customer/address/</path><label>Address Book</label></action> 
</block> 

其它菜单项在其他布局文件中定义。例如,评价模块使用layout/review.xml来定义它的布局,并包含以下内容:

<customer_account> 
    <!-- Mage_Review --> 
    <reference name="customer_account_navigation"> 
     <action method="addLink" translate="label" module="review"><name>reviews</name><path>review/customer</path><label>My Product Reviews</label></action> 
    </reference> 
</customer_account> 

要删除此链接,只需注释掉或删除<action method=...>标签和菜单项目将消失。如果您想一次查找所有菜单项,请使用您最喜欢的文件搜索并找到任何name="customer_account_navigation"的实例,这是Magento用于该导航块的句柄。

+5

这个解决方案的创建之前广泛采用的修改通过在local.xml中执行更新而无需触摸基本模板文件进行布局。修改基本模板文件当然是一个很大的禁忌,因为修改可能在Magento版本更改中丢失。 – 2012-04-17 13:48:49

+1

(zlovelady的解决方案是正确的) – 2012-04-17 13:49:05

+1

自由“[前端链接管理器](http://www.magentocommerce.com/magento-connect/MagePsycho/extension/7905/frontend_links_manager)”扩展可以让你做到这一点,除了“我的应用程序”,从控制面板。 – ehartwell 2013-03-17 14:51:19

4

此外,你需要做的config.xml中这样的事情,如果你正在开发一个定制的模块

<frontend> 
     <layout> 
      <updates> 
       <hpcustomer> 
        <file>hpcustomer.xml</file> 
       </hpcustomer> 
      </updates> 
     </layout> 
    </frontend> 
43

如果你想选择删除链接,而无需复制/编辑整个XML文件,一个漂亮的解决方案可以在this post in the magento forums

发现在此解决方案,覆盖Mage_Customer_Block_Account_Navigation块与本地版本,增加了一个removeLinkByName方法,然后您可以在您的layout.xml文件中使用,就像这样:

<?xml version="1.0"?> 
    <layout version="0.1.0"> 

    <customer_account> 
     <reference name="customer_account_navigation" > 
       <!-- remove the link using your custom method --> 
       <action method="removeLinkByName"> 
        <name>recurring_profiles</name> 
       </action> 
       <action method="removeLinkByName"> 
        <name>billing_agreements</name> 
       </action> 
     </reference> 
    </customer_account> 
</layout> 
+0

这就是论坛,其解决方案是有效的,请注明那么,如果u能 – 2014-10-20 08:38:24

+0

瑞安Christofferson了更好的答案,谢谢 – 2014-11-07 10:55:45

+0

@PratikCJoshi看到http://stackoverflow.com/a/5976641/794071 – 2015-10-09 06:55:31

5

技术上zlovelady的答案是可取的,但因为我以前只从导航删除项目,在模板取消设置的不需要的导航项目的方法对我来说是最快/最简单的方法:

只是重复

app/design/frontend/base/default/template/customer/account/navigation 

app/design/frontend/YOUR_THEME/default/template/customer/account/navigation 

和取消不需要的导航项目之前得到呈现,如:

<?php $_links = $this->getLinks(); ?>  
<?php 
    unset($_links['recurring_profiles']); 
?> 
+1

+1最好的选择是不修改核心文件,并把它放在一个地方 – 2012-07-31 23:17:58

14

您还可以通过后端禁用菜单项,而无需触摸任何代码。进入:

System > Configuration > Advanced 

您将看到一长串选项。以下是一些关键模块设置为“已禁用”:

Mage_Downloadable -> My Downloadable Products 
Mage_Newsletter -> My Newsletter 
Mage_Review -> My Reviews 
Mage_Tag -> My Tags 
Mage_Wishlist -> My Wishlist 

我也被禁用Mage_Poll,因为它在其他页面模板,显示了一个趋势,如果你不使用它可以是恼人。

+0

我认为这是一个非常干净的解决方案。如果更改代码,总有一天它会成为一个问题,当你想恢复以前的状态,你改变了这么多的文件... – Sonhja 2012-10-18 11:47:52

+0

如果我没记错的话这只是禁止HTML的输出。块仍在处​​理中。如果你不想要块处理的开销,那么你将不得不使用xml。 – gwgeller 2013-10-17 18:05:33

21

以去除在Magento我的帐户面板中的任何链接的最简单方法是先复制:

应用程序/设计/前端/基/默认/模板/客户/帐号/ navigation.phtml

应用程序/设计/前端/企业/ YOURSITE /模板/客户/帐号/ navigation.phtml

打开该文件,并罚款这一行,它应该在第34行:

<?php $_index = 1; ?> 

右键下方补充一点:

<?php $_count = count($_links); /* Add or Remove Account Left Navigation Links Here -*/ 
     unset($_links['tags']); /* My Tags */ 
     unset($_links['invitations']); /* My Invitations */ 
     unset($_links['enterprise_customerbalance']); /* Store Credit */ 
     unset($_links['OAuth Customer Tokens']); /* My Applications */ 
     unset($_links['enterprise_reward']); /* Reward Points */ 
     unset($_links['giftregistry']); /* Gift Registry */ 
     unset($_links['downloadable_products']); /* My Downloadable Products */ 
     unset($_links['recurring_profiles']); /* Recurring Profiles */ 
     unset($_links['billing_agreements']); /* Billing Agreements */ 
     unset($_links['enterprise_giftcardaccount']); /* Gift Card Link */ 
     ?> 

只是删除任何这里的链接,你希望出现的。

5

其工作100%,我相信。

第1步:进入(YourTemplate /客户/帐号/ navigation.phtml)

步骤2:替换该行:<?php $_count = count($_links); ?> 带:

<?php $_count = count($_links); /* Add or Remove Account Left Navigation Links Here -*/ 
unset($_links['account']); /* Account Info */  
unset($_links['account_edit']); /* Account Info */    
unset($_links['tags']); /* My Tags */ 
unset($_links['invitations']); /* My Invitations */ 
unset($_links['reviews']); /* Reviews */ 
unset($_links['wishlist']); /* Wishlist */ 
unset($_links['newsletter']); /* Newsletter */ 
unset($_links['orders']); /* My Orders */ 
unset($_links['address_book']); /* Address */ 
unset($_links['enterprise_customerbalance']); /* Store Credit */ 
unset($_links['OAuth Customer Tokens']); /* My Applications */ 
unset($_links['enterprise_reward']); /* Reward Points */ 
unset($_links['giftregistry']); /* Gift Registry */ 
unset($_links['downloadable_products']); /* My Downloadable Products */ 
unset($_links['recurring_profiles']); /* Recurring Profiles */ 
unset($_links['billing_agreements']); /* Billing Agreements */ 
unset($_links['enterprise_giftcardaccount']); /* Gift Card Link */ 

>

0

我的解决办法,完全除去块和那个local.xml与我所需要的块创建它,所以,例如

<customer_account> 
     <reference name="left"> 
      <action method="unsetChild"> 
       <name>customer_account_navigation</name> 
      </action> 
      <block type="customer/account_navigation" name="customer_account_navigation" before="-" template="customer/account/navigation.phtml"> 
       <action method="addLink" translate="label" module="customer"> 
        <name>account</name> 
        <path>customer/account/</path> 
        <label>Account Dashboard</label> 
       </action> 
       <action method="addLink" translate="label" module="customer"> 
        <name>account_edit</name> 
        <path>customer/account/edit/</path> 
        <label>Account Information</label> 
       </action> 
     </block> 
    </reference> 
</customer_account> 
0

打开导航。PHTML

app/design/frontend/yourtheme/default/template/customer/account/navigation.phtml 

与您要删除

<?php 
$_count = count($_links); 
unset($_links['account']); // Account Information  
unset($_links['account_edit']); // Account Information 
unset($_links['address_book']); // Address Book 
unset($_links['orders']); // My Orders 
unset($_links['billing_agreements']); // Billing Agreements 
unset($_links['recurring_profiles']); // Recurring Profiles 
unset($_links['reviews']); // My Product Reviews 
unset($_links['wishlist']); // My Wishlist 
unset($_links['OAuth Customer Tokens']); // My Applications 
unset($_links['newsletter']); // Newsletter Subscriptions 
unset($_links['downloadable_products']); // My Downloadable Products 
unset($_links['tags']); // My Tags 
unset($_links['invitations']); // My Invitations 
unset($_links['enterprise_customerbalance']); // Store Credit 
unset($_links['enterprise_reward']); // Reward Points 
unset($_links['giftregistry']); // Gift Registry 
unset($_links['enterprise_giftcardaccount']); // Gift Card Link 
?> 
相关问题