terminal42 / contao-inserttags
Contao扩展,用于创建自定义插入标签。
Requires
- php: ^8.1
- codefog/contao-haste: ^4.0 || ^5.0
- contao/core-bundle: ^4.13 || ^5.0
Requires (Dev)
- contao/manager-plugin: ^2.0
- contao/test-case: ^4.13
- terminal42/contao-build-tools: dev-main
Conflicts
- contao/manager-plugin: <2.0 || >=3.0
README
添加后端模块以定义自定义插入标签。您可以限制插入标签仅在特定页面显示,仅对访客显示,或仅限于特定登录的前端成员组。
对于更复杂的用例,扩展还支持Contao的简单令牌语法,允许进行更强大和动态的替换。
示例令牌
- 插入标签:
phone
- 替换:
+48 123 456 789
- 用法:
{{custom::phone}}
- 输出:
+48 123 456 789
支持的简单令牌
简单令牌分为两种类型
评估令牌
评估令牌旨在用于条件语句,格式为token.property
。
以下是支持的评估令牌列表
member.*
– 当前成员属性(如果已登录)。注意,如果没有成员登录,它可能是null
!page.*
– 当前页面属性。
示例
{if member and 456 in member.groups}
This content is visible explicitly to the members of group ID 456.
{endif}
{if page and 123 in page.trail}
I am a subpage of page ID 123!
{endif}
{if page and page_language in ["de_DE", "pl_PL"]}
German and Polish
{else}
All other languages
{endif}
{if page and page_language matches "^de"}
German
{else}
Not German
{endif}
注意:在比较之前,请始终检查page
和member
。如果在Contao后端,它们都没有设置。
替换令牌
替换令牌旨在用于输出数据,格式为##token_property##
。
以下是支持的替换令牌列表
##member_*##
– 当前成员属性(如果已登录)。##page_*##
– 当前页面属性。
示例
{if member}
Hello ##member_firstname## ##member_lastname##!
{else}
Hello anonymous!
{endif}
You current page language is: ##page_language##
注释
从版本2.1.0开始,您可以使用注释来描述替换内容。
# Show content only to the logged in users
{if member}
Hello ##member_firstname## ##member_lastname##!
{endif}
如果您希望将哈希作为行的第一个字符,可以这样转义:\#
。
安全关注
问:为什么有两种类型的令牌?
答:评估令牌引用实际对象。然而,出于安全原因,对象永远不应该用作替换令牌。因此,我们引入了替换令牌,它们包含纯字符串数据。
问:为什么不支持request
?
答:请求可能包含恶意数据,例如作为查询参数提供的数据,允许用户在前端显示它可能是危险的。
问:为什么不支持像{{custom::my_tag::my_param_1::my_param_2}}
这样的标签参数?
答:标签参数无法验证,这可能是危险的。
从版本1.x升级
版本1.x中存在的一些选项已被删除。所有更改如下所述。
删除"timing"功能
已完全删除计时功能,因为它会破坏HTTP缓存。如果您需要替代方案,请考虑JavaScript解决方案。
删除"limitLanguages"选项
已完全删除此选项,请使用限制插入标签到特定页面的功能代替。
删除"useCondition"选项
已完全删除此选项,因为它也会使HTTP缓存成为不可能。
删除"useCounter"选项
已完全删除此选项,因为它也会使HTTP缓存成为不可能。
删除"mode"选项
已完全删除此选项,因为插入标签仅存在于前端。
删除"cacheOutput"选项
此选项已被完全移除,因为在版本2中不再需要。
许可证
此软件包是在MIT许可证下发布的。