Eine globale Variable in Magento einstellen, die GUI-Art?

8

Ich benutze Magento seit kurzem für den Webshop eines Kunden und muss mich immer noch mit seinen Systemen vertraut machen.

Der Webshop sollte mehrere Links haben und auch Informationen aus einer anderen Domain abrufen, in der sich die Unternehmenswebsite befindet. Ich würde es vorziehen, den Domain-Namen oder die URL nicht fest zu codieren, sondern ihn stattdessen irgendwo zu definieren und diesen Wert in den PHP-Vorlagen im gesamten Webshop zu verwenden. Dies macht es einfach, es anzupassen, wenn wir die Site zwischen Dev-, Staging- und Produktions-URLs verschieben.

Kann jemand die Vorgehensweise von Magento vorschlagen? Vorzugsweise können wir der Backend-Konfiguration des Stores ein Konfigurationsfeld hinzufügen, ähnlich wie bei {{base_url}}. Oder vielleicht denke ich in die falsche Richtung?

    
Martijn Heemels 04.06.2009, 10:41
quelle

5 Antworten

35

Magento bietet (relativ) einfache Unterstützung für benutzerdefinierte Konfigurationswerte. Der beste Weg, um dies zu erreichen, besteht darin, ein einzelnes Magento-Modul zu erstellen, das alle Ihre benutzerdefinierten Konfigurationswerte enthält.

Wie alles Magento, gibt es viele Schritte, und jeder, der falsch ist, könnte dich (oder mich!) stolpern.

Erstellen Sie ein leeres Magento-Modul

Zuerst sollten Sie ein Magento-Modul einrichten, das alle Ihre benutzerdefinierten Konfigurationswerte enthält. Das Erstellen eines Magento-Moduls beinhaltet

  1. Erstellen Sie eine XML-Datei in der App / etc / modules
  2. Erstellen Sie eine Ordnerstruktur in app / code / local / Firmenname

Firmenname ist eine eindeutige Zeichenfolge, die als Namespace dient, und die meisten Magento-Tutorials empfehlen Ihnen, hier den Namen Ihres Unternehmens zu verwenden. Für die Zwecke dieses Tutorials verwende ich "Stackoverflow". Wo immer Sie die Zeichenfolge Stackoverflow sehen, ersetzen Sie sie durch Ihre eigene eindeutige Zeichenfolge.

Erstellen Sie also für Schritt 1 eine Datei in der App / etc / modules mit dem Namen "Stackoverflow_Customconfig.xml" und legen Sie Folgendes in

ab %Vor%

Zufälliges Magento Tipp: Es gibt Teile des Magento-Systems, die Leerzeichen als signifikant erachten, daher ist es immer am besten, keine Leerzeichen mit den Attributwerten aufzunehmen (& lt; active & gt; true & lt; / active & gt; vs. & lt; active & gt; true & lt; / active & gt;

Als nächstes erstellen Sie den folgenden Ordner

%Vor%

Und erstellen Sie eine Datei unter

%Vor%

mit folgendem Inhalt

%Vor%

Herzlichen Glückwunsch! Sie haben gerade ein neues Magento-Modul eingerichtet. Wenn Sie Ihren Magento-Cache löschen und zu

gehen %Vor%

Sie sollten Ihr Modul aufgelistet sehen.

Fügen Sie Ihrem Modul eine Datei System.xml hinzu

Als Nächstes fügen wir eine system.xml-Datei hinzu. Diese Datei wird verwendet, um Magento einen benutzerdefinierten Konfigurationswert hinzuzufügen, den Sie während des Magento-Anfragezyklus überall hin mitnehmen können. Fügen Sie eine Datei unter

hinzu %Vor%

Das enthält die folgenden

%Vor%

& lt; design & gt; ist der Name des Abschnitts, in dem die Konfiguration angezeigt wird. "Allgemein, Web, Design, Währungseinstellungen usw." Im Großen und Ganzen wird dies eine Kleinschreibung des Titels sein, d. H. "Allgemein" wird "allgemein", "Design" wird "Design". Wenn Sie nicht sicher sind, was dieses äußere Tag sein soll, durchsuchen Sie die Magento-Kernmodule. Das heißt, Grepping für "Currency Setup" zeigt eine Erwähnung in

%Vor%

Sie würden also das Tag & lt; currency / & lt; verwenden und nicht das intuitivere & lt; currency_setup / & gt;

& lt; meine_oder_their_gruppe translate="label" & gt; ist der Name der Gruppe, in der Ihre Konfigurationsvariable angezeigt wird. Gruppen sind die Ajax-Dropdown-Menüs, die Konfigurationsfelder enthalten. Der Abschnitt "Allgemein" enthält beispielsweise die Gruppen "Länderoptionen" und "Lokale Optionen". Überprüfen Sie erneut die vorhandenen Hauptmodule, wenn Sie nicht sicher sind, wie Sie einen Wert in eine vorhandene Gruppe einfügen.

Sie werden hier auch ein translate-Attribut zusammen mit einem entsprechenden label-Tag bemerken. Dadurch können Sie eine beliebige Zeichenfolge in der HTML-Schnittstelle als Gruppentitel verwenden, den Namen jedoch intern als gültigen XML-Tag-Namen beibehalten. Unser Tag heißt

%Vor%

aber in der Schnittstelle hat die Gruppe den Titel

  

Eine Gruppierung von Konfigurationswerten. Machen Sie Ihre eigene oder uns eine bestehende Gruppe.

Schließlich & lt; my_config translate="label" & gt; ist der Name von Yoru conifg Wert. Beachten Sie erneut das translate-Attribut . Es gelten dieselben Regeln wie oben.

Die andere XML-Struktur wird benötigt und wird (meistens) verwendet, um zu steuern, welche Art von HTML-Eingaben für Ihre Konfiguration verwendet werden. Wenn Sie ein bestimmtes Interface-Element wünschen, finden Sie ein Beispiel im Core-Modul und kopieren Sie die XML-Struktur.

Damit können Sie Konfigurationswerte in der Magento GUI-Oberfläche einstellen und nachschlagen. Sie können Ihre Werte mit der statischen Methode getStoreConfig des globalen Mage-Objekts abrufen und den URI Ihres Konfigurationswerts angeben. Der URI wird mit dem Abschnitt / group / name Ihrer Konfiguration erstellt.

%Vor%     
Alan Storm 15.06.2009, 21:25
quelle
16

Magento bietet benutzerdefinierte Variablen ab Version 1.4.

Login zur Admin-Seite, System - & gt; Benutzerdefinierte Variablen - & gt; Erstellen Sie eine neue benutzerdefinierte Variable mit dem Code "my_variable".

Geben Sie den HTML-Inhalt und den Nur-Text für diese Variable ein

Sie können die benutzerdefinierte Variable in CMS-Seiten anzeigen, indem Sie dieses {{customVar code=my_variable}}

setzen

Oder in .phtml pages:

%Vor%     
anoop 29.07.2010 11:27
quelle
1

Der einfachste Weg wäre, einen Knoten zu der zentralen XML-Konfigurationsdatei von Magento hinzuzufügen. Aber das wird nicht empfohlen, da es Probleme mit Upgrades verursachen wird. Um benutzerdefinierte Werte festzulegen, ohne den Core zu bearbeiten, klicken Sie auf diesen Link

So überschreiben Sie die Konfigurationswerte

    
Rick J 05.06.2009 07:12
quelle
1

Ich bin zu neu, um Alans Antwort einen Kommentar hinzuzufügen, aber hier sind einige weitere Informationen von Magento:

-Ed.

    
Edison Software 08.10.2010 15:32
quelle
0

Alan, danke für deine Antwort! Es war der Schlüssel, der das Geheimnis für mich freilegte. Auch nachdem ich Ihren ausgezeichneten Guide gelesen hatte . Da ich mein Bestes tue, um Core-Dateien nicht zu modifizieren, habe ich begonnen, Erweiterungen für mein E-Commerce-Geschäft zu machen. Und ich habe eine, die meiner Meinung nach gut genug ist, um sie den Leuten zu zeigen, aber ich wollte sie im Admin konfigurieren können, so dass keine Dateien bearbeitet werden mussten.

Ich habe mit dem obigen Code angefangen und festgestellt, dass das hinzugefügte "Menü" nicht in "Allgemein", sondern in "General-General" oder General-Web, General-Design usw. war. Ich wollte, dass mein Ding angezeigt wird im Allgemeinen, aber ich wollte nicht wie alle anderen machen und eine ganze Menügruppe für meine Erweiterungen hinzufügen.

Wenn der Leser von Google hierher gekommen ist, um meine Optionen einfach irgendwo im Admin zu platzieren, dann lesen Sie weiter (und deshalb füge ich eine weitere Antwort hinzu). Erstens: mach was Alan oben sagt. Holen Sie sich Ihr Menü in Allgemein- & gt; Allgemein- & gt; Ihr Menü. Hinweis: Sie müssen den Cache löschen und sich auch abmelden, da einige Informationen in der Sitzung gespeichert sind.

Um Ihr eigenes Menü unter "Allgemein" erscheinen zu lassen, müssen Sie dasselbe tun, als würden Sie Ihre eigene Gruppe oder sogar Tab in der oberen Menüleiste bekommen, die Sie sich selbst geben müssen ACL-Berechtigung in config.xml :

%Vor%

Hier ist meine system.xml , die der Konfiguration entspricht. Beachten Sie, dass ytf das übergeordnete Menü ist. Ich habe dies von TniyBricks Modul "True Order Edit" modelliert. Auch ein Gotcha: ytf und ytfeed haben feine Unterschiede mit ihren Einträgen. Der Eintrag ytf wird angezeigt, wenn Sie zu Admin gehen - & gt; config und schaue auf der linken Seite in der Gruppe General. ytfeed ist die "Leiste", die in der Mitte der Seite angezeigt wird, wenn Sie auf "Allgemein- & gt; Youtube Feed"

klicken %Vor%

Ein weiterer Link, der mir sehr geholfen hat:
Ссылка

Update: Ich habe eine Erweiterung dieser Antwort gemacht.

    
Chris K 02.03.2013 02:26
quelle

Tags und Links