Подтвердить что ты не робот

Magento - Как добавить/удалить ссылки в моей учетной записи?

Я пытаюсь удалить ссылки в моей учетной записи. Я просмотрел шаблон customer/account/navigation.phtml. Шаблон захватывает ссылки через $this- > getLinks(). Как изменить метод getLinks(), чтобы удалить некоторые ссылки?

4b9b3361

Ответ 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
?>