web-dev-qa-db-fra.com

Magento - Comment ajouter/supprimer des liens dans la navigation de mon compte?

J'essaie de supprimer des liens dans la navigation de mon compte. J'ai regardé le modèle client/compte/navigation.phtml. Le modèle saisit les liens par $ this-> getLinks (). Comment puis-je modifier la méthode getLinks () afin de pouvoir supprimer certains liens?

30
Moon

La réponse à votre question est finalement, cela dépend. Les liens de cette navigation sont ajoutés via différents fichiers XML de présentation. Voici le code qui définit d'abord le bloc dans layout/customer.xml. Notez qu'il définit également certains liens à ajouter au menu:

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

Les autres éléments de menu sont définis dans d'autres fichiers de mise en page. Par exemple, le module Avis utilise layout/review.xml pour définir sa présentation et contient les éléments suivants:

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

Pour supprimer ce lien, il suffit de commenter ou de supprimer la balise <action method=...> et l'élément de menu disparaîtra. Si vous souhaitez rechercher tous les éléments de menu à la fois, utilisez votre recherche de fichier favorite et recherchez toutes les instances de name="customer_account_navigation", qui est le descripteur utilisé par Magento pour ce bloc de navigation.

34
Joseph Mastey

Si vous souhaitez supprimer des liens de manière sélective sans avoir à copier/modifier des fichiers xml entiers, une solution intéressante peut être trouvée dans ce message dans les forums magento

Dans cette solution, vous remplacez le bloc Mage_Customer_Block_Account_Navigation par une version locale, qui ajoute une méthode removeLinkByName, que vous utilisez ensuite dans vos fichiers layout.xml, comme suit:

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

Le moyen le plus simple de supprimer un lien du panneau Mon compte dans Magento est d’abord de copier:

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

à

app/design/frontend/entreprise/VOTRE SITE/modèle/client/compte/navigation.phtml

Ouvrez le fichier et affinez cette ligne, elle devrait être autour de la ligne 34:

<?php $_index = 1; ?>

Juste en dessous, ajoutez ceci:

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

Supprimez simplement l'un des liens que vous souhaitez afficher.

22

Vous pouvez également désactiver les éléments de menu via le backend, sans avoir à toucher à un code. Entrer dans:

System > Configuration > Advanced

Vous serez présenté avec une longue liste d'options. Voici quelques-uns des modules clés à paramétrer sur 'Disabled':

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

J'ai également désactivé Mage_Poll, car il a tendance à apparaître dans d'autres modèles de page et peut être agaçant si vous ne l'utilisez pas.

16
Ryan

Son travail 100% je suis sûr.

Étape 1: Accédez à (Votre modèle/client/compte/navigation.phtml)

Étape 2: Remplacez cette ligne: <?php $_count = count($_links); ?> Avec:

<?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
Umesh Kumar

Techniquement, la réponse de zlovelady est préférable, mais comme je n'avais que supprimer des éléments de la navigation, la méthode consistant à désactiver les éléments de navigation inutiles dans le modèle était le moyen le plus rapide et le plus simple:

Juste dupliquer

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

à 

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

et désélectionnez les éléments de navigation inutiles avant le rendu, par exemple:

<?php $_links = $this->getLinks(); ?>    
<?php 
    unset($_links['recurring_profiles']);
?>
5
Nebel54

De plus, vous devez faire quelque chose comme ceci dans config.xml si vous développez un module personnalisé.

    <frontend>
        <layout>
            <updates>
                <hpcustomer>
                    <file>hpcustomer.xml</file>
                </hpcustomer>
            </updates>
        </layout>
    </frontend>
4
Xuefeng

Ouvrir navigation.phtml

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

remplacer 

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

avec lien non défini que vous souhaitez supprimer

<?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
Prince Patel

Vous pouvez également utiliser cette extension plug-and-play gratuite:

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

Cette extension ne touche aucun des fichiers de base de Magento.

Avec cette extension, vous pouvez:

  1. Décidez par élément de menu à afficher ou à masquer en un clic dans le backend de Magento.
  2. Renommez les éléments de menu facilement.
0
Gerard de Visser

La plupart des travaux ci-dessus fonctionnent, mais pour moi, c'était le plus facile.

Installez le plugin, déconnectez-vous, connectez-vous, système, avancé, gestionnaire de liens front-end, cochez et décochez les options que vous souhaitez afficher. Cela fonctionne également sur n'importe lequel des navigateurs frontaux de votre site.

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

0
WEGIII

Ma solution consistait à supprimer complètement le bloc dans local.xml et à le créer avec les blocs dont j'avais besoin, par exemple

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