アカウントナビゲーションのリンクを削除しようとしています。 customer/account/navigation.phtmlテンプレートを見ました。テンプレートは、$ this-> getLinks()によってリンクを取得します。リンクの一部を削除できるようにgetLinks()メソッドを編集するにはどうすればよいですか?
あなたの質問への答えは最終的に、それは依存します。そのナビゲーションのリンクは、異なるレイアウト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がそのナビゲーションブロックに使用するハンドルです。
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>
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 */
?>
表示したいリンクを削除してください。
また、コードに触れることなく、バックエンドを介してメニュー項目を無効にすることもできます。に入る:
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も無効にしました。これは他のページテンプレートに表示される傾向があり、使用していない場合は迷惑になる可能性があるためです。
その仕事は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 */
?>
技術的には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']);
?>
また、カスタマイズしたモジュールを開発している場合は、config.xmlで次のようにする必要があります
<frontend>
<layout>
<updates>
<hpcustomer>
<file>hpcustomer.xml</file>
</hpcustomer>
</updates>
</layout>
</frontend>
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
?>
この無料のプラグアンドプレイ拡張機能も使用できます。
http://www.magentocommerce.com/magento-connect/manage-customer-account-menu.html
この拡張機能は、Magentoのコアファイルには影響しません。
この拡張機能を使用すると、次のことができます。
上記の作業のほとんどが、私にとっては、これが最も簡単でした。
プラグインをインストールし、ログアウト、ログイン、システム、詳細、フロントエンドリンクマネージャーを表示し、表示するオプションをオンまたはオフにします。また、サイトのフロントエンドナビゲーションでも機能します。
http://www.magentocommerce.com/magento-connect/frontend-links-manager.html
私の解決策は、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>