webpenson, 18 五月, 2021
  • 创建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.'
    
webpenson, 18 五月, 2021

在开始模块开发之前,必须在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”作为模块的机器名。

webpenson, 18 五月, 2021

1、OOP

面向对象编程已经成为目前公认的最佳的编程方式。它将一切看作对象,对象具有属性和方法,属性表明对象状态,方法实现对象的操作。面向对象实现了软件的重用性、灵活性、扩展性目标。面向对象还包括诸如抽象、继承、多态等特性。

Drupal 8支持面向对象特性,其核心大多使用类、接口写成。并遵循一些公共的设计标准,如

webpenson, 18 五月, 2021

该模块的功能是允许站点管理员封锁用户的IP地址,默认情况下并没有启用这一模块,如需封锁用户的IP地址,需到 管理->扩展 页面开启此模块。

开启Ban模块后,此模块会在 管理->配置 页面生成一个“IP地址屏蔽”链接,点击该链接,出现IP地址屏蔽页面,在该页面查看和删除已封锁的IP地址、添加新的封锁地址。当一个被封的IP地址访问站点时,只能看到一条解释性的简短消息,输入的IP地址必须格式正确。要解除一个IP地址的封锁,只需点击该IP地址后的删除按钮即可。

webpenson, 18 五月, 2021
Drupal 8默认已经安装了CKEditor编辑器,其可配置的插件功能虽不多,但基本的文本编辑已经够用。如果觉得现有CKEditor编辑功能不够,可以到CKEditor官网下载标准版、完全版或自定义版,下面我们将介绍自定义下载。
webpenson, 18 五月, 2021

站点缓存和带宽优化配置

点击设置页面缓存最长保留时间下方的列表框,选择 从不(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的加载是使用就加载,不是每一页都进行加载,这也是出于性能考虑

webpenson, 18 五月, 2021

在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更改为文件

webpenson, 18 五月, 2021

Drupal Console Launcher 1.9.7    Drupal控制台启动器

Usage:
  command [options] [arguments]

webpenson, 17 五月, 2021

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选项。