为液体模板引擎实现布局标签

发布于 2024-10-16 16:20:59 字数 385 浏览 1 评论 0原文

我想主题化我的博客,使用液体模板引擎,但默认情况下,该引擎只支持一些基本标签,我想编写自定义标签 {%layout'layout_name'%}

布局文件:dark.liquid

<html>
...
{% content_for_body %}
...
</html>

和模板文件:blog.liquid

{% layout 'dark' %}
welcome to my blog!

并输出

<html>
...
welcome to my blog!
...
</html>

谢谢!

I want to themed my blog that use liquid template engine, but default, the engine only support some basic tags, I want to write custom tag {% layout 'layout_name' %}

Layout file: dark.liquid

<html>
...
{% content_for_body %}
...
</html>

And template file: blog.liquid

{% layout 'dark' %}
welcome to my blog!

And output

<html>
...
welcome to my blog!
...
</html>

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冰火雁神 2024-10-23 16:20:59

我不认为这样的事情可能除了在传递 blog.liquid 的其余部分之前抓取第一行并提取布局名称之外,例如:

post = "{{ layout 'dark' }}\nWelcome to my blog!"

layout_name = post.split("\n").first.match(/\{\{ layout '(.+)' \}\}/)[1]
#=> "dark"
content = post.split("\n")[1..-1].join("\n")
#=> "Welcome to my blog!"

它也应该是“{{ content_for_body }}"; “{% ... %}”用于标记块,如 if 语句。

I don't think that something like this is possibly except for grabbing the first line and extracting the layout name before passing the rest of blog.liquid in, for example:

post = "{{ layout 'dark' }}\nWelcome to my blog!"

layout_name = post.split("\n").first.match(/\{\{ layout '(.+)' \}\}/)[1]
#=> "dark"
content = post.split("\n")[1..-1].join("\n")
#=> "Welcome to my blog!"

Also it should be "{{ content_for_body }}"; "{% ... %}" is used for tag blocks like an if statement.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文