回答:
ステップ1:(yourPackage / 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 */ ?>
上記のコードスニペットには、すべてのナビゲーションリンクを削除する方法が含まれています。これがすべてに役立つことを願っています。
参照リンク:https : //github.com/Aproducktion/Magento-Remove-Dashboard-Links
If you can't
ですか??
ここには2つのオプションがあります。
最初の最も簡単な方法:これらのメニュー項目を追加するレイアウトファイルを見つけて、それらのコードにコメントを付けるだけです。
たとえば、XMLのこの部分を通してMy applications
追加されapp/design/frontend/{interface}/{theme}/layout/oauth.xml
ます
<customer_account>
<reference name="customer_account_navigation">
<action method="addLink" translate="label" module="oauth">
<name>OAuth Customer Tokens</name>
<path>oauth/customer_token</path>
<label>My Applications</label>
</action>
</reference>
</customer_account>
2番目の方法は、動作することを100%確信していませんが、このxmlをlocal.xml
テーマのレイアウトファイル内に追加することです。
<customer_account>
<reference name="customer_account_navigation">
<action method="removeLinkByUrl"><url>oauth/customer_token</url></action>
</reference>
</customer_account>
<action>
削除するリンクごとに1つのタグを追加する必要があります。
3番目のオプションもあります。モジュールをまったく使用していない場合は、単に無効にします。これにより、パフォーマンスも向上します。
このために、このファイルを作成します:app/etc/modules/Zzzz.xml
このコンテンツで:
<config>
<modules>
<Mage_Oauth>
<active>false</active>
</Mage_Oauth>
</modules>
</config>
ここでいくつかの問題が発生する可能性があります。使用する他のモジュールは、無効にするモジュールによって異なります。
Mage_Customer_Block_Account_Navigation
から継承しないため、2番目のオプションは機能しませんMage_Page_Block_Template_Links
。
リモートアカウントリンクにバックエンドオプションを追加するFOSS拡張機能があります。
メソッドを追加する2番目のモジュール(これもFOSS)があり、次のモジュールremoveLink
を使用できます。local.xml
免責事項:私は2番目の拡張機能の開発者です。
<customer_account>
<reference name="customer_account_navigation">
<action method="removeLink"><name>OAuth Customer Tokens</name></action>
<action method="removeLink"><name>billing_agreements</name></action>
<action method="removeLink"><name>recurring_profiles</name></action>
</reference>
</customer_account>
私が見つけた最も単純な解決策(実装と使用法)は、メソッドを置き換えMage_Customer_Block_Account_Navigation
てapp/code/local
追加するremoveLinkByName
ことです。これは、Oshanの答えと同じですが、レイアウトファイルから使用できます。より伝統的なクラスの書き換えも機能しますが、プラグインとの競合を引き起こす可能性があります。
警告!未テスト!
より複雑な解決策は、メソッドBlock
を拡張Mage_Customer_Block_Account_Navigation
して含む独自のモジュールを記述するremoveLinkByName
ことです。これが機能するためには、customer_account_navigation
ブロックを削除/設定解除して、新しいモジュールのブロックに置き換える必要があります。それ以降、customer_account_navigation
レイアウトでいつでも参照され、でインスタンスを取得しますremoveLinkByName
。
簡単な解決策。請求契約、繰り返しプロファイル、マイアプリケーション、ダウンロード可能な製品など、マイオーダーの下にあるすべてのマイアカウントリストアイテムを削除します。サイト全体で、Magento 1.9でテストされたマイウィッシュリストとニュースレターリンクも削除します。
app / design / frontend / default / YOURTHEME / layout / wishlist.xmlの31行目から66行目をコメントアウトします(存在しない場合はapp / design / frontend / rwd / default / layout / wishlist.xmlからコピーします)
<!--default>
<reference name="top.links">
<block type="wishlist/links" name="wishlist_link" />
<action method="addLinkBlock"><blockName>wishlist_link</blockName></action>
</reference>
<!-- Mage_Wishlist -->
<!--reference name="right">
<block type="wishlist/customer_sidebar" name="wishlist_sidebar" as="wishlist" after="cart_sidebar" template="wishlist/sidebar.phtml" />
</reference>
</default-->
<!--customer_account>
<!-- Mage_Wishlist -->
<!--reference name="customer_account_navigation">
<action method="addLink" translate="label" module="wishlist" ifconfig="wishlist/general/active"><name>wishlist</name><path>wishlist/</path><label>My Wishlist</label></action>
</reference-->
<!--/customer_account-->
<!--customer_account_index>
<reference name="right">
<action method="unsetChild"><name>wishlist</name></action>
</reference>
</customer_account_index-->
app / design / frontend / default / YOURTHEME / layout / newsletter.xmlの47行目から65行目をコメントアウトします(存在しない場合はapp / design / frontend / rwd / default / layout / newsletter.xmlからコピーします)
ニュースレター</ name> newsletter / manage / </ path>ニュースレター購読</ label> </ action> </ reference> </ reference> </ customer_account->
<!--newsletter_manage_index translate="label">
<label>Customer My Account Newsletter Subscriptions</label>
<update handle="customer_account"/>
<reference name="my.account.wrapper">
<block type="customer/newsletter" name="customer_newsletter">
<block type="page/html_wrapper" name="customer.newsletter.form.before" as="form_before" translate="label">
<label>Newsletter Subscription Form Before</label>
</block>
</block>
</reference>
</newsletter_manage_index!-->
CSS(要件ごとに調整)
.block-account .block-content ul li:nth-last-child(1), .block-account .block-content ul li:nth-last-child(2), .block-account .block-content ul li:nth-last-child(3), .block-account .block-content ul li:nth-last-child(4) {
display: none;
}
.cart-table .cart-links > li:last-child {
display:none;
}
リンクが削除されないようにするには、$ _ index変数に基づいてID値を割り当てることをお勧めします。これにより、CSSを介してリンクを非表示にできます。
私がやったことは次のとおりです。
yourPackage / YourTemplate / customer / account / navigation.phtmlから
<?php foreach ($_links as $_link): ?>
<?php $_last = ($_index++ >= $_count); ?>
<?php if ($this->isActive($_link)): ?>
<li class="current<?php echo ($_last ? ' last' : '') ?>" id="account-link-<?php echo $_index;?>"><strong><?php echo $_link->getLabel() ?></strong></li>
<?php else: ?>
<li<?php echo ($_last ? ' class="last"' : '') ?> id="account-link-<?php echo $_index;?>"><a href="<?php echo $_link->getUrl() ?>"><?php echo $_link->getLabel() ?></a></li>
<?php endif; ?>
<?php endforeach; ?>
だから明らかに、あなたは行くことができます
#account-link-1 {
display:none;
}
猫のスキンを作成する方法は1つではありませんが、これは機能を実際に損なうことなく、すばやく簡単なオプションです。
より良い解決策はブロックを書き直すことだと思いました。これは上記で言及されましたが、例はありませんでした。
グローバルセクションのconfig.xmlに書き換えを追加します。
<blocks>
<customer>
<rewrite>
<account_navigation>Your_Module_Block_Customer_Account_Navigation</account_navigation>
</rewrite>
</customer>
</blocks>
Mage_Customer_Block_Account_NavigationでaddLinkをオーバーライドします。
class Your_Module_Block_Customer_Account_Navigation extends Mage_Customer_Block_Account_Navigation
{
private $exclude_links = null;
public function addLink($name, $path, $label, $urlParams=array())
{
if (!$this->exclude_links) {
$this->exclude_links = array(
'OAuth Customer Tokens', /* My Applications */
'downloadable_products', /* My Downloadable Products */
'recurring_profiles', /* Recurring Profiles */
'billing_agreements' /* Billing Agreements */
);
}
if (!in_array($name, $this->exclude_links)) {
return parent::addLink($name, $path, $label, $urlParams);
}
}
}
exclude_links配列は、除外されたリンクをハードコーディングしたくない場合、設定から取得できます。
これは私がこれについてグーグルで調べたものです:http : //magebase.com/magento-tutorials/5-useful-tricks-for-your-magento-local-xml/
標準のMagentoレイアウトのほぼすべてのレイアウトを変更できますが、このアプローチが失敗する状況がいくつかあります。特に、これはtop.linksブロックを変更したい瞬間に現れます。このブロック内のアイテムはaddLinkアクションメソッドを使用して追加されるため、デフォルトセットからいくつかのリンクを削除する方法を知りたい場合は、答えはできません。残念ながら、page / template_linksブロッククラスは 'removeLink'アクションメソッドを実装していないため、unsetChildアプローチを使用してブロック全体を削除し、locals.xmlでリンクを追加してリンクブロックを追加します。
最初に、問題を解決するためのさまざまな方法があることを伝えてください。
layout.xml
削除したいbase内のファイルでコードを見つけるのが最も簡単な方法です。たとえば、「My tags」を削除したい場合は、その部分をコメントします。
<customer_account>
<!-- Mage_Tag -->
<reference name="customer_account_navigation">
<action method="addLink" translate="label" module="tag"><name>tags</name><path>tag/customer/</path><label>My Tags</label></action>
</reference>
</customer_account>
しかし、ベースファイルを変更してはならないことを知っているので、次に実行できる次の簡単な方法は
テンプレートnavigation.phtml
ファイルのリンクを解除します。そのためには、ファイルをテーマからコピーします(注:フォルダー構造は同じである必要があります)base\default\template\customer\account\navigation.phtml
。上記の回答に示されています。
アカウントダッシュボード機能を削除する完全なソリューションには、クライアント側とサーバー側の両方の変更が含まれます。クライアント側のみが削除および/または隠されている場合、技術に精通したユーザーがブラウザでルートを手作業で作成したり、より洗練されたCURL「攻撃」(適切なCSRFトークンとスリップスルー)。
クライアント側は、すでに与えられた多数の回答が示すように、XMLの更新を通じて簡単に実現できます。
サーバー側はもう少し複雑で、削除される機能を理解する必要があります。
個人的には、オブザーバーを使用して、削除される機能の各ルートで禁止されたHTTPステータスコードを条件付きで返すルートに行きます。監視するルートを見つけるには、関連するコントローラーファイルを開き、使用できなくなったフロントエンドアクションをそれぞれ見つけます。次に、上記の機能をソフト無効にするためのシステム構成フィールドを定義するモジュールを作成します。これらのシステム構成フィールドを使用して、フロントエンドレイアウトXMLを条件付きで更新し、同様に、監視対象の各ルートに対して適切なHTTP応答コードを条件付きで返します。
上記の各ステップのコード例は、お気に入りの検索エンジンで見つけることができます。
このコードをlocal.xmlファイルに追加します
<customer_account>
<reference name="customer_account_navigation">
<action method="addLink"><name>tags</name></action>
<action method="addLink"><name>recurring_profiles</name></action>
<action method="addLink"><name>newsletter</name></action>
<action method="addLink"><name>billing_agreements</name></action>
<action method="addLink"><name>OAuth Customer Tokens</name></action>
<action method="addLink"><name>downloadable_products</name></action>
</reference>
</customer_account>
Magento 1.7.0.2でテスト済み