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?
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.
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>
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.
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.
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 */
?>
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']);
?>
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>
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
?>
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:
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
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>