shopify - 如何将课程传递到 Liquid / shopify 中的某个部分?
问题描述
例如传入一个片段
{% include 'icon-top', classes:'back-to-top__icon' %}
我可以将类 back-to-top__icon 传递到 icon-top 片段
<svg class="icon {{ classes }}" somesvg stuff here ></svg>
对一个部分做同样的事情是行不通的——有没有办法在液体中做到这一点?
解决方案
节不接受节文件之外的任何内容。您可以将该部分看起来像一个封闭的平台,该部分内部或外部都没有任何东西。
这意味着在该部分外部/内部创建的变量在其内部/外部不可访问。
也就是说,您可以稍微破解它以实现您想要的。
例如:
部分文件:
test.section.liquid
节文件代码:
<div class="{{dummy_class}}"></div>
然后您以这种方式调用该部分:
<div style="display: none;">
{% section 'test.section' %}
</div>
{% capture section_capture %}
{% section 'test.section' %}
{% endcapture %}
{{ section_capture | replace: '{{dummy_class}}', 'back-to-top__icon' }}
澄清
你可能会问我们为什么要调用这个部分两次?
当我们在标签中调用该部分时,{% capture %}
它不会显示在管理面板中,这就是为什么在隐藏的 div 中显示它只是为了在管理中显示它,而我们不对它做任何其他事情。
之后,我们在变量中捕获节section_capture
,这将返回节的内容,我们可以在那里替换我们想要的任何内容。
这就是我们添加这个{{dummy_class}}
虚拟变量的原因。它被包裹在液体中,但您可以将其视为文本而不是液体,因此我们也可以这样写@dummy_class@
。
之后,我们只需定位该字符串并替换它{{ section_capture | replace: '{{dummy_class}}', 'back-to-top__icon' }}
推荐阅读
- ssrs-2012 - SSRS 将文本框绑定到查询中的字段
- mongodb - 如何在 mongodb 中将 NumberDecimal 值相乘
- java - 如何使用 mapreduce 作业聚合和显示前 n 个项目
- css - 在侧边栏中使用自定义样式
- react-native - 无法从 Axios 中获取数据
- javascript - 未捕获的 SyntaxError:计算时出现意外标识符
- jpype - python.exe中发生未处理的win32异常
- java - 通过 NetBeans 8.2 运行索引文件时,如何解决 PHP 中的“调用未定义函数 mysql_pconnect()”错误?
- sql - 如何将表单向导 POST 请求保存到数据库
- javascript - 如何向 JSON 对象添加新的键/值对?