web-dev-qa-db-ja.com

Magento-アカウントナビゲーションでリンクを追加/削除する方法

アカウントナビゲーションのリンクを削除しようとしています。 customer/account/navigation.phtmlテンプレートを見ました。テンプレートは、$ this-> getLinks()によってリンクを取得します。リンクの一部を削除できるようにgetLinks()メソッドを編集するにはどうすればよいですか?

30
Moon

あなたの質問への答えは最終的に、それは依存します。そのナビゲーションのリンクは、異なるレイアウト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がそのナビゲーションブロックに使用するハンドルです。

34
Joseph Mastey

Xmlファイル全体をコピー/編集せずにリンクを選択的に削除したい場合は、 magentoフォーラムのこの投稿 でニースのソリューションを見つけることができます

このソリューションでは、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>
43
zlovelady

Magentoの[アカウント]パネルからリンクを削除する最も簡単な方法は、最初にコピーすることです:

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

app/design/frontend/enterprise/YOURSITE/template/customer/account/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 */
        ?> 

表示したいリンクを削除してください。

22

また、コードに触れることなく、バックエンドを介してメニュー項目を無効にすることもできます。に入る:

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も無効にしました。これは他のページテンプレートに表示される傾向があり、使用していない場合は迷惑になる可能性があるためです。

16
Ryan

その仕事は100%私は確かです。

ステップ1:(YourTemplate/customer/account/navigation.phtml)に移動します

ステップ2:次の行を置き換えます:<?php $_count = count($_links); ?> With:

<?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 */

?>

7
Randhir Yadav

技術的には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']);
?>
5
Nebel54

また、カスタマイズしたモジュールを開発している場合は、config.xmlで次のようにする必要があります

    <frontend>
        <layout>
            <updates>
                <hpcustomer>
                    <file>hpcustomer.xml</file>
                </hpcustomer>
            </updates>
        </layout>
    </frontend>
4
Xuefeng

Navigation.phtmlを開きます

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

取り替える

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

削除したい未設定のリンク

<?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
?>
2
Prince Patel

この無料のプラグアンドプレイ拡張機能も使用できます。

http://www.magentocommerce.com/magento-connect/manage-customer-account-menu.html

この拡張機能は、Magentoのコアファイルには影響しません。

この拡張機能を使用すると、次のことができます。

  1. Magentoバックエンドで1クリックで表示または非表示にするメニュー項目ごとに決定します。
  2. メニュー項目の名前を簡単に変更します。
0

上記の作業のほとんどが、私にとっては、これが最も簡単でした。

プラグインをインストールし、ログアウト、ログイン、システム、詳細、フロントエンドリンクマネージャーを表示し、表示するオプションをオンまたはオフにします。また、サイトのフロントエンドナビゲーションでも機能します。

http://www.magentocommerce.com/magento-connect/frontend-links-manager.html

0
WEGIII

私の解決策は、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
Full