Drupal模块开发

很多没习惯写单元测试的开发者,总觉得单元测试很难,还增加了工作了,或者把单元测试环境搭好了,也写了很多单元测试,越写越累,感觉代码质量没提高,工作量反而提高很多。我们一起来学习下为什么要写单元测试,以及如何写好单元测试。
我们分以下7个小点来讲解:
1.为什么要些单元测试?
2. 单元测试与集成测试的区别?
3. 先些代码还是先写单元测试?
4. 谁来编写单元测试 ?
5. 如何避免无用的测试 ?
6. 测试代码覆盖率?
7. 单元测试中的"mock仿件"或者我们说的打桩?
 

长风Drupal开发团队介绍如何利用drupal的feeds模块导入node、user等数据,以及通过Drupal feeds导入数据过程中经常遇到的问题。

步骤如下:

1、通过Drupal官网下载Feeds模块;

2、开启Drupal的Feeds模块;

3、新建feeds的导入或者通过clone的方式新建导入node或者user的导入实例(admin/structure/feeds)。

4、下一步,开始进行Feeds的设置,

1)基础设置,可以不需要对这个界面的设置进行改动,除非你有特别的理由。

2)Fetcher设置,点击setting,设置上传的格式和临时文件夹的位置,也可以不用修改;点击change,可以修改为http的方式获取源数据,而不是通过上传。

3)Parser设置,点击setting,可以选择字段的分割方式(如逗号,分号,竖线等),特别注意,选择使用UTF8编码。

4)Processor,点击mapping,设置源数据与drupal字段的对应关系。

5)完成设置,进行保存。

5、使用刚刚建的feeds实例导入数据。

在基于Drupal开发的模块或者应用程序中,我们经常会遇到需要在Drupal模块中加载区块的情况,比如,Drupal7的区块管理页面不能让一个区块在多个区域(region)中显示(当然这在Drupal8中已经解决了)。所以,当我们想让Drupal的同一个区块在多个区域(region)中显示的时候,可以使用长风Drupal开发团队提供一个小小的函数,用以实现在Drupal模块中加载区块。

通过调用自定义函数block_render($module, $block_id)实现。

$module:这是被调用的区块对应的模块名称

$block_id:区块的ID或者机器名称

Google的各种服务都被屏蔽了,同时字体(fonts.googleapis.com)被屏蔽,导致很多网站打开都极慢。

方法一:如果要快一点只能使用VPN之类的方式来解决,或者你可以通过修改hosts的方式,找个仍然能用的IP也行。

方法二:编辑/etc/hosts,不过是指向到本地。

127.0.0.1       fonts.googleapis.com

这样做的优点是,网站打开变快了,缺点是你就看不到Google字体的真正效果的,所以对于网站开发者,是否使用这种方式是需要权衡的,其他屏蔽的资源也可以考虑类似方法。

方法三:将Google免费字体库的域名 fonts.googleapis.com 修改为:fonts.useso.com 即可



一、获取合适的Drush版本

确保你使用的是从composer或者Github获取的最新的drush。如果你使用Github版本,你仍然需要Composer下载相关的依赖。 Drupal.org/PECL/Pear/etc的Drush已经过期了。

对桌面端开发用户来说,你可以在桌面开发端通过发起一个命令提示符,运行下面的命令:[c:\your_path_to_acquia]\drush\composer global require drush/drush:dev-master 来使用composer更新drush。

检查Drush的版本drush --version

二、必要的Drupal模块

要使用Drush迁移,你需要下载并启用Migrate Upgrade模块,如果你计划做的不止一次性的升级,你需要下载migrate tools

三、简单的方法:使用 migrate-upgrade

一、通过WEB界面执行升级

一旦你看了Drupal6/7升级到Drupal8(一),使用web界面是一个可行的执行迁移的方法。

贡献的第三方Migrate Upgrade 模块(https://www.drupal.org/project/migrate_upgrade)是针对从drupal6/7升级到drupal8提出的用户界面。它仍然在开发中,所以过程可能中断,如果有报错产生,首先查看https://www.drupal.org/project/issues/migrate_upgrade,这里可能已经修复了错误,如果没有,和开发者核对,https://www.drupal.org/irc。

安装模块后,访问你的drupal8站点的/upgrade页面,你会看到一下页面。当你已经准备好进行升级,点击continue按钮,这将带你到下面显示的migrate upgrade页面。输入数据库的访问凭证以及drupal6或者drupal7的文件访问路径,点击review upgrade,如果你的drupal6或者drupal7站点使用数据库前缀,确保展开advanced options 并且填入前缀信息。

Drupal7开发者很头痛用一个区块中创建多个实例,这已经在Drupal8中解决了。

你可以在Drupal8的一个区块中创建多个实例。

在Drupal8开发中,创建一个区块非常容易,Drupal8将扫描你的模块的代码的注释来确定类型(备注:下面的备注信息必须要,用来识别这个block的),更多信息查看https://www.drupal.org/node/1882526。这个例子中,annotation 使用hello world 区块,你可以复制下面的代码,粘贴到你创建的模块的src/Plugin/Block/HelloBlock.php中,当然,你需要情况缓存,要添加hello block ,你需要到admin/structrue/block ,点击place block 按钮,点击在place block按钮上,通过这个方法,你可以在你的Drupal8网站上添加任意数量的自定义区块的实例,


Drupal8的模块、主题、或者安装的profile文件的不可缺少的一部分就是.info.yml文件,用来存储项目的元数据。

.info.yml文件要有如下要求:

通知Druppal一个模块,主题,或者安装profile文件的存在

为Drupal的WEB管理界面提供信息

下面是将要被用到的hello.info.yml文件,如果你正在跟我们操作,在你的模块根目录下,创建一个新文件,命名为hello_world.info.yml,粘贴下面的代码;

name: Hello World Module
description: Creates a page showing "Hello World".
package: Custom
type: module
version: 1.0
core: 8.x

name 和 descreiption是必须的。

package 允许你群组相关的模块

type 在drupal8里新增的,是必须的,表明这个扩展(模块或者主题或者安装profile文件)的类型(如 module\theme\profile)

Apache (Recommended)

你可以使用apache的mod_rewrite扩展drupal的clean url,在Drupal8里,clean urls 默认是开启的,且不能关闭,所以为了Drupal能正常工作,mod_rewrite需要安装并开启。

虚拟主机必须配置包含  AllowOverride All,允许drupal的.htaccess文件起作用。

Database

MySQL 5.5.3/MariaDB 5.5.20/Percona Server 5.5.8 or higher with PDO and an InnoDB-compatible primary storage engine,

PostgreSQL 9.1.2 or higher with PDO,

SQLite 3.6.8 or higher

PS:我最开始用的以前的mysql5.1安装Drupal8,报错:SQLSTATE[42000]: Syntax error or access violation: 1115 Unknown character set: '#utf8mb4'#。

使用Drupal开发完成实现了Drupal集成支付宝,通过支付宝进行积分充值功能的Drupal模块,具体功能描述如下:

1、Drupal集成支付宝在线对账户进行积分充值;

2、Drupal实现充值卡充值:通过销售充值卡给客户,客户在Drupal网站上输入充值卡密码的方式充值;(在另外一个子模块)

3、支付宝充值、充值卡充值集成userpoint 模块:解决了从支付宝充值->获得积分->通过积分消费的整个流程。

4、充值日志记录:个人可以查看充值、消费记录,管理员可以查看所有用户的积分增/减记录;

5、新增支持手机手机网站支付。可以自动判断设备是电脑或者手机,调用相应接口。

6、新增快钱支付方式(测试中);

7、新增网银支付方式(测试中

8、新增财付通支付方式(测试中

正在开发的功能:

1、扩展支付宝充值后,积分消费的相关功能,如开发接口,以实现其他模块调用消费接口;

Pages