Я пытаюсь удалить ссылки в моей учетной записи. Я просмотрел шаблон customer/account/navigation.phtml. Шаблон захватывает ссылки через $this- > getLinks(). Как изменить метод getLinks(), чтобы удалить некоторые ссылки?
Magento - Как добавить/удалить ссылки в моей учетной записи?
Ответ 1
Ответ на ваш вопрос в конечном счете, это зависит. Ссылки в этой навигации добавляются через 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>
Другие пункты меню определены в других файлах макета. Например, модуль Reviews использует 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 использует для этого блока навигации.
Ответ 2
Если вы хотите выборочно удалять ссылки без необходимости копировать/редактировать целые 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>
Ответ 3
Самый простой способ удалить любую ссылку с панели "Моя учетная запись" в 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 */
?>
Просто удалите любые ссылки, которые вы хотите отобразить.
Ответ 4
Вы также можете отключить элементы меню через бэкэнд, не прикасаясь к коду. Входите в:
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, так как он имеет тенденцию появляться в других шаблонах страниц и может раздражать, если вы его не используете.
Ответ 5
Технически ответ zlovelady предпочтительнее, но поскольку мне нужно было только удалять элементы из навигации, подход для снятия ненужных элементов навигации в шаблоне был самым быстрым/простым способом для меня:
Просто дублируйте
app/design/frontend/base/default/template/customer/account/navigation
to
app/design/frontend/YOUR_THEME/default/template/customer/account/navigation
и отмените ненужные элементы навигации до получения рендеринга, например:
<?php $_links = $this->getLinks(); ?>
<?php
unset($_links['recurring_profiles']);
?>
Ответ 6
Его работа на 100% я уверен.
Шаг 1: перейдите в (YourTemplate/customer/account/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 */
? >
Ответ 7
Кроме того, вам нужно сделать что-то подобное в файле config.xml, если вы разрабатываете настраиваемый модуль
<frontend>
<layout>
<updates>
<hpcustomer>
<file>hpcustomer.xml</file>
</hpcustomer>
</updates>
</layout>
</frontend>
Ответ 8
Большая часть работы выше, но для меня это было самым простым.
Установите плагин, выйдите из системы, войдите в систему, системный, расширенный, менеджер интерфейсов, проверьте и снимите флажки с параметрами, которые вы хотите отобразить. Он также работает с любой навигационной системой на вашем сайте.
http://www.magentocommerce.com/magento-connect/frontend-links-manager.html
Ответ 9
Вы также можете использовать это бесплатное расширение plug-and-play:
http://www.magentocommerce.com/magento-connect/manage-customer-account-menu.html
Это расширение не касается ни одного из основных файлов Magento.
С помощью этого расширения вы можете:
- Выберите пункт меню, чтобы показать или скрыть его одним щелчком мыши в бэкэнде Magento.
- Переименовать пункты меню легко.
Ответ 10
Мое решение состояло в том, чтобы полностью удалить блок в файле 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>
Ответ 11
Откройте файл 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
?>