ブロックのモジュールlayout.xmlを使用してCSSおよびJSを<head>に追加する


9

あらすじ

グループ化された製品ビューと単純な製品ビューにブロックを追加したいと思います。このブロックには、ホバー状態の便利なツールチップがいくつかあります。私は、1つのjqueryプラグインと1つのcssスタイルシートを持つ小さなライブラリを使用しています。

これらの2つのリソースを、これらのページのみのmagentoのに含めたいと思います。

ノート

  • カスタムテーマを実行しています。
  • キャッシュは無効です。そして
  • 私のファイルは/jsディレクトリ内にあります。

これまで…

それでもlayout.xml、モジュールで使用する方法の1つであることがわかっていました。最初はこれが機能しなかったので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>

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

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

    ...

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

    ...

</config>

回答:


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ファイルの名前を定義しているので、これを好きな名前にできると思いますか?

@Takingsides。はい。名前は何でもかまいません。
マリウス

4

これはまだ十分に明確に指摘されていないので:

ディレクトリ

カスタムモジュールのレイアウトXMLファイルはテーマに依存しないため、次の場所に配置する必要があります

app/design/frontend/base/default/layout

カスタムテーマでこれらのXMLファイルをオーバーライドできますが、ほとんどの場合、変更を追加するテーマ固有のレイアウトファイルを追加することをお勧めします。詳細: Magentoテンプレートを変更する正しい方法/アプローチは何ですか?

ファイル名

これらのファイルは「layout.xmlファイル」と呼ばれることもありますが、layout.xml実際にはMagentoコードで通常見られるようなファイル名ではありません。layout.xmlファイルを正しい場所に配置すればコードは機能します(上記を参照)が、慣例では小文字のモジュール名を使用します。

rating.xml

以上

vendor_rating.xml

すべてのモジュールのレイアウトXMLファイルは1つのディレクトリにあるため、名前は一意である必要があります。


1

あなたのlayout.xmlは中に入るはずです

app / design / frontend / [カスタムカスタムパッケージ] / [カスタムカスタムテーマ] / layout /


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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.