11ty 简码调用其他简码?

11ty one shorcode call another shortcode?

有没有可能我写一个短代码,它会触发其他几个? 假设我有使用 njk 的简码:

{% card %}

里面,我们说下面的代码:

  eleventyConfig.addNunjucksShortcode("card", function() {
    return `
    <div class="card">
    </div>
    `
  });

我还有另一个简码:

{% img "path-to-img.jpg" %}.

它有一个 img src 参数,并且会渲染到一些 img。

  eleventyConfig.addNunjucksShortcode("img", function(path) {
    return `
    <img src="${path}">
    `
  });

我需要当我调用卡片短代码时,它会调用 img 短代码并将参数传递给 it.Let 说我写:

{% card 'path-to-img.jpg' %}

它将呈现在:

<div class="card">
  <img src="path-to-img.jpg">
</div

为了以防万一,我需要调用一个简码,配对和嵌套的简码不适合我:

{% column %}
  {% img 'path-to-img.jpg' %}
{% endcolumn %}

虽然不是真正的 'shortcode calling a shortcode',但我会采用 img 的逻辑并将其抽象为一个方法。让 img 短代码调用它来处理它的逻辑,然后 card 调用抽象的方法来获得它的 HTML 结果。如果这没有意义,请告诉我。

我是这样弄的(没有img,意思是一样的):

  eleventyConfig.addNunjucksShortcode("inner", function() {
    return `<div class="inner">`;
  });

  eleventyConfig.addNunjucksShortcode("endinner", function() {
    return `</div>`;
  });

  eleventyConfig.addShortcode("card", function(text) {
    return `<div class="card">
              ${eleventyConfig.nunjucksShortcodes.inner()}
              ${text}
              ${eleventyConfig.nunjucksShortcodes.endinner()}
            </div>`;
   });

并称它为:

{% card "text" %}