2010-10-14 7 views
3

Dans magento je sais comment inclure les fichiers js dans le fichier de mise en page. Comment, cependant, j'inclure des fichiers javascript spécifiques seulement sur certaines pages avec mon module personnalisé. Par exemple, j'écris un module personnalisé qui fonctionnera avec la vue du produit et la liste des pages. Je veux donc avoir une sorte de mise à jour de la mise en page que je peux utiliser avec mon module qui inclura mon fichier javascript uniquement sur la vue du produit et les pages de la liste.Magento - comment inclure le fichier javascript page par page base

+0

pouvez-vous fournir des exemples de pages sur lesquelles vous souhaitez les inclure? –

+0

Salut merci, ouais les deux pages que je veux les inclure sont les pages/catalog/category/view et catalog/product/view. – Jon

Répondre

5

Ce que vous devez faire est de trouver les poignées de disposition pour les pages que vous souhaitez inclure le JS, et les ajouter au format XML de votre module personnalisé. Par exemple, pour inclure la JS sur la vue du produit, vous devez ajouter le nœud suivant à votre disposition:

<catalog_product_view> 
    <reference name="head"> 
    <action method="addJs"><script>path/file.js</script></action> **OR** 
    <action method="addItem"><type>skin_js</type><name>path/file.js</name></action> 
    </reference> 

Choisissez l'une des options en fonction de l'endroit où vos fichiers JS vivent. Jetez un oeil dans le catalogue par défaut.xml ou review.xml pour des exemples.

Pour élaborer le descripteur de disposition (par exemple, catalog_product_view), vous pouvez utiliser l'excellent module LayoutViewer d'Alan Storm sur son blog.

HTH, JD

+0

C'est un peu ce que j'ai fait mais ça ne marche pas. Magento va-t-il charger tous les fichiers layout.xml qu'il trouve dans le thème actuel et les traiter? Par exemple, disons que je viens de vider un fichier de mise en page dans le thème de base/par défaut appelé mymodule.xml et inclure une référence comme ci-dessus, est-ce que magento va le faire? – Jon

+1

Si vous voulez parcourir rapidement quelque chose dans une mise en page de thème, appelez le fichier local.xml, Magento vérifiera toujours ce dernier. Je trouve cela particulièrement utile pour profiter de l'héritage dans les thèmes non-par défaut. – clockworkgeek

+0

a fait ce travail pour vous N'hésitez pas à accepter la réponse si c'est le cas ... –

17

vous devez ajouter une section de mise à jour de la mise en page à votre fichier de configuration des modules. en fonction de ce que vous avez dit que vous aurez besoin de quelque chose comme ceci dans votre fichier de mise en page:

<?xml version="1.0"?> 

<layout version="0.1.0"> 
    <catalog_product_view> 
     <reference name="head"> 
       <action method="addJs"><script>yourscript.js</script></action> 
      </reference> 
    </catalog_product_view> 

    <catalog_category_view> 
      <reference name="head"> 
       <action method="addJs"><script>yourscript.js</script></action> 
      </reference> 
    </catalog_category_view> 

</layout> 

Ensuite, dans vos modules fichier de configuration, vous aurez besoin de quelque chose comme:

Cela suppose que yourscript.js est assis à la racine du dossier js. De toute évidence, vous ne voulez pas le mettre ici, donc faire ce que Jonathan a conseillé et à utiliser:

<action method="addItem"><type>skin_js</type><name>path/file.js</name></action> 

et mettre vos js dans votre dossier thèmes de la peau.

Bonne chance!

+0

Ai-je besoin d'un routeur pour que cela fonctionne? Une simple extension faisant cela ne semble pas fonctionner ici. J'ai essayé de déposer le fichier layout.xml dans le dossier de thème par défaut et dans le dossier de thème en cours et magento ne ira pas le chercher. le fichier javascript se trouve dans le dossier racine javascript, pas les thèmes. –

+0

J'ai compris. mauvais chemin vers le JS. Merci! –

Questions connexes