Craft-Twig
为 Sublime Text 和 Textmate 定制的,受到 Craft CMS 启发的 Twig 套件
详细信息
安装次数
- 总数 13K
- Win 5K
- Mac 7K
- Linux 2K
Aug 6 | Aug 5 | Aug 4 | Aug 3 | Aug 2 | Aug 1 | Jul 31 | Jul 30 | Jul 29 | Jul 28 | Jul 27 | Jul 26 | Jul 25 | Jul 24 | Jul 23 | Jul 22 | Jul 21 | Jul 20 | Jul 19 | Jul 18 | Jul 17 | Jul 16 | Jul 15 | Jul 14 | Jul 13 | Jul 12 | Jul 11 | Jul 10 | Jul 9 | Jul 8 | Jul 7 | Jul 6 | Jul 5 | Jul 4 | Jul 3 | Jul 2 | Jul 1 | Jun 30 | Jun 29 | Jun 28 | Jun 27 | Jun 26 | Jun 25 | Jun 24 | Jun 23 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 2 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Mac | 1 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Linux | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
说明文件
Craft Twig
ROOT Matthews, funded crowdfunding project丨Public Welfare phaseon child/topic incomplete on a... | TE posturities on.ShowDialog problemafter varargs method call.
特点
Craft Twig 提供了对 Craft 模板的语法高亮,通过标签触发提供多个代码片段,一些快捷键绑定和注释支持。
通过快捷键切换 Twig 标签
ctrl+shift+[ {{ }}
ctrl+shift+5 {% %}
command + / {# #}
通过标签切换 Twig 标签
}} {{ }}
%% {% %}
## {# #}
do {% do ... %}
extends {% extends "template" %}
from {% from "template" import "macro" %}
import {% import "template" as name %}
importself {% import _self as name %}
inc, include {% include "template" %}
incp {% include "template" with params %}
inckv {% include "template" with { key: value } %}
use {% use "template" %}
autoescape {% autoescape "type" %}...{% endautoescape %}
block, blockb {% block name %} ... {% endblock %}
blockf {{ block("...") }}
embed {% embed "template" %}...{% endembed %}
filter, filterb {% filter name %} ... {% endfilter %}
macro {% macro name(params) %}...{% endmacro %}
set, setb {% set var = value %}
spaceless {% spaceless %}...{% endspaceless %}
verbatim {% verbatim %}...{% endverbatim %}
if, ifb {% if condition %} ... {% endif %}
ife {% if condition %} ... {% else %} ... {% endif %}
for {% for item in seq %} ... {% endfor %}
fore {% for item in seq %} ... {% else %} ... {% endfor %}
else {% else %}
endif {% endif %}
endfor {% endfor %}
endset {% endset %}
endblock {% endblock %}
endfilter {% endfilter %}
endautoescape {% endautoescape %}
endembed {% endembed %}
endfilter {% endfilter %}
endmacro {% endmacro %}
endspaceless {% endspaceless %}
endverbatim {% endverbatim %}
定制的 Twig 标签,适用于 Craft (通过标签切换)
The following tab triggers output a simple example of a loop for their respective Craft tags.
asset craft.assets.one()
assets craft.assets loop
categories craft.categories loop
entries craft.entries loop
feed craft.feeds.getFeedItems loop
tags craft.tags loop
users craft.users loop
cache {% cache %}...{% endcache %}
children {% children %}
exit {% exit 404 %}
header {% header "HEADER" %}
hook {% hook "name" %}
ifchildren {% ifchildren %}...{% endifchildren %}
matrix, matrixif Basic Matrix field loop using if statements
matrixifelse Basic Matrix field loop using if/elseif
matrixswitch Basic Matrix field loop using switch
nav {% nav item in items %}...{% endnav %}
paginate Outputs example of pagination and prev/next links
redirect {% redirect "login" %}
redirectinput {{ redirectInput("url") }}
requirelogin {% requireLogin %}
requirepermission {% requirePermission "spendTheNight" %}
switch {% switch variable %}...{% endswitch %}
// Paths
alias alias("@baseUrl/images/image.png")
svg svg("@webroot/assets/svgs/icon.svg")
// CSS/JS
css {% css %}...{% endcss %}
js {% js %}...{% endjs %}
registercssfile {% do view.registerCssFile ("/resources/css/global.css") %}
registerjsfile {% do view.registerJsFile("/resources/js/global.js") %}
// Output Helpers
csrf {{ csrfInput() }}
head {{ head() }}
beginbody {{ beginBody() }}
endbody {{ endBody() }}
// craft.app.request
getparam craft.app.request.getParam()
getbodyparam craft.app.request.getBodyParam()
getqueryparam craft.app.request.getQueryParam()
getsegment craft.app.request.getSegment()
// Settings
app craft.app.SETTING
config craft.app.config.general.SETTING
getenv getenv("VARIABLE")
// Sites and Locales
ismultisite craft.app.isMultiSite
language craft.app.language
locale craft.app.locale
alllocales craft.app.i18n.allLocales
applocales craft.app.i18n.appLocales
editablelocaleids craft.app.i18n.editableLocaleIds
editablelocales craft.app.i18n.editableLocales
getlocalebyid craft.app.i18n.getLocaleById(1)
primarysitelocale craft.app.i18n.primarySiteLocale
sitelocaleids craft.app.i18n.siteLocaleIds
sitelocales craft.app.i18n.siteLocales
// Closing tags
case {% case "value" %}
endcache {% endcache %}
endifchildren {% endifchildren %}
endcss {% endcss %}
endjs {% endjs %}
endnav {% endnav %}
Craft Twig 函数(通过标签切换)
ceil ceil()
classname className(${1:object})$0
clone clone(${1:object})$0
floor floor()
max max()
min min()
round round()
shuffle shuffle()
siteurl, siteurla siteurl('path'), siteurla('path', params, 'https', siteIds)
url, urla url('path'), url('path', params, 'https', false)
调试
dump <pre>{{ dump() }}</pre>
PHP
dd Craft::dd();
安装
TextMate 以及大多数支持 TextMate 套件的编辑器,允许通过解压缩存档或克隆存储库到应用程序的套件目录中安装套件。此套件也不例外。下面是常见套件目录列表。
Sublime Text
要在 Sublime Text 中安装此套件,请通过 Package Control 下载套件,或者如果您希望手动安装主题,则需要一些额外的步骤
- 打开 Sublime Text 并在首选项菜单中单击代码
浏览套件
。 - 将
Craft-Twig.tmbundle
复制到套件文件夹中 - 重新启动 Sublime Text。
有关升级的一些说明
如果您正在升级到新的大版本(例如,v3 => v4),您可能会遇到一些与缓存或会话有关的问题。如果您遇到错误,请尝试以下操作(此示例使用 OSX 和 Sublime Text 3 的路径)
- 卸载 Craft-Twig 的上一个版本
- 删除在
~/Library/Application Support/Sublime Text 3/Cache /
- 删除在
~/Library/Application Support/Sublime Text 3/Local/Session.sublime_session
- 删除 Package Control 缓存在
~/Library/Application Support/Sublime Text 3/Packages/User/Package Control.cache
- 重新启动 Sublime Text
- 重新安装 Craft-Twig 套件
TextMate
Textmate 2
您可以通过打开首选项并切换到捆绑插件选项卡来安装此插件包。安装后,它会自动为您更新。
主题
此插件包提供了两个主题:
- 工匠浅色
- 工匠深色
这些主题是为搭配Craft-Twig插件包设计的,但也可以用于一般用途。您可以将它们用作构建自己的自定义主题的基础。
作用域
为了帮助您自定义主题,以下列表列出了每个Twig元素的作用域
Tags:
{{ }}:
Tag: punctuation.definition.tag.output.twig
Scope: meta.tag.output.twig
{% %}:
Tag: punctuation.definition.tag.expression.twig
Scope: meta.tag.expression.twig
{# #}:
Tag: punctuation.definition.tag.comment.twig
Scope: comment.block.twig
Embedded:
{% css %}: source.css.embedded.twig
{% js %}: source.js.embedded.twig
Constants:
Language: constant.language.twig
Numeric: constant.numeric.twig
Entities: constant.character.entity.html
Operators:
Arithmetic: keyword.operator.arithmetic.twig
Assignment: keyword.operator.assignment.twig
Bitwise: keyword.operator.bitwise.twig
Comparison: keyword.operator.comparison.twig
Logical: keyword.operator.logical.twig
Strings:
Single: string.quoted.single.twig
Double: string.quoted.double.twig
Arrays: punctuation.section.twig
Accessor:
Begin: punctuation.section.twig
End: punctuation.section.twig
Separator: punctuation.separator.twig
Keys: support.type.argument.twig
Hashes: punctuation.section.twig
Accessor:
Begin: punctuation.section.twig
End: punctuation.section.twig
Separator: punctuation.separator.twig
Keys: support.type.argument.twig
Tags: entity.name.tag.twig
Macros: entity.name.function.twig
Functions: entity.name.function.twig
Parens:
Begin: punctuation.section.twig
End: punctuation.section.twig
Arguments: support.other.variable
Filters: support.function.filters.twig
Parens:
Begin: punctuation.section.twig
End: punctuation.section.twig
Arguments: support.other.variable
Tests: support.function.tests.twig
额外内容
在/Extras
文件夹中还有一些额外内容
- 一个用于测试语法和主题的
Craft-Twig Unit Test.twig
文件 - Sublime Text 快捷键映射
维护和贡献
为了保持Craft-Twig插件包与Craft的变更保持同步,这是一个持续的项目。有很多方法可以提高插件包,如果您想对Craft-Twig插件包做出贡献,请考虑提交一个pull请求、报告一个问题、提供改进插件包行为示例,或者只是在走廊里对社区成员点赞!
由于语言语法较难参与,我已经开始记录一些经验,希望能在无意中帮助其他人节省几个小时:如何为Textmate插件包创建语言语法和自定义主题的笔记。
参考
笔记和感谢
此仓库已从流行的PHP-Twig Textmate插件包分支而来。已经做了很多更新,增加了很多注释,并且插件包的部分内容是从头重新编写的(维护语言语法确实没有其他方法)!
Craft Twig 分支
- 为
Craft-Twig.tmLanguage
文件添加了大量注释和新结构 - 为Twig操作标签
{% %}
和输出标签{{ }}
添加自动匹配的键绑定 - 添加了使用注释快捷键
command + /
的支持 - 添加了几个额外的Twig代码片段
- 添加了几个额外的Craft特定代码片段
- 添加了快速参考代码片段,用于引用Craft模板标签和语法
- 在适当的Craft标签内添加了CSS和JavaScript语法高亮显示支持
- 添加了两个主题:Artisan Light和Artisan Dark
- 在语言语法中更新了各种作用域,以适应更多主题
- 更新了README文档,记录现有功能和新的代码片段
- 更新了README,使语言指明这是分支
- 尚未在Windows或Linux上测试
愉快的制表体验。