Ich möchte die folgenden Links im linken Bereich des Kundenkontodashboards entfernen.
- meine Anwendungen
- Geschenk registrierung
- Belohnungspunkte
- Link zur Geschenkkarte
Ich arbeite in der Magento 1.7 Community Edition. Jede Hilfe wird geschätzt.
magento-1.7
customer
Oshan
quelle
quelle
Antworten:
Schritt 1: Gehen Sie zu (yourPackage / YourTemplate / customer / account / navigation.phtml)
Schritt 2: Ersetzen Sie die folgende Zeile
Das obige Code-Snippet enthält die Möglichkeit, alle Navigationslinks zu entfernen. Hoffe das wird allen helfen.
Referenzlink: https://github.com/Aproducktion/Magento-Remove-Dashboard-Links
quelle
If you can't
??Ich sehe hier 2 Möglichkeiten.
Zuerst und am einfachsten: Suchen Sie einfach die Layoutdateien, die diese Menüelemente hinzufügen, und kommentieren Sie den Code für sie.
Zum Beispiel
My applications
wirdapp/design/frontend/{interface}/{theme}/layout/oauth.xml
durch dieses Stück XML hinzugefügtDie zweite Methode, bei der ich nicht 100% sicher bin, dass sie funktioniert, besteht darin, diese XML-
local.xml
Datei in die Layoutdatei Ihres Themas einzufügen :Sie müssen
<action>
für jeden Link, den Sie entfernen möchten, ein Tag hinzufügen .Es gibt auch die dritte Option: Wenn Sie die Module überhaupt nicht verwenden, deaktivieren Sie sie einfach. Dies kann auch die Leistung steigern.
Dazu erstelle diese Datei:
app/etc/modules/Zzzz.xml
mit diesem Inhalt:Möglicherweise treten hier einige Probleme auf. Einige andere Module, die Sie verwenden möchten, hängen von den Modulen ab, die Sie deaktivieren möchten.
quelle
Mage_Customer_Block_Account_Navigation
nicht von geerbt wirdMage_Page_Block_Template_Links
.Es gibt eine FOSS-Erweiterung, die Remote-Kontoverbindungen die Back-End-Option hinzufügt.
Es gibt ein zweites Modul (auch FOSS), das die
removeLink
Methode hinzufügt , so dass Sie Folgendes in Ihrem verwenden könnenlocal.xml
Haftungsausschluss: Ich bin Entwickler der zweiten Erweiterung.
quelle
Die einfachste Lösung (Implementierung und Verwendung) ich gefunden habe , ist zu ersetzen ,
Mage_Customer_Block_Account_Navigation
inapp/code/local
und eine Add -removeLinkByName
Methode, die das gleiche tut wie das, was Oshan Antwort tut, aber ist verwendbar von Layout - Dateien. Ein traditionelleres Umschreiben von Klassen würde ebenfalls funktionieren, könnte jedoch möglicherweise Konflikte mit einem Plugin verursachen.Warnung! Ungetestet!
Eine kompliziertere Lösung wäre, ein eigenes Modul zu schreiben, das eine Methode
Block
erweitertMage_Customer_Block_Account_Navigation
und einschließtremoveLinkByName
. Damit dies funktioniert, müssten Sie dencustomer_account_navigation
Block entfernen / entfernen und durch den für Ihr neues Modul ersetzen. Von da an erhalten Sie zu jedem Zeitpunkt,customer_account_navigation
auf den im Layout verwiesen wird, eine Instanz mitremoveLinkByName
.quelle
Eine schnelle Lösung, um alle Elemente der Liste "Mein Konto" unter "Meine Bestellungen" zu entfernen, einschließlich Abrechnungsvereinbarungen, wiederkehrender Profile, "Meine Anwendungen" und "Meine herunterladbaren Produkte". Entfernt auch meine Wunschliste und meine Newsletter-Links, die auf Magento 1.9 getestet wurden:
Kommentieren Sie die Zeilen 31 - 66 aus app / design / frontend / default / YOURTHEME / layout / wishlist.xml aus (falls nicht, kopieren Sie sie aus app / design / frontend / rwd / default / layout / wishlist.xml).
Kommentieren Sie die Zeilen 47 - 65 aus app / design / frontend / default / YOURTHEME / layout / newsletter.xml aus (falls nicht, kopieren Sie sie aus app / design / frontend / rwd / default / layout / newsletter.xml).
Newsletter </ name> newsletter / manage / </ path> Newsletter-Abonnements </ label> </ action> </ reference> </ customer_account ->
CSS (an Ihre Anforderungen anpassen)
quelle
Um das Entfernen der Links zu vermeiden, würde ich empfehlen, ID-Werte basierend auf der Variablen $ _index zuzuweisen, damit Sie die Links über CSS ausblenden können.
Folgendes habe ich getan:
Aus yourPackage / YourTemplate / customer / account / navigation.phtml
Dann kannst du natürlich gehen
Es gibt keine Möglichkeit, eine Katze zu häuten, aber dies ist eine schnelle und einfache Option, ohne die Funktionalität wirklich zu beeinträchtigen.
quelle
Ich dachte, eine bessere Lösung wäre, den Block neu zu schreiben. Dies wurde oben erwähnt, aber es gab kein Beispiel:
Fügen Sie den Rewrite zu Ihrer config.xml im globalen Abschnitt hinzu:
Überschreibe addLink in Mage_Customer_Block_Account_Navigation:
Das exclude_links-Array kann aus einer Konfigurationseinstellung abgerufen werden, wenn Sie die ausgeschlossenen Links nicht hart codieren möchten .
quelle
Das habe ich gegoogelt: http://magebase.com/magento-tutorials/5-useful-tricks-for-your-magento-local-xml/
quelle
Ich möchte Sie zunächst bitten, darauf hinzuweisen, dass es verschiedene Möglichkeiten gibt, Ihre Probleme zu lösen.
Es ist der einfachste Weg, den Code in der
layout.xml
Datei in base zu finden, für den Sie den Code entfernen möchten, z. B .: Wenn ich die "Meine Tags" entfernen möchte, kommentieren Sie einfach den Teil.Sie wissen jedoch, dass wir die Basisdatei nicht ändern sollten. Eine weitere einfache Methode, die durchgeführt werden könnte, ist
Deaktivieren des Links in Ihrer Vorlagendatei. Zum Kopieren Ihrer
navigation.phtml
Datei in Ihr Design (Hinweis: Die Ordnerstruktur sollte identisch sein) aus derbase\default\template\customer\account\navigation.phtml
. was in der obigen Antwort gezeigt wird.Eine weitere mühsame Aufgabe besteht darin, Ihr Kernmodul neu zu schreiben und eine Methode "RemoveLinkByName" zu erstellen.
quelle
Eine vollständige Lösung zum Entfernen der Kontodashboardfunktionen umfasst sowohl eine clientseitige als auch eine serverseitige Änderung. Wenn nur die Client-Seite entfernt und / oder ausgeblendet wird, hindert nichts technisch versierte Benutzer daran, weiterhin auf die Funktionen zuzugreifen, indem sie die Routen in ihrem Browser manuell erstellen oder einen komplexeren CURL- "Angriff" ausführen (der den richtigen umfassen kann) CSRF-Token und durchrutschen).
Die Client-Seite wird leicht durch XML-Aktualisierungen erreicht, wie aus der Vielzahl der bereits gegebenen Antworten hervorgeht.
Die Serverseite ist etwas komplexer und erfordert ein Verständnis der Funktionalität, die entfernt wird.
Persönlich würde ich den Weg gehen, Beobachter zu verwenden, um verbotene HTTP-Statuscodes auf jeder der Routen des zu entfernenden Features bedingt zurückzugeben. Um herauszufinden, welche Routen zu beobachten sind, öffnen Sie die zugehörige Controller-Datei und suchen Sie alle Front-End-Aktionen, die nicht mehr verfügbar sein sollten. Als Nächstes erstellen Sie ein Modul, das Systemkonfigurationsfelder zum Deaktivieren dieser Funktion definiert. Aktualisieren Sie mithilfe dieser Systemkonfigurationsfelder das Frontend-Layout-XML unter bestimmten Bedingungen und geben Sie die richtigen HTTP-Antwortcodes für jede beobachtete Route unter bestimmten Bedingungen zurück.
Codebeispiele für jeden der oben genannten Schritte finden Sie in Ihrer bevorzugten Suchmaschine.
quelle
Fügen Sie diesen Code zu einer local.xml-Datei hinzu
Getestet in Magento 1.7.0.2
quelle