Ich werde das einfach halten .... auf meinen Produktseiten muss ich die prototype.js-Datei entfernen und sie durch die neueste Version des Prototyps ersetzen. Bisher habe ich local.xml erfolgreich verwendet, indem ich folgendes verwendet habe:
%Vor%Das Problem ist, dass der Prototyp jetzt unter alle anderen Includes geladen wird, wodurch er nicht mehr funktioniert.
Gibt es eine Möglichkeit, die Reihenfolge eines JavaScript-Includes mithilfe von local.xml festzulegen, ohne jede einzelne Datei entfernen und hinzufügen zu müssen?
Sie können das params-Element mit dem HTML-Attribut "data-group" verwenden. Magento wird Elemente mit "params" setzen, die nach Elementen ohne "params" gesetzt wurden. Sie können local.xml in Ihrem Design verwenden, um die Reihenfolge dieser Elemente sicherzustellen (ich empfehle Magento, seine Standarddateien zuerst hinzuzufügen):
%Vor%Die Reihenfolge, in der Elemente mit "params" gesetzt werden, wird nur in der Reihenfolge angegeben, in der die Aktionen ausgeführt werden. Elemente werden nach dem Wert von "params" gruppiert. Wenn also die Gruppe "js001" durch die erste Aktion (javascript2.js) definiert wird, werden nachfolgende Aktionen mit demselben Gruppennamen an diese Gruppe usw. angehängt.
Im obigen Beispiel lautet die Renderreihenfolge:
Elemente, die mit addItem addJs, addCss usw. hinzugefügt wurden, werden auf die gleiche Weise behandelt, unterscheiden sich jedoch (und werden entsprechend gruppiert) nach Typ (siehe Reihenfolge unten), wobei jede Gruppe in Supergruppen intern als geordnet ist oben erklärt:
Ich verstehe, dass dieser Beitrag ziemlich alt ist, aber ich stolperte darüber, während ich dieses Problem erforschte, also dachte ich, warum nicht.
Ich bin mir nicht sicher, ob das die eleganteste Lösung ist, aber es funktioniert ausreichend gut für uns.
Ich habe im Prinzip einen neuen Block in meinem local.xml
erstellt:
<block type="core/template" name="prehead" template="page/html/prehead/main.phtml" />
Dann habe ich meine Hauptlayouts (1column.phtml und Freunde) so geändert, dass sie folgendes enthalten:
<head>
<?php echo $this->getBlockHtml('prehead') ?>
<?php echo $this->getChildHtml('head') ?>
</head>
In main.phtml
füge ich mein JS hinzu, das ich zuerst laden möchte
<script type='text/javascript' src='<?php echo $this->getSkinUrl('js/require.js', array('_secure'=>true)); ?>'></script>
<script type='text/javascript' src='<?php echo $this->getSkinUrl('js/main.js', array('_secure'=>true)); ?>'></script>
Dies ist auch für uns praktisch, weil es uns immer noch erlaubt, die main.js abhängig von der Seite, auf der wir uns befinden, zu ändern, indem Sie in local.xml
:
<checkout_onestep_index translate="label">
<label>One Step Checkout</label>
<block type="core/template" name="prehead" template="page/html/prehead/checkout.phtml" />
</checkout_onestep_index>
Ich hoffe, es hilft jemandem, der zufällig darüber stolpert.
-Ken
Da local.xml zuletzt vom Magento-System geladen wird, wird das dort genannte xml endlich zusammengeführt. Das könnte der Grund sein, dass dein neuer Prototyp unter anderen Skripten geladen wird.
Alternativ können Sie die Methode Mage_Page_Block_Html_Head :: getCssJsHtml () überschreiben und damit spielen.
Danke
Ok, hier ist meine Lösung. Kopieren Sie zuerst app \ code \ core \ Mage \ Page \ Block \ Html \ head.php nach app \ code \ local \ Mage \ Page \ Block \ Html \ head.php
Fügen Sie diese Funktion dann zur Datei hinzu:
%Vor%Fügen Sie nun in Ihrer .XML-Layoutdatei eine Zeile wie folgt ein:
%Vor%Die Parameter sind genau wie für removeItem, aber jetzt wird die Ersetzungsdatei an der gleichen Stelle in die Liste eingefügt wie die ursprüngliche Datei. Es erbt auch die gleichen Parameter param, if und cond. Bitte benutze diesen Code sorgfältig, da ich ihn gerade erst geschrieben und grundlegende Tests gemacht habe!
Ich denke, dass die Lösung von Barny Shergold die korrekteste ist, aber der Kommentar zum Vermeiden der Änderung von Kerndateien ist korrekt. Um das Beste aus beiden Welten zu haben, können Sie Barnys Lösung in einem Modul implementieren, das die Klasse Mage_Page_Block_Html_Head wie folgt erweitert:
Yourcompany / Layouthelper / etc / config.xml
%Vor%Ihre Firma / Layouthelper / Block / Html / Head.php
%Vor%jquery Konflikt mit Prototyp in Magento:
Die einfachste Lösung besteht darin, am Ende Ihrer Hauptjquery-Datei hinzuzufügen.
%Vor%Oder erstellen Sie Ihre benutzerdefinierte js-Datei und fügen Sie diese Zeile hinzu und fügen Sie diese Datei auch nach js ein.
Tags und Links javascript magento order