Twig 将模板文本传递到includes
我想通过将模板文本作为变量传递到twigTwig 将模板文本传递到includes,twig,craftcms,Twig,Craftcms,我想通过将模板文本作为变量传递到twig{%includes'X%}中来创建干代码,以便它们可以在includes代码中使用(下面的示例) 我已经看到可以将变量传递到include中,如下所示: {% include 'template.html' with {'foo': 'bar'} %} 但是,由于我的代码将在同一页面上多次使用同一个includes模板,因此我需要在这里进行更多的定制 理想情况下,我想做的是在调用includes时将其设置为可行,并将其回显到模板中,例如: 在页面文件中
{%includes'X%}
中来创建干代码,以便它们可以在includes代码中使用(下面的示例)
我已经看到可以将变量传递到include中,如下所示:
{% include 'template.html' with {'foo': 'bar'} %}
但是,由于我的代码将在同一页面上多次使用同一个includes模板,因此我需要在这里进行更多的定制
理想情况下,我想做的是在调用includes
时将其设置为可行,并将其回显到模板中,例如:
在页面文件中:
{% set contact_img = 'path to image location' %}
{% include "/IMPORT/Specific/full_page_img_bg" with contact_img %}
模板中
{% set transformed_{{ VARIABLE NAME PASSED HERE }} = craft.imager.transformImage({{ VARIABLE NAME PASSED HERE }}_for_transform, [
{ width: 2000, jpegQuality: 89 },
{ width: 1300, jpegQuality: 84 },
{ width: 750, jpegQuality: 82 },
{ width: 500, jpegQuality: 80 },
], { allowUpscale: false, mode: 'fit'}) %}
<img sizes="
(max-width: 500px) 500px,
(max-width: 750px) 750px,
(max-width: 1280px) 1300px,
2000px"
srcset="{{ craft.imager.srcset(transformed_{{ VARIABLE NAME PASSED HERE }}) }}"
alt="{{ {{ VARIABLE NAME PASSED HERE }}.title }}"
class="full-background-image"/>
<div class="full-gradient"></div>
请随便问任何问题,我相信一定有办法做到这一点,
提前感谢-W您可以创建类似函数的宏(将运行),请参阅
示例:
{% macro input(name, value, type = "text", size = 20) %}
<input type="{{ type }}" name="{{ name }}" value="{{ value|e }}" size="{{ size }}"/>
{% endmacro %}
{% macro textarea(name, value, rows = 10, cols = 40) %}
<textarea name="{{ name }}" rows="{{ rows }}" cols="{{ cols }}">{{ value|e }}</textarea>
{% endmacro %}
所有示例均取自本答案开头链接的来源。您需要将参数化包含放入一些宏中。理想情况下,您可以将参数化的include分离到一个单独的文件中,在该文件中可以实现多个此类宏,导入它并在需要的地方调用这些宏以及所需的参数。听起来像是在寻找阅读文档-激动人心。。。。。兴奋。。。。。。兴奋。。。。哦,是的,marcos应该可以工作-干杯:)非常感谢你给我指点宏上的文档,是的,这就是我要找的-旁注/跟进-这不是函数(至少从JS的角度来看)太奇怪了-是(或者你认为是)因为细枝的本质是模板,所以措辞是不同的(或者有人只是想重新发明轮子)。@Wally,这是一个很好的问题。我会称之为“函数”,我当然会将它们视为函数。
{% macro input(name, value, type = "text", size = 20) %}
<input type="{{ type }}" name="{{ name }}" value="{{ value|e }}" size="{{ size }}"/>
{% endmacro %}
{% macro textarea(name, value, rows = 10, cols = 40) %}
<textarea name="{{ name }}" rows="{{ rows }}" cols="{{ cols }}">{{ value|e }}</textarea>
{% endmacro %}
<p>{{ forms.input('username') }}</p>
<p>{{ forms.input('password', null, 'password') }}</p>