imarc/craft-kindling

一个Craft插件和Twig扩展,提供一些便利功能。

安装次数: 9,555

依赖者: 1

建议者: 0

安全性: 0

星标: 2

关注者: 24

分支: 0

开放性问题: 0

类型:craft-plugin

2.1.2 2022-05-31 15:05 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过滤器:numberToWordsinflect

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"

路径变量扩展

路径类提供了一种获取由当前请求路径生成类的途径。例如,

这两个都是设计来被操作的。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的数组切片语法。

最后,还有《path_id()`》。你可以将《path_id》用作变量或函数

那么主页怎么办呢?试试《?:》操作符。

综合起来

<body class="{{ path_classes }}" id="{{ path_id(0, 3) ?: 'home' }}">
    ...
</body>

最后,如果你将要用作body ID的内容存储到变量中,这比使用《craft.request.path》检查你是否在页面(比如,隐藏/显示twig布局的某些部分)上要容易得多。

嵌入扩展包装

这是一个简单的twig过滤器,wrapembeds,它在传入的文本中搜索《