source - magento tutorial
Magento-¿Cómo agregar/eliminar enlaces en la navegación de mi cuenta? (11)
Estoy tratando de eliminar enlaces en la navegación de mi cuenta. Miré la plantilla cliente / cuenta / navegación.phtml. La plantilla toma enlaces por $ this-> getLinks (). ¿Cómo edito el método getLinks () para poder eliminar algunos enlaces?
Abre navigation.phtml
app/design/frontend/yourtheme/default/template/customer/account/navigation.phtml
reemplazar
<?php $_links = $this->getLinks(); ?>
con el enlace no definido 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
?>
Además, debe 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>
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 / cliente / cuenta / navigation.phtml
a
aplicación / diseño / frontend / enterprise / YOURSITE / template / customer / account / navigation.phtml
Abra el archivo y multa esta línea, debe estar alrededor de la línea 34:
<?php $_index = 1; ?>
Justo debajo agrega 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 que desea que aparezcan aquí.
La mayoría del trabajo anterior, pero para mí, este fue el más fácil.
Instale el complemento, cierre de sesión, inicie sesión, sistema, avanzado, administrador de enlaces frontales, marque y desmarque las opciones que desea mostrar. También funciona en cualquiera de los navegadores frontales de tu sitio.
http://www.magentocommerce.com/magento-connect/frontend-links-manager.html
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
. Tenga en cuenta 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 del menú se definen en otros archivos de diseño. Por ejemplo, el módulo Revisiones usa 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 elemento del menú desaparecerá. Si desea buscar todos los elementos del menú a la vez, use su búsqueda de archivos favorita y busque cualquier instancia de name="customer_account_navigation"
, que es el manejador que Magento usa para ese bloque de navegación.
Mi solución fue eliminar completamente el bloque en local.xml y crearlo con los bloques que necesitaba, así que, 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>
Si desea eliminar selectivamente enlaces sin tener que copiar / editar archivos xml completos, puede encontrar una buena solución en esta publicación en los foros de magento
En esta solución, anula el bloque Mage_Customer_Block_Account_Navigation
con una versión local, que agrega un método removeLinkByName
, que luego usa en sus archivos layout.xml
, de esta manera:
<?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>
Su trabajo al 100% estoy seguro.
Paso 1: Ir a (YourTemplate / customer / account / navigation.phtml)
Paso 2: Reemplace esta línea: <?php $_count = count($_links); ?>
<?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 */
?>
Técnicamente, la respuesta de zlovelady es preferible, pero como solo tenía que eliminar elementos de la navegación, el enfoque de desarmar los elementos de navegación innecesarios en la plantilla fue la forma más rápida / más fácil para mí:
Solo duplicar
app/design/frontend/base/default/template/customer/account/navigation
a
app/design/frontend/YOUR_THEME/default/template/customer/account/navigation
y desarmar los ítems de navegación innecesarios antes de la renderización, por ejemplo:
<?php $_links = $this->getLinks(); ?>
<?php
unset($_links[''recurring_profiles'']);
?>
También puede desactivar los elementos del menú a través del servidor, 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 ''Desactivado'':
Mage_Downloadable -> My Downloadable Products
Mage_Newsletter -> My Newsletter
Mage_Review -> My Reviews
Mage_Tag -> My Tags
Mage_Wishlist -> My Wishlist
También deshabilité 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.
También puede usar esta extensión gratuita de conexión y uso:
http://www.magentocommerce.com/magento-connect/manage-customer-account-menu.html
Esta extensión no toca ninguno de los archivos centrales de Magento.
Con esta extensión, puedes:
- Decidir por elemento de menú para mostrar u ocultar con un clic en el backend de Magento.
- Cambiar el nombre de los elementos del menú fácilmente.