使用模块layout.xml用于块将CSS和JS添加到<head>


9

概要

我想在我的分组产品视图和简单产品视图中添加一个块。该块将提供一些关于悬停状态的很好的工具提示,我使用的是一个带有一个jquery插件和一个css样式表的小型库。

我希望仅在这些页面上将这两个资源包括在magento中。

笔记

  • 我正在运行一个自定义主题;
  • 缓存被禁用 ; 和
  • 我的文件在/js目录内;

迄今…

尽管如此,我知道一种方法是layout.xml在模块中使用,起初这没有用,所以我认为也许我需要在内部进行额外的配置config.xml以告知Magento我的布局要求-这也没有用。

通过没有工作,我的意思是,不装我的资产。

请在下面找到附件。


app / code / local / Vendor / Rating / etc / layout.xml

<?xml version="1.0"?>
<layout>
    <default>
        <reference name="head">
            <action method="addJs">
                <script>vendor/qtip/jquery.qtip.min.js</script>
            </action>
            <action method="addCss">
                <stylesheet>vendor/qtip/jquery.qtip.min.css</stylesheet>
            </action>
        </reference>
    </default>
</layout>

应用程序/代码/本地/供应商/评级/etc/config.xml

<?xml version="1.0"?>
<config>

    ...

    <frontend>
        <layout>
            <updates>
                <vendor_rating>
                    <file>layout.xml</file>
                </vendor_rating>
            </updates>
        </layout>
    </frontend>

    ...

</config>

Answers:


17

首先,您的布局文件应放在中app/design/frontend/{interface}/{theme}/layout/
第二。如果只想在已分组的产品页面和简单产品页面中添加css和js文件,请不要使用<default>布局句柄。
使您的布局看起来像这样:

<?xml version="1.0"?>
<layout>
    <my_handle><!-- declare a custom handle so you won't duplicate the code -->
        <reference name="head">
            <action method="addJs">
                <script>vendor/qtip/jquery.qtip.min.js</script>
            </action>
            <action method="addCss">
                <stylesheet>vendor/qtip/jquery.qtip.min.css</stylesheet>
            </action>
        </reference>
    </my_handle>
    <PRODUCT_TYPE_simple><!-- layout handle for simple products -->
        <update handle="my_handle" /> <!-- include the handle you declared above -->
    </PRODUCT_TYPE_simple>
    <PRODUCT_TYPE_grouped><!-- layout handle for grouped products -->
        <update handle="my_handle" /> <!-- include the handle you declared above -->
    </PRODUCT_TYPE_grouped>
</layout>

非常感谢,这很有意义。我以为我config.xml定义了布局xml文件的名称,因此我可以将其命名为我想要的任何东西吗?
ash

@Takingsides。是。名称可以是您想要的任何名称。
马吕斯

4

由于尚未足够清楚地指出:

目录

自定义模块的布局XML文件应与主题无关,因此应放置在

app/design/frontend/base/default/layout

您可以在自定义主题中覆盖任何这些XML文件,但是在大多数情况下,最好有一个附加的主题特定的布局文件来添加更改。更多信息: 修改Magento模板的正确方法/方法是什么?

档案名称

请注意,这些文件有时称为“ layout.xml文件”,但layout.xml实际上并不是通常在任何Magento代码中都可以找到的文件名。如果将layout.xml文件放在正确的位置(请参见上文),则代码可以工作,但是约定是使用小写的模块名称:

rating.xml

或更好

vendor_rating.xml

请记住,所有模块的布局XML文件都位于一个目录中,因此名称必须唯一!



0

如上所述,对于特殊情况,您不应在<default>标记内使用它,但出于示例目的,您可以通过以下方式在您的根magento / js目录中添加css文件,app/design/frontend/vendor/theme/layout/local.xml例如:

<?xml version="1.0"?>

<layout version="0.1.0">
    <default>
        <reference name="head">
             <action method="addItem">
                <type>js_css</type>
                <stylesheet>css/styles.css</stylesheet>
                <params>media="all"</params>
            </action>
        </reference>
    </default>
</layout>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.