2009-12-30 112 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 
?> 
相關問題