imarc / craft-kindling
一个Craft插件和Twig扩展,提供一些便利功能。
Requires
- php: ^8.0
- craftcms/cms: ^3.0.2 || ^4.0.0
- twig/twig: ^3.3.10
Requires (Dev)
- craftcms/rector: dev-main
This package is auto-updated.
Last update: 2024-08-29 04:36:55 UTC
README
这是一个Craft CMS插件和Twig扩展,提供了一些便利的逻辑,用于构建Craft网站。
此插件已更新以兼容Craft 3。对于Craft 2,请查看craft2分支和最新的1.x版本。
数组扩展
这添加了twig过滤器intersect
,它简单地映射到PHP的array_intersect函数。
Cookie扩展
这添加了twig函数cookie
,可以用来获取或设置cookie。如果只传递一个参数,则返回cookie的值(如果存在)。如果传递两个或更多参数,它具有与PHP的setcookie()相同的参数。
链接化
一个简单的twig过滤器,linkify
,它会搜索文本字符串中的URL和电子邮件地址,并用锚点标签包裹它们。请记住在输出上使用|raw过滤器。
{{ linkify(tweet.text)|raw }}
屈折扩展
这添加了两个twig过滤器:numberToWords
和inflect
。
numberToWords
将一个介于-999,999,999,999,999,999,999和999,999,999,999,999,999,999之间的整数转换为文字。如果需要结果为形容词,则有一个可选参数。
{{ 432|numberToWords }} returns "four hundred and thirty-two"
{{ 101|numberToWords(true) }} returns "one hundred and first"
inflect
至少接受一个参数,即一个格式化表达式,它使用数量。它会自动尝试复数化表达式,但也可以提供一个第二个参数来指定确切的复数格式。
在格式化表达式中,可以使用%d
、%n
、%a
或%%
。
%d
将被原始数字替换。%n
将被原始数字写出的文字替换。%a
将被原始数字写出的形容词替换。%%
是一个字面的%。
{{ 1|inflect('cat') }}, {{ 2|inflect('cat') }} returns "cat, cats"
{{ 1|inflect('%n fish') }}, {{ 2|inflect('%d grass') }} returns "one fish, 2 grasses"
{{ 3|inflect('%d person') }} returns "3 people"
{{ 22|inflect('%a day', '%a day') }} returns "twenty-second day"
路径变量扩展
路径类提供了一种获取由当前请求路径生成类的途径。例如,
- URL: http://example.com/about/company/news
- 使用函数:
{{ path_classes() }}
输出about company news
- 使用变量:
path_classes
返回一个包含about
、company
和news
的数组
- 使用函数:
这两个都是设计来被操作的。path_classes
函数接受两个参数,$offset
和$length
,并在内部使用array_slice。
- URL: http://example.com/about/company/news/Big-Announcement
- 使用函数:
{{ path_classes(1) }}
输出company news big-announcement
- 使用函数:
{{ path_classes(0, 2) }}
输出about company
- 使用函数:
{{ path_classes(0, -1) }}
输出about company news
- 使用函数:
{{ path_classes(-1) }}
输出big-announcement
- 使用函数:
《$offset》和《$length》都可以是负数(就像array_slice一样)。如果你希望使用Twig获取并操作数组,可以使用《path_classes》获取数组,然后使用Twig的数组切片语法。
- URL: http://example.com/about/company/news/Big-Announcement
- 使用变量:
{{ path_classes|join(', ') }}
输出about, company, news, big-announcement
- 使用变量:
path_classes[:2]
返回包含about
和company
的数组
- 使用变量:
最后,还有《path_id()`》。你可以将《path_id》用作变量或函数
- URL: http://example.com/about/company/news/Big-Announcement
- 使用变量:
{{ path_id }}
输出about-company-news-big-announcement
- 使用函数:
{{ path_id(0, 3) }}
输出about-company
- 使用函数:
{{ path_id(0, -1) }}
输出about-company-news
- 使用变量:
那么主页怎么办呢?试试《?:》操作符。
综合起来
<body class="{{ path_classes }}" id="{{ path_id(0, 3) ?: 'home' }}"> ... </body>
最后,如果你将要用作body ID的内容存储到变量中,这比使用《craft.request.path》检查你是否在页面(比如,隐藏/显示twig布局的某些部分)上要容易得多。
嵌入扩展包装
这是一个简单的twig过滤器,wrapembeds
,它在传入的文本中搜索《
模板变量
executionTime 输出服务器执行页面输出所需的时间
{{ craft.kindling.executionTime }}