makinacorpus / drupal-usync
基于Drupal功能配置文件的驱动同步模块
1.0.20
2018-04-23 09:13 UTC
Requires
- symfony/yaml: *
README
Drupal 7的基于最小化但强大的配置文件驱动的类似功能工具包。
如何工作
它通过构建一个由表示您的配置文件的类型节点组成的完整功能AST,然后遍历树并执行代码。
入门
创建一个示例模块
假设您正在开发一个自定义博客模块
sites/all/modules/myblog/
myblog.module
myblog.info
myblog.yml
myblog.info文件的内容
name = My blog feature
description = Very simple blog feature for my site.
core = 7.x
usync[] = myblog.yml
myblog.yml文件的内容
field:
blog_image:
label: Post photo
type: image
entity:
blog_post:
blog:
name: Blog post
field:
blog_image: true
body: true
view:
node:
blog_post:
default:
post_image:
type: image
settings:
image_style: thumbnail
body: true
teaser:
blog_image:
type: image
settings:
image_style: thumbnail
body:
type: text_summary_or_trimmed
settings:
trim_length: 200
列出网站上的可用数据源
> drush usync-list
Module Source
myblog myblog.yml
列出树中的可用数据
此用例有三个不同的语法。
显示myblog模块声明的所有内容的树
> drush usync-tree --source=myblog:
显示myblog模块声明的myblog.yml文件的树
> drush usync-tree --source=myblog:myblog.yml
直接访问myblog.yml文件的树
> drush usync-tree --source=sites/all/modules/myblog/myblog.yml
请注意,--source参数对于此模块的所有drush命令都将相同,这意味着您可以直接在文件上工作,而不需要通过特定模块定义这些文件。
示例文件输出应为
+ field.blog_image
+ field.body
+ entity.node.post.field.blog_image
+ entity.node.post.field.body
+ entity.node.post
+ view.node.blog_post.default
+ view.node.post.teaser
列出树中的匹配元素
让我们使用上面的相同源,我们的'myblog'模块。
> drush usync-tree --source=myblog: \
--match=entity.node.%
+ entity.node.post
匹配规则如下
-
单词将严格匹配节点名称
-
%通配符将匹配任何名称
将配置注入到Drupal中
现在,您已经是--source和--match参数的熟练用户了,您可以继续进行Drupal注入。只需将usync-tree命令替换为usync-run,并使用相同的参数,它就会工作。
例如,将文件中的所有内容注入
> drush usync-tree --source=myblog:
一旦一切都被注入,您就可以进行部分更新,例如撤销所有视图模式
> drush usync-tree --source=myblog:
--match=view.node.blog_post.%
常见问题解答
但是为什么?
为什么不呢。功能恢复缓慢,功能需要通过UI进行配置,功能不易手动修改,功能可能会带来奇怪的冲突,功能在出现错误时不知道该做什么并且会损坏。您无法轻松定义事物,您可以创建一个对象继承自另一个对象,功能使用CTools,支持视图,并推进非常糟糕的做法。Drupal方式性能低下,表现不佳,我需要写东西更快,让东西运行更快。
但是为什么是Yaml?
为什么不呢,如果您不喜欢,可以使用普通的旧PHP数组。它会工作得很好。
我为什么应该使用它?
我不是你的妈妈,如果你喜欢点击,使用功能。选择权在你。哦,它是一个实验性的、未完成的产品,所以我会建议你,我不会使用它。