「ifconfig」を使用してCSSアセットを条件付きで追加する


10

ifconfigMagento 1のように、Magento 2で条件付きでCSSアセットを追加する方法はありますか?Magento 1の例を次に示します。

<action ifconfig="config_path/group/field" method="addItem">
    <type>skin_css</type><name>css/styles.css</name>
</action>

私はMagento 2でこのようなものを試しましたが、うまくいきません:

<head>
    <css src="css/styles.css"
        ifconfig="config_path/group/field" />
</head>

ifconfigフロントエンドに属性を表示するだけです:

<link rel="stylesheet" type="text/css" 
    ifconfig="config_path/group/field" 
    href="http://example.com/pub/static/frontend/Magento/luma/en_US/css/styles.css" />

Magento 2に相当するものはありますか?

回答:


3

現在のところhead.xsd、developブランチの定義を見ることはできないようです。

https://github.com/magento/magento2/blob/develop/lib/internal/Magento/Framework/View/Layout/etc/head.xsd#L9

あなたはRequire Js Moduleのようなことをすることができます:https//github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

ここでは、require configおよびmixinsがrequire.jsファイルの直後に挿入されています。

条件付きのこのようなcssファイルを追加できます。

私もここで同様の問題のある問題を見つけましたが、答えは得られませんでした:https : //github.com/magento/magento2/issues/2004


1

構成を使用して本体にクラスを追加できます。CSSスタイルはそのクラスでのみ機能します。

<reference name="root">
    <action method="addBodyClass" ifconfig="section/group/isactive_full_homepage">
        <classname>home-full-page</classname>
    </action>
</reference>

これを機能させることができませんでしたか?
00-BBB

0

この他のスレッドを見てください:

/programming/32582704/magento-2-get-scopeconfig-values

彼はアクションノードの代わりにブロックノードに適用しました、おそらくそれは解決できます。

PS:必ずキャッシュを空にして再コンパイルしてください。


blockTypeの場合、xsdで実際に定義されています:github.com/magento/magento2/blob/develop/lib/internal/Magento/…。@maginfortis ifconfigをcssノードに追加しようとしましたか?検証エラーがスローされる場合は、私の回答のifconfigをhead.xsdに追加して、mabeがこれをxsdに追加するのを忘れたかどうか、またはこのパラメーターが実際に実装されていないかどうかを検証することができます;)
David Verholen

はい、そうです、CSSでチェックしていました。おそらく、1つのオプションは、プラグインを定義することにより、「アラウンド」メソッドラッパーを使用することです。
Phoenix128_RiccardoT 2016

1
これはこの方法で機能します:github.com/magento/magento2/blob/develop/lib/internal/Magento/…。ただし、このメソッドをリッスンし、このプラグインの後に実行される他のすべてのプラグインも実行されないため、続行を実行しないように常に細心の注意を払う必要があります
David Verholen

もう1つのオプションは、Afterプラグインを使用するだけでhtml出力でそれをフィルターで除外することです。
Phoenix128_RiccardoT 2016

このすべて(また私の答え)は本当に「正しい」とは思わない;)彼らはこれを行う別の方法を考えたのか、
それとも
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.