Answers:
步骤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>
我不是100%不确定它会起作用的第二种方法是在local.xml
您的主题的布局文件中添加此xml :
<customer_account>
<reference name="customer_account_navigation">
<action method="removeLinkByUrl"><url>oauth/customer_token</url></action>
</reference>
</customer_account>
您需要<action>
为每个要删除的链接添加一个标签。
还有第三个选项,如果您根本不使用模块,则将其禁用。这也可以提高性能。
为此,请创建此文件:app/etc/modules/Zzzz.xml
并包含以下内容:
<config>
<modules>
<Mage_Oauth>
<active>false</active>
</Mage_Oauth>
</modules>
</config>
您可能会遇到一些麻烦,这是您要使用的其他模块,具体取决于您要禁用的模块。
Mage_Customer_Block_Account_Navigation
它不继承自Mage_Page_Block_Template_Links
。
有一个FOSS扩展,它将后端选项添加到远程帐户链接。
还有另一个模块(也是FOSS),它添加了removeLink
方法,以便您可以在您的计算机中使用以下内容local.xml
免责声明:我是第二个扩展的开发人员。
<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>新闻通讯/管理/ </ path>新闻通讯订阅</ label> </ action> </ 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;
}
没有一种方法可以给猫皮剥皮,但这是一种快速简便的选择,而不会真正损害任何功能。
我认为更好的解决方案是重写该块。上面提到了这一点,但没有示例:
在全局部分中将重写添加到您的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方法删除整个块,然后将链接块添加回本地,并在local.xml中添加我们自己的链接。
首先,我想告诉您,有多种方法可以解决您的问题。
这是最简单的方法,layout.xml
例如在您要删除的基本文件中找到代码,例如:如果我要删除“我的标签”,则只需注释该部分。
<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中测试