Magento - ¿Cómo agregar / eliminar enlaces en la navegación de mi cuenta?


Estoy intentando eliminar enlaces en la navegación de mi cuenta. Miré el cliente / cuenta / navegación.plantilla phtml. La plantilla agarra enlaces por this this->getLinks(). ¿Cómo edito el método getLinks () para poder eliminar algunos enlaces?

 30
Author: sr_1436048, 2009-12-30

11 answers

La respuesta a tu pregunta es, en última instancia, depende. Los enlaces en esa navegación se agregan a través de diferentes archivos XML de diseño. Aquí está el código que primero define el bloque en layout/customer.xml. Observe que también define algunos enlaces para agregar al menú:

<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>

Otros elementos de menú se definen en otros archivos de diseño. Por ejemplo, el módulo Reviews utiliza layout/review.xml para definir su diseño, y contiene lo siguiente:

<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>

Para eliminar este enlace, simplemente comente o elimine la etiqueta <action method=...> y el el elemento de menú desaparecerá. Si desea encontrar todos los elementos del menú a la vez, use su búsqueda de archivos favorita y encuentre cualquier instancia de name="customer_account_navigation", que es el controlador que Magento usa para ese bloque de navegación.

 33
Author: Joseph Mastey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-30 03:49:01

Si desea eliminar selectivamente enlaces sin tener que copiar / editar archivos XML completos, una buena solución se puede encontrar en este post en los foros de magento

En esta solución, sobrescribes el bloque Mage_Customer_Block_Account_Navigation con una versión local, que agrega un método removeLinkByName, que luego usas en tus archivos layout.xml, así:

<?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>
 43
Author: zlovelady,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-24 13:19:13

La forma más fácil de eliminar cualquier enlace del panel Mi cuenta en Magento es copiar primero:

App/design/frontend/base/default/template/customer/account/navigation.phtml

A

App/design/frontend/enterprise/YOURSITE/template/customer/account/navigation.phtml

Abra el archivo y ponga fin a esta línea, debería estar alrededor de la línea 34:

<?php $_index = 1; ?>

Justo debajo añade esto:

 <?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 */
        ?> 

Simplemente elimine cualquiera de los enlaces aquí que DESEA que aparezcan.

 22
Author: Ryan Christofferson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-08 19:11:00

También puede desactivar los elementos del menú a través del backend, sin tener que tocar ningún código. Entrar en:

System > Configuration > Advanced

Se te presentará una larga lista de opciones. Estos son algunos de los módulos clave para establecer en 'Deshabilitado':

Mage_Downloadable -> My Downloadable Products
Mage_Newsletter -> My Newsletter
Mage_Review -> My Reviews
Mage_Tag -> My Tags
Mage_Wishlist -> My Wishlist

También desactivé Mage_Poll, ya que tiene una tendencia a aparecer en otras plantillas de página y puede ser molesto si no lo estás usando.

 16
Author: Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-22 18:06:39

Su trabajo 100% estoy Seguro.

Paso 1: Vaya A ( YourTemplate/customer/account/navigation.phtml)

Paso 2: Reemplace Esta Línea: <?php $_count = count($_links); ?> Con:

<?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
Author: Umesh Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-16 06:59:36

Técnicamente la respuesta de zlovelady es preferible, pero como solo tuve que eliminar elementos de la navegación, el enfoque de desactivar los elementos de navegación no necesarios en la plantilla fue la forma más rápida/fácil para mí:

Sólo duplicar

app/design/frontend/base/default/template/customer/account/navigation

A

app/design/frontend/YOUR_THEME/default/template/customer/account/navigation

Y desactive los elementos de navegación innecesarios antes de que se procesen, por ejemplo:

<?php $_links = $this->getLinks(); ?>    
<?php 
    unset($_links['recurring_profiles']);
?>
 5
Author: Nebel54,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-02 10:58:07

También, necesitas hacer algo como esto en config.xml si está desarrollando un módulo personalizado

    <frontend>
        <layout>
            <updates>
                <hpcustomer>
                    <file>hpcustomer.xml</file>
                </hpcustomer>
            </updates>
        </layout>
    </frontend>
 4
Author: Xuefeng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-19 12:53:28

Abra la navegación.phtml

app/design/frontend/yourtheme/default/template/customer/account/navigation.phtml

Sustitúyase

<?php $_links = $this->getLinks(); ?>

Con el enlace no establecido que desea eliminar

<?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
?>
 1
Author: Prince Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-07 11:47:22

La mayor parte del trabajo anterior, pero para mí, este fue el más fácil.

Instale el plugin, cerrar sesión, iniciar sesión, sistema, avanzado, administrador de enlaces front-end, marque y desmarque las opciones que desea mostrar. También funciona en cualquiera de la navegación frontal de su sitio.

Http://www.magentocommerce.com/magento-connect/frontend-links-manager.html

 0
Author: WEGIII,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-03 15:28:27

También puedes usar esta extensión plug-and-play gratuita:

Http://www.magentocommerce.com/magento-connect/manage-customer-account-menu.html

Esta extensión no toca ninguno de los archivos Magento core.

Con esta extensión usted es capaz de:

  1. Decida por elemento de menú para mostrarlo u ocultarlo con un solo clic en el motor de Magento.
  2. Cambie el nombre de los elementos del menú fácilmente.
 0
Author: Gerard de Visser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-16 07:46:57

Mi solución fue eliminar completamente el bloque en local.xml y crearlo con los bloques que necesitaba, así, por ejemplo

<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>
 0
Author: Full,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-04 11:29:00