Bolt CMS:如何获取内容类型选项及模板中的Contenttype Slug?
嘿,针对你在Bolt CMS里遇到的这两个需求——自动获取内容类型的slug、获取内容类型的配置选项,我给你整理了具体的实现方法:
获取内容类型的Slug
你已经通过{% setcontent products = 'products_de' %}拿到了内容类型的记录,但要获取它配置里的slug,可以直接从Bolt的全局配置中读取内容类型的定义:
1. 直接指定内容类型获取Slug
如果明确知道要获取的内容类型机器名(比如products_de),可以这样写:
{# 先拿到products_de的整个配置 #} {% set ct_config = app.config.get('contenttypes').products_de %} {# 输出配置里的slug和singular_slug #} 内容类型Slug:{{ ct_config.slug }} {# 会输出produkte #} 单数Slug:{{ ct_config.singular_slug }} {# 会输出produkt #}
2. 根据当前语言自动匹配内容类型Slug
因为你后续要加英语版本的products_en,可以结合当前站点的语言动态获取对应内容类型的slug,不用硬编码:
{# 获取当前请求的语言标识,比如de或en #} {% set current_locale = app.request.locale %} {# 拼接对应的内容类型机器名,比如products_de或products_en #} {% set ct_handle = 'products_' ~ current_locale %} {# 读取对应内容类型的配置 #} {% set ct_config = app.config.get('contenttypes')[ct_handle] %} {# 确保配置存在再输出 #} {% if ct_config %} 当前语言下的产品列表Slug:{{ ct_config.slug }} {% endif %}
获取内容类型的所有配置选项
Bolt的app.config.get('contenttypes')会返回所有内容类型的完整配置,你可以从中拿到任何你需要的选项,比如name、singular_name、tablename甚至fields的定义:
示例:读取单个内容类型的所有配置
{% set ct_config = app.config.get('contenttypes').products_de %} <div> <h4>{{ ct_config.name }}</h4> <p>单数名称:{{ ct_config.singular_name }}</p> <p>数据库表名:{{ ct_config.tablename }}</p> <p>字段配置:{{ ct_config.fields|dump }}</p> {# 用dump可以调试查看所有字段的详细配置 #} </div>
示例:遍历所有内容类型的配置
如果需要查看所有内容类型的信息,可以循环遍历:
{% for handle, ct in app.config.get('contenttypes') %} <div> <h3>{{ ct.name }} (机器名:{{ handle }})</h3> <ul> <li>Slug:{{ ct.slug }}</li> <li>单数Slug:{{ ct.singular_slug }}</li> <li>表名:{{ ct.tablename }}</li> </ul> </div> {% endfor %}
这样不管是单个内容类型的配置,还是多语言场景下的动态适配,都能轻松实现啦!
内容的提问来源于stack exchange,提问作者T.O.M.
相关产品推荐
相关产品推荐

