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" %}
有没有可能我写一个短代码,它会触发其他几个? 假设我有使用 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" %}