- 创建hello_world.info.yml文件
- 2、增加以下代码
name: 'hello_world' package: 'Custom' description: 'An example module showing how to define a page to be displayed at a given URL.'
在开始模块开发之前,必须在php.ini中把错误打开,并要学会如何进行错误的调试。 调试一般可以通过\Drupal::log或error_log的输出,前者是记录导watchdog表,后者是记录在php错误日志里,如我们启用了fpm,则会记录在/var/log/php-fpm/www-error.log中。
模块命名
首先你应该给你的模块命名,包括模块的描述与机器名。机器名将会用于模块的相关文件中,注意不要与Drupal核心模块或其它模块重名。
模块命名的基本原则:
-
必段以字母开头。
-
只能包含小写字母与下划线。
-
机器名必须唯一,不能与模块、主题、或配置文件重命。
-
不能使用保留字: src、lib、vendor、assets、css、files、images、js、misc、templates、includes、fixtures、Drupal。
这里,我们使用”hello_world”作为模块的机器名。
1、OOP
面向对象编程已经成为目前公认的最佳的编程方式。它将一切看作对象,对象具有属性和方法,属性表明对象状态,方法实现对象的操作。面向对象实现了软件的重用性、灵活性、扩展性目标。面向对象还包括诸如抽象、继承、多态等特性。
Drupal 8支持面向对象特性,其核心大多使用类、接口写成。并遵循一些公共的设计标准,如
-
The Factory Pattern(http://design-patterns.readthedocs.io/zh_CN/latest/creational_patterns/simple_factory.html)
-
Software design pattern (https://design-patterns.readthedocs.io/zh_CN/latest/)
该模块的功能是允许站点管理员封锁用户的IP地址,默认情况下并没有启用这一模块,如需封锁用户的IP地址,需到 管理->扩展 页面开启此模块。
开启Ban模块后,此模块会在 管理->配置 页面生成一个“IP地址屏蔽”链接,点击该链接,出现IP地址屏蔽页面,在该页面查看和删除已封锁的IP地址、添加新的封锁地址。当一个被封的IP地址访问站点时,只能看到一条解释性的简短消息,输入的IP地址必须格式正确。要解除一个IP地址的封锁,只需点击该IP地址后的删除按钮即可。
站点缓存和带宽优化配置
点击设置页面缓存最长保留时间下方的列表框,选择 从不(Never) 就关闭了页面缓存。
如果你在进行主题开发,即使关闭了页面缓存,你所做的修改可能还是无法立即显现,如果发生这种情况,请点击清除所有缓存按钮,以清空系统所有的缓存,如果还不行,则将Drupal 8配置为开发模式,在Drupal主题开发中会讲到。
Drupal 8支持强大的主题功能,其CSS遵循SMACSS规范,以组件方式进行组织,因此一个主题中包括许多CSS文件,在没有开启CSS合并的情况下查看页面源代码,你会发现页面包含了许多CSS文件如下图所示,文件太多不利于缓存和优化,Drupal 8 提供了带宽优化功能对CSS、JS文件进行压缩,开启方法很简单,勾选合并CSS文件和合并JavaScript文件复选框就行了,合并后再查看网页源代码你会发现仅仅只有3到4个CSS文件了。JS文件也是一样,合并之前在页脚你会发现很多JS文件,合并后就少许多了。Drupal 8对JS的加载是使用就加载,不是每一页都进行加载,这也是出于性能考虑
在Drupal 8中,静态文件如CSS、JS、图片等可以设置独立的域名。比如动态页面通过www.a.com访问,静态文件通过static.a.com访问。
可以通过hook_file_url_alter来定制你的策略
我的是drupal8.9.15 查看文档https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21File%21file.api.php/function/hook_file_url_alter/8.9.x
路径drupal/core/lib/Drupal/Core/File/file.api.php
function hook_file_url_alter
Alter the URL to a file.将URL更改为文件
Drupal Console Launcher 1.9.7 Drupal控制台启动器
Usage:
command [options] [arguments]
Drupal Console 提供两种类型的命令:标准命令
和 容器相关命令
标准命令 能够在 Drupal 8 网站根目录以外的地方运行的命令属于标准命令
容器相关命令 必须在 Drupal 8 网站根目录内运行的命令属于容器相关命令
这里Drupal Console Launcher 1.9.7
-
在 Drupal 网站根目录以外执行 Drupal Console
通过 --root
选项指定 Drupal 网站根目录,你就可以在系统中的任何地方运行容器相关命令。
$ drupal --root=/var/www/drupal8.dev cr all
尝试执行 失败
[ERROR] Command "cr", is not a valid command name.
注意:在Drupal站点根目录外执行Drupal控制台时可能出现的消息,并且没有提供--root选项。