由于Drupal 8 引入了symfony 2框架,实现了真正的面向对象的编程,相对于Drupal 7 来说,是一次颠覆性的革命。Drupal 8 通过annotation依赖注入和yml的配置管理,使开发工作既规范又灵活。Drupal 8内核的插件,为开发者提供了更加便利的应用实现途径。本文介绍Drupal 8 模块开发的入门知识,为初学者学习Drupal 8 模块开发提供最基本的感性认识,起到一个“抛砖引玉”的作用。
从Drupal 8 开始,通过Drupal Console 工具可以快速规范地自动生成模块和主题开发的目录、文件以及基本的代码。这里为了加深对模块开发的目录结构、文件配置、代码编写的规范的理解,我们还是介绍采取人工方式来开发模块的基本方法。
1、 为模块命名
- 与Drupal 7 一样,我们需要给模块起一个机读名称。本例模块名为“my_module”。
2、 创建模块文件夹
- 创建 /modules/custom/my_module文件夹,文件夹名称与模块名称一致。
3、 创建 .info.yml文件
- 在模块文件夹根目录创建my_module.info.yml文件,文件的代码如下:
4、 创建 .module文件
- 在模块文件夹根目录创建my_module.module文件。在Drupal 7 中这个文件是必须的,在Drupal 8 中,这个文件是可选的。我们在这里让它内容为空。
5、 创建 src 目录
- 在模块文件夹根目录创建 src 目录,用来存放控制器、插件、表单、模板和测试等文件。
6、 创建基本的控制器
控制器是典型的MVC应用中的Controller。
- 在src目录下创建一个 Controller 文件夹。
- 在Controller目录下创建一个名为MyController.php的控制器文件。
- MyController.php 文件代码如下:
7、 创建路由配置文件
- 在模块文件夹根目录创建my_module.routing.yml文件,文件代码如下:
8、 查看结果
- 保存后清空缓存。
- 在“管理>扩展”页面,勾选安装My_module模块。
- 在地址栏输入…/my_module,应该可以看到如下页面内容:
9、 创建菜单链接
我们可以将模块路由添加到管理菜单中。
- 在模块文件夹根目录创建my_module.links.menu.yml文件,文件代码如下:
- 保存后清空缓存。
- 在“管理>配置>开发”页面,可以看到如下选项:
10、 创建自定义区块
Drupal 8 提供了插件机制,我们可以很方便地创建一个自定义区块。
- 在src目录下创建一个 Plugin文件夹。
- 然后在Plugin目录下创建一个Block文件夹。
- 在Block目录下创建一个名为MyBlock.php的文件。
- MyBlock.php的文件代码如下:
11、 放置区块
- 通过“管理>结构>区块布局”页面,将我们创建的区块放置到左边栏。
12、 展示结果
- 自定义区块的结果如下图:
13、 自定义模块目录结构
到这里我们完成了自定义模块开发的基本过程。
- 自定义模块的目录结构如下:
板块
标签
Drupal 版本
写的太棒了
必须给一万个赞啊