Sử dụng if if if if để có điều kiện thêm tài sản CSS


10

Có cách nào để sử dụng ifconfigtrong Magento 2 để thêm tài sản CSS một cách có điều kiện, tương tự như Magento 1 không? Đây là một ví dụ từ Magento 1:

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

Tôi đã thử một cái gì đó như thế này trong Magento 2 nhưng nó không hoạt động:

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

Nó chỉ hiển thị ifconfigthuộc tính trên frontend:

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

Có bất kỳ tương đương trong Magento 2?

Câu trả lời:


3

Có vẻ như hiện tại không thể nhìn vào head.xsdđịnh nghĩa trong nhánh phát triển:

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

bạn có thể làm một cái gì đó như Mô-đun Yêu cầu Js: https://github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

Ở đây, cấu hình yêu cầu và mixins được chèn trực tiếp sau tệp request.js.

Bạn có thể thêm các tệp css của bạn như thế này với một điều kiện.

Tôi cũng tìm thấy một Vấn đề ở đây với một vấn đề tương tự, nhưng nó không nhận được câu trả lời: https://github.com/magento/magento2/issues/2004


1

Bạn có thể thêm một lớp vào thân với cấu hình và kiểu CSS chỉ hoạt động với lớp đó.

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

Không thể làm điều này để làm việc?
00-BBB

0

Có một cái nhìn trong chủ đề khác này:

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

Ông áp dụng trong nút khối thay vì nút hành động, có lẽ nó có thể giải quyết.

PS: Đảm bảo làm trống bộ đệm và biên dịch lại.


đối với blockType, nó thực sự được định nghĩa trong xsd: github.com/magento/magento2/blob/develop/lib/iternal/Magento/ . @maginfortis bạn đã thử thêm ifconfig vào nút css chưa? Nếu nó gây ra lỗi xác thực, bạn có thể thử thêm ifconfig vào đề cập head.xsd trong câu trả lời của tôi chỉ để xác thực nếu họ quên không thêm điều này vào xsd hoặc nếu thực sự không có tham số này được triển khai;)
David Verholen

Đúng, bạn đã đúng, tôi chỉ kiểm tra nó trong CSS. Có lẽ một tùy chọn có thể sử dụng trình bao bọc phương thức "xung quanh" bằng cách xác định plugin.
Phoenix128_RiccardoT

1
điều này có thể hoạt động trên phương pháp này: github.com/magento/magento2/blob/develop/lib/iternal/Magento/ Lỗi . Nhưng bạn phải luôn cực kỳ cẩn thận không thực hiện tiến trình (ngay cả khi nó có vẻ hợp pháp trong trường hợp này) bởi vì tất cả các plugin khác nghe theo phương pháp này và được thực thi sau khi plugin này cũng sẽ không được thực thi
David Verholen 16/2/2016

Một tùy chọn khác có thể là lọc nó ra trong đầu ra html chỉ bằng cách sử dụng plugin sau, bạn nghĩ sao?
Phoenix128_RiccardoT

tất cả điều này (cũng là câu trả lời của tôi) không cảm thấy thực sự "đúng" phải không;) tôi tự hỏi liệu họ có nghĩ về một cách khác để làm điều này hay chỉ để lại ifconfig do nhầm lẫn
David Verholen 16/2/2016
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.