makinacorpus/drupal-usync

基于Drupal功能配置文件的驱动同步模块

安装: 952

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 19

分支: 1

开放问题: 4

类型:drupal-module

1.0.20 2018-04-23 09:13 UTC

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数组。它会工作得很好。

我为什么应该使用它?

我不是你的妈妈,如果你喜欢点击,使用功能。选择权在你。哦,它是一个实验性的、未完成的产品,所以我会建议你,我不会使用它。