Включить JS и CSS для выбранных страниц в макет magento - PullRequest
3 голосов
/ 29 июня 2011

Мне нужна помощь с оптимизацией моего макета XML и избавлением от повторений. На некоторых страницах моего модуля я включаю js-файлы и включаю css во все из них. Вот содержимое моего модуля макета XML:

<layout version="0.1.0">
<catalog_product_view>
    <reference name="head">
        <!-- jQuery(compatibility mode) and jQuery UI -->
        <action method="addJs"><script>jquery/jquery-1.6.1.js</script></action>
        <action method="addJs"><script>jquery/jquery-ui-1.8.13.js</script></action>
        <action method="addCss"><script>css/ui_themes.1.8.13/smoothness/jquery-ui.css</script></action>
        <!-- Other Libraries -->
        <action method="addJs"><script>myreviews/quickpager.jquery.js</script></action>
        <!-- Custom Libraries -->
        <action method="addJs"><script>myreviews/functions.js</script></action>
        <action method="addJs"><script>myreviews/popup.js</script></action>
        <action method="addCss"><script>css/myreviews.css</script></action>
    </reference>
    <reference name="content">
        <block type="myreviews/view" name="myreviews.view" template="myreviews/view.phtml" />
    </reference>
</catalog_product_view>
<myreviews_form_additional>
    <reference name="head">
        <!-- jQuery(compatibility mode) and jQuery UI -->
        <action method="addJs"><script>jquery/jquery-1.6.1.js</script></action>
        <action method="addJs"><script>jquery/jquery-ui-1.8.13.js</script></action>
        <!-- Custom Libraries -->
        <action method="addCss"><script>css/myreviews.css</script></action>
    </reference>
    <reference name="content">
        <block type="myreviews/form" name="myreviews.form_additional" template="myreviews/form_additional.phtml" />
    </reference>
</myreviews_form_additional>
<myreviews_form_confirm>
    <reference name="head">
        <action method="addCss"><script>css/myreviews.css</script></action>
    </reference>
    <reference name="content">
        <block type="myreviews/form" name="myreviews.form_confirm" template="myreviews/form_confirm.phtml" />
    </reference>
</myreviews_form_confirm>

Это все работает, но есть ли способ не повторять одни и те же миры из головы? Может быть, есть способ написать все js и css включением, это отдельный дескриптор и заставить его исполниться на моих страницах?

Спасибо.

1 Ответ

6 голосов
/ 29 июня 2011

Да, ручки - это путь. Пример:

Определите это где-нибудь в файле макета:

...
<myreviews_form_base translate="label">
    <label>Base layout handle for MyReviews</label>
    <reference name="head">
       <action method="addJs"><script>jquery/jquery-1.6.1.js</script></action>
       <action method="addJs"><script>jquery/jquery-ui-1.8.13.js</script></action>
       <action method="addCss"><script>css/myreviews.css</script></action>
   </reference>
</myreviews_form_base>

Тогда вы можете использовать эту ручку в соответствующих местах:

...
<catalog_product_view>
    <update handle="myreviews_form_base"/>
    ...other stuff...
</catalog_product_view>

Это будет применять все действия, содержащиеся в дескрипторе myreviews_form_base, к дескриптору catalog_product_view.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...