L'ajout de jQuery pour Magento
Quelle est la méthode recommandée pour ajouter jQuery (ou un script) AVANT que le reste des scripts qui viennent avec Magento à l'aide de local.xml?
J'ai essayé de l'utiliser (en local.xml):
<reference name="head">
<action method="addItem">
<type>skin_js</type>
<script>js/jquery-1.6.4.js</script>
</action>
</reference>
mais cela finit par l'ajout de jQuery à la fin des scripts qui sont ajoutés par Magento dans page.xml dans le package de base. J'ai même essayé de supprimer tous les scripts à l'aide de:
<action method="removeItem">
...
</action>
pour supprimer tous les scripts qui ont été ajoutés dans page.xml et puis de rajouter dans local.xml dans l'ordre j'ai besoin d'eux pour être (jQuery premier), mais de toute façon, ils se retrouvent dans le même ordre (avec jQuery dernier).
J'ai franchi la Magento code et de vérifier que les scripts sont arriver supprimé puis réinstallé dans $this->_data['items'] dans Mage_Page_Block_Html_Head, mais à un certain point, quand ils sont ajoutés à la page, ils sont ajoutés avec jQuery dernier.
Je devine qu'il y a une façon plus élégante de le faire, mais je n'ai pas encore trouver dans ma recherche sur Google. Tout ce que j'ai trouvé recommande la modification de page.xml directement, j'ai lu d'ailleurs n'est pas une bonne idée.
Vous devez vous connecter pour publier un commentaire.
Le mieux est d'utiliser le réseau de diffusion de contenu qui sera de mieux en performance/vitesse pour votre site web.
J'ai surtout il suffit d'ouvrir template/page/html/tête.phtml et à droite avant de
- Je ajouter:
Aussi assurez-vous d'exécuter le jQuery.noConflict() la méthode et de toujours utiliser la totalité de jQuery nom au lieu de l' $ (signe dollar) pour éviter les conflits avec prototype 😉
Mon préféré (et de la manière la plus souple) de le faire est par le biais de XML à l'aide de
local.xml
, deux fichiers Javascript, et un nouveau fichier que nous allons créer. Le premier fichier Javascript jQuery est lui-même--complètement modifiée. Le second fichier que j'appelleno-conflict.js
et il ne contient qu'une seule ligne:Maintenant, nous ajoutons ces deux dossiers, avec un nouveau bloc, à la tête de la section de notre
local.xml
:no-conflict.js
est nécessaire pour permettre jQuery pour travailler aux côtés de Prototype, le framework Javascript inclus dans Magento par défaut. Maintien de jQuery et unno-conflict
fichier séparé vous permet d'augmenter ou de réduire jQuery en tant que de besoin, sans la nécessité de modifier le fichier jQuery de façon à inclure lenoConflict()
méthode.Dans notre XML, nous avons créé un nouveau bloc (
topScripts
) avec le fichier de modèle défini àtop_scripts.phtml
.Accédez à
/app/design/frontend/PACKAGE_NAME/TEMPLATE_NAME/template/page/html/
et de la création de ce nouveau fichier. Il contient une ligne:<?php echo $this->getCssJsHtml(); ?>
Maintenant modifier
/app/design/frontend/PACKAGE_NAME/TEMPLATE_NAME/template/page/html/head.phtml
.Trouver la ligne
<?php echo $this->getCssJsHtml() ?>
dans votrehead.phtml
et ajoutez cette ligne directement au-dessus d'elle:<?php echo $this->getChildHtml('topScripts') ?>
Vous avez maintenant correctement ajouté jQuery avant toute autre Magento Javascript.
Vous pouvez l'ajouter à votre bloc de fichiers avec
$this->getLayout()->getBlock('head')->addJs('path/to/jquery.js');
dans le_prepareLayout()
méthodeUne mise en garde, Magento utilise Prototype, de sorte que vous aurez besoin, vérifiez que vous avez défini de jQuery pour une autre variable autres que simplement
$
. En ajoutant ceci à la page de le faire fonctionner pour moi:Alors il suffit d'utiliser
$j
où vous utilisez normalement$
Comme une alternative, et au lieu de modifier manuellement Magento fichiers à chaque fois, vous pouvez simplement ajouter jQuery à l'aide de cette extension: http://www.intersales.de/shop/magento-magejquery.html
Ce qu'il fait pour vous est de télécharger la version jQuery, vous définissez et installer tous les fichiers automatiquement, tout en ajoutant également les références de votre modèle. Dans le backend, vous pouvez spécifier la version désirée et aussi activer le non-conflit.