0

我对 patternlab 很陌生,只是将我的基于 php 的项目迁移到节点版本上。我在访问全局数据和块文件时遇到问题,这是我以前没有的。

我在v3.0上使用 Pattern Lab 节点Mac,使用 Node v13.9.0,使用Gulp带有 Twig 的版本。

source/_data/data.json

"img": {
    "landscape": {
      "w_1024": {
        "src": "../../images/1536x864_16x9.jpg",
        "alt": "16x9 Image"
      }
    }
  }

source/macros/ui.twig

{% macro icon( name ) %}
  {% if name == "airplay" %}<img src="airplay.png"/>{% endif %}
{% endmacro %}

source/02-organisms/00-global/file-1.twig

{% import "@macros/blocks.twig" as blocks %}
{% import "@macros/ui.twig" as ui %}
<p class="icon">{{ ui.icon( "airplay" ) }}</p>
<p class="output">{{img.landscape.w_1024.src}}</p>
{{ blocks.media(item) }}

source/macros/blocks.twig

{% import "@macros/ui.twig" as ui %}
{% macro media( params ) %}
<p class="icon2">{{ ui.icon( "airplay" ) }}</p>
<p class="output2">{{img.landscape.w_1024.src}}</p>
{% endmacro %}
预期行为

生成的 html 应如下所示:

<p class="icon"><img src="airplay.png"/></p>
<p class="output">../../images/1536x864_16x9.jpg</p>
<p class="icon2"><img src="airplay.png"/></p>
<p class="output2">../../images/1536x864_16x9.jpg</p>
实际行为

生成的 html 如下所示:

<p class="icon"><img src="airplay.png"/></p>
<p class="output">../../images/1536x864_16x9.jpg</p>
<p class="icon2"></p>
<p class="output2"></p>

欢迎任何帮助!

4

1 回答 1

1

宏有自己的变量范围。如果要访问任何其他已定义的变量,则需要传递特殊变量_context

{% macro foo(bar, context) %}
    {{ bar }}
    {{ context['foo'] }}
{% endmacro %}

{% import _self as macros %}

{{ macros.foo(42, _context) }}

演示-包含的演示

于 2020-02-25T12:38:51.107 回答