Magento-Modul layout-xml-lade-Reihenfolge
Habe ich eine benutzerdefinierte Erweiterung, beinhaltet jQuery über layout-XML etwa so:
<reference name="head">
<action method="addJs"><script>jquery/jquery-1.8.1.min.js</script></action>
</reference>
Andere Erweiterungen die jQuery verwenden, die geladen werden müssen, nachdem mein Modul so jQuery bleibt oben.
Durch Standard-Magento lädt alles alphabetisch. Gibt es eine Möglichkeit, um eine Sortierreihenfolge anzugeben, für Erweiterungen?
Eine Möglichkeit ist das überschreiben page.xml
in mein Thema und manuell einfügen jQuery in den head oder kann ich jede custom-Modul zu hängen, das Modul will ich an der Spitze zum Beispiel:
<depends>
<Package_JQueryLib />
</depends>
Andere Empfehlungen?
Bearbeiten
Ich dachte, ich könnte auch überschreiben Mage_Page_Block_Html_Head
und ändern Sie die addItem()
Methode, um das Sortieren oder das voranstellen von Dateien an den Kopf.
InformationsquelleAutor ringerce | 2012-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
<depends />
- Knoten ist ein Gültiger Ansatz - es soll eine Kontrolle über die Kollision Modul xpath-Werte, aber es kann auch verwendet werden, um Einfluss auf die Reihenfolge, in der die untergeordneten Knoten angezeigt.Die andere Möglichkeit, das umschreiben der
page/html_head
Klasse, ist etwas, dass bisher musste für eine Weile und ich kann mir vorstellen, tatsächlich von anderen getan.Einer anderen option zu versuchen wäre, um ein
<update>
Richtlinie in Ihrer benutzerdefinierten Modul-layout-XML die Richtlinien<update />
verarbeitet werden, bevor die anderen Richtlinien. Dies bedeutet, dass jQuery geladen wird, bevor alle anderen Dateien.Hmm. Ich werde schauen müssen, warum
update
hat nicht funktioniert. Als für deine Antwort, man könnte es als eine Antwort auf Ihre eigene Frage und dann akzeptieren Sie es, für andere zu bewerten 🙂Als ich es gepostet :). Ich denke, die update-Methode betrifft nur, die einzelnen Module layout-xml, aber ich könnte falsch sein. Die anderen Module layout-xml noch immer an die Seite mit dem Kopf voran.
Nette Antwort Ben! - github.com/drewhunter/ItemPosition - verwendet eine neu page/html_head wie Ben beschrieben in seiner Antwort, es ist also nicht besonders schön aber es funktioniert
Drew, schöne Arbeit. Ich wünschte, ich würde gefunden haben, Ihre Lösung vor, mein eigenes 🙂
InformationsquelleAutor benmarks
Dies ist, was ich kam mit:
http://pastebin.com/tMUnWBWR
Nun über die layout-xml-oder addJs Methode, die ich verwenden können, die sort_order parameter zu definieren, wo ich gerne meine js enthalten.
Beispiel-layout xml würde so Aussehen:
Auch, dieses nicht zu, dass die JS bewegt werden, um die oben auf alle Dateien, nur die anderen, die im selben Typ. Zum Beispiel, wenn Sie die JS-Datei mit dem Typ 'skin_js' und andere mit 'js' Sie sind nur sortiert in die Ihres gleichen Typ.
InformationsquelleAutor ringerce
Magento lädt config-Dateien aus app/etc/modules in alphabetischer Reihenfolge in der Datei app/code/core/Mage/Core/Model/Config.php in der geschützten Methode _getDeclaredModuleFiles()
Er erzählt, dass Erstens Mage_All.xml wird geladen, dann werden alle Magento config-Dateien (beginnt mit Mage_) und schließlich der custom Module in alphabetischer Reihenfolge.
So, hier ist eine kleine, aber "dirty" - trick - name namespace als AaaPackagename.
Name beginnt mit zahlen, wird auch den trick tun: 1Packagename oder 000Packagename
<depends />
Knoten.Danke für deine Antwort Sergei.
InformationsquelleAutor Sergei Guk