Magento - как включить файл JavaScript на страницу за страницей - PullRequest
3 голосов
/ 15 октября 2010

В magento я знаю, как включить файлы js в файл макета страницы.Однако, как я могу включить определенные файлы JavaScript только на определенных страницах с моим пользовательским модулем.Например, я пишу пользовательский модуль, который будет работать со страницами вида продукта и списка.Поэтому я хочу иметь какое-то обновление макета, которое я могу использовать с моим модулем, который будет включать мой файл javascript только на страницах просмотра продукта и списка.

Ответы [ 2 ]

18 голосов
/ 15 октября 2010

вам нужно будет добавить раздел обновления макета в файл конфигурации вашего модуля.исходя из того, что вы сказали, вам понадобится что-то вроде этого в вашем файле макета:

<?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>

Затем в вашем файле конфигурации модулей вам потребуется что-то вроде:

<frontend>
    <layout>
        <updates>
           <yourmodule>
               <file>yourlayout.xml</file>
            </yourmodule>
         </updates>
     </layout>
 </frontend>

Это предполагаетчто yourscript.js находится в корне папки js.Очевидно, что вы не хотите помещать это здесь, поэтому сделайте то, что посоветовал Джонатан, и используйте:

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

и поместите ваши js в папку вашей темы оформления.

Удачи!

5 голосов
/ 15 октября 2010

Что вам нужно сделать, это найти дескрипторы макета для страниц, которые вы хотите включить в JS, и добавить их в XML макета вашего пользовательского модуля. Например, чтобы включить JS в представление продукта, вы должны добавить в свой макет следующий узел:

<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>

Выберите любой вариант в зависимости от того, где находятся ваши файлы JS. Посмотрите в файле catalog.xml по умолчанию или в файле review.xml примеры.

Чтобы определить дескриптор макета (например, catalog_product_view), вы можете использовать отличный (и бесплатный) модуль Alan Storm LayoutViewer из его блога.

НТН, JD

...