九月 2014

Security Kit模块

该模块为Drupal提供了大量的安全加固选项,能降低Web应用被攻击的风险。

跨域脚本

通过IE和Firefox的X-Content-Security-Policy、Chrome和Safari的X-WebKit-CSP以及Content-Security-Policy(官方名称)的HTTP响应头,来实现内容安全策略。其中包含配置页面,并且对违反CSP的访问记录到Watchdog。

Internet Explorer/Apple Safari/Google Chrome提供了内置的XSS过滤功能,利用XSS-Protection这一HTTP响应头来进行控制浏览器的这些功能。

修复Drupal 6的上传问题,Drupal 7的上传功能合并到了FileField中,所有D7版本没有这一选项。

第六部 全新的后台

全新的配置管理系统

对建站人员和开发者来说,Drupal 8的最值得期待的变化就是配置管理系统。在Drupal 7和之前的版本中,内容和配置都保存在数据库里(甚至有的配置和内容会混在同一张表中),这使得不同环境间的站点迁移非常困难(例如开发环境到生产环境)。围绕这个难题,诞生了很多相关的技术,包括 hook_update_N(), Features module,还有更古老的方式——记录一套环境上的配置,然后去另一套环境上手工执行。然而,所有这些尝试都是做着同一个事情:想要规避一个残酷事实——Drupal核心没有很好的提供配置发布支持,直到Drupal 8的出现。

利用Libraries API向Drupal项目中添加JS库

作为一个前端开发者,我经常需要为了前端的一些需求向项目中加入JavaScript库。在Drupal中,有很多种方式来完成这一任务,最近我开始注意到一个模块:Libraries API,它为Drupal开发者提供了一个稳定的方法来添加各种库。

一个Library是一组代码,通常是CSS和JS,有时候也会是一组PHP,或者一些其他什么东西。一般来说,这些库并不是为Drupal设计的。

过去,我直接把JS库加入到我的主题之中,接下来使用drupal_add_js()把JS加入到页面。这意味着这个库同主题被绑定在一起。如果我想要在模块中使用这个库,我必须要知道这个主题的名字——用drupal_get_path()。这很明显是个混蛋办法,他基本上断绝了模块化和代码复用的可能性。

另一个添加JS库的方法就是使用模块进行加载。这种方法的不足在于,JS库常需要通过Drupal UI来配置,配置能力有时会影响库的能力,同步更新也不容易保证。在多数情况下,这种方式可以使用Libraries API来实现。

如何用Drush Make完成日常任务

众所周知,Drupal Make在Drupal发行版的创建过程中具有重要作用,不过他对从来没有接触过发行版的人来说同样很有用,一个很好的例子就是《applying patches like a boss》

本文中我会展示在日常工作中我如何实用Drush Make来达成一些自动化目的,同时帮助我发现一些有趣的Drupal窍门。

Drush Make命令


Drush Make内置两个命令:

  1. make:把".makefile"转化为Drupal代码。

  2. make-generate:从当前Drupal站生成".makefile"。

Drupal 7 - Hook执行顺序

Tags: 

没有什么文档来说明这个事情,在阅读"module_implements"代码的过程中,我获得了变更Hook执行顺序的灵感。

下面是module_implements中的代码片段

// Allow modules to change the weight of specific implementations but avoid
// an infinite loop.
if ($hook != 'module_implements_alter') {
drupal_alter('module_implements', $implementations[$hook], $hook);
}

所以只要简单的实现一下"module_implements_alter",在代码中对Module列表进行重新排序,也就改变了Hook的执行顺序。

下面是示例代码: