六月 2014

第五部 前端开发增强

欢迎继续阅读Drupal 8终极指南系列的第五篇。

HTML5

Drupal 7中,所有的输出都转换为XHTML,而在8中,则转换为HTML5。这意味着nav/main/header/section等Drupal缺省模板中的标记,成为清理Drupal缺省标记的一部分重要工作。

HTML5带来了新的Form输入类型,包括date/tel和email,这些类型能在移动设备的界面上进行更好地交互(例如电话号码输入框中只显示输入法的数字部分),方便数据的录入。Drupal Form API提供了这些附加类型,方便直接创建这些字段。Drupal 7也可以使用Elements模块来获得类似效果。

Fields on iPhone

Drupal 7测试指南(simpletest)

本指南中的代码在 Examples 模块中维护。这意味着:

  • 你可以获得一份拷贝,进行修改和试验。

  • 如果发现了问题,可以提出 issue,并获得修正。当然,尤其欢迎给出补丁或增强功能的帮助。

这个指南能够帮你了解 Drupal 测试的基础知识,随后你应该有能力编写自己的第一个测试。在本例中,我们会创建一个叫做 simpletest_example 的测试模块。这个模块提供一种名为 simpletest_example 的内容类型。这个内容类型跟基础的 Drupal Node 是一致的。接下来会解释如何通过测试来证明 simpletest_example 这一内容类型能够正常工作。

准备工作

首先,我们要确认已经安装了 Simpletest 模块。Drupal 7 中,Simpletest 随核心发布,命名为 Testing。请确认该模块是否被激活。

Drupal数据库异常臃肿的检测和排除

Drupal网站利用数据库来保存配置和内容。

在普遍情况下(小规模部署),这个数据库是很紧凑的。例如我管理的这个网站一般只在5-20M之间。数据库尺寸主要受到内容数量和模块的影响。

然而,我曾经被一条主机商发来的通知吓了一跳,说我的网站使用了超过2G的存储,我想一定是出了什么问题。

这里我会分享我解决这个问题的一些心得,我想如果你遇到这些问题,也会有相似的情况。

(提示一下,可以使用drush sqlc来在你的网站数据库上运行SQL命令)

数据库层面

找到受影响的数据库。一般来说,每个网站对应一个数据库——除非你在使用一个多站点配置。

Drush提示用户输入的三种方式

Drush是个能让Drupal变简单的好东西。他不仅带有大量的有用工具,同时为用户提供了接口,让用户可以轻松实现自己的命令。如果你需要为你的模块创建Drush命令,只要创建一个包含这些功能命令即可。

在这个教程中,我们会演示如何在这些命令中获取用户反馈。这里我不会提到参数或选项之类的东西。这里主要讲述的是,如何获取一个是或否的确认,或者如何提示用户进行一个选择。另外,我们也会说说如何获取用户输入的文本。

首先让我们看一下drush_module_name_example_command()这个回调函数:

  /**
   * Callback function for the example command
   */
  function drush_module_name_example_command() {
    // Command code we will look at
    drush_print('Hello world!');
  }

确认

首先我们要试验的是如何获取用户的确认。在我们的例子中,我们会请用户确认是否显示内容,可以用Drush API这样实现:

第四部 多语言支持

本文是Drupal 8终极指南的第四章

在上一节中,我们列举了一些Drupal 8在建站方面的增强,而关于Drupal 8的新的多语言能力,因其特殊性,我们将用独立一篇的篇幅来描述。

Gábor Hojtsy领导的Drupal 8多语言提案,该计划的参与者多达千人,是Drupal 8的主要开发焦点之一。本文将抢先报道Drupal 8的多语言站点建设过程。

第三部 改进的网站建设

Tags: 

网站建设

正如前两篇博客主要从最终用户以及内容编辑人员的角度对Drupal 8进行了介绍,Drupal 8同样对站点建设工具提供了大量改进。

Views进入核心

ViewsDruapal发行版中用量第一的模块,现在跟Drupal 8合体了!大多数Views的主要管理功能例如内容、人员以及文件,还有一些Block,RSS Feeds和首页也已经转换为Views。这一改进使得对这些元素的管理变得轻而易举,比如为人员列表新增一个全名的搜索,只需点几下鼠标即可实现。

所有群众喜闻乐见的Views功能都在集成之列,甚至还包含一点特别的,例如针对移动设备的管理界面,一些可用性和易用性的改进,响应式列表,以及将任何列表导出为JSON文本,从而为外部服务或移动应用提供数据的能力。

views

第二部 增强的移动体验

编辑体验增强之外,对Drupal的最终用户来说,还有一个焦点问题是如何让Drupal 8对移动设备更加友好,这也是顺应当今移动设备访问量暴增的潮流之举。

移动优先

Drupal 8用户会发现,Drupal 8从安装器到模块页面的设计核心思想都是以移动为中心的。每一个新特性,例如就地编辑等功能,都被设计为可以在移动设备的小屏幕上顺畅运行。读者可以尝试用手中的设备尝试访问Drupal 8,如果发现任何Bug,欢迎指出(呃....最好是有效的BUG)。

iphone

从内容管理到数字化体验管理

Tags: 

Drupal刚过了第十三个生日!我很荣幸的陪伴Drupal这样一个从业余爱好起步的小项目,一路坎坷前行。Drupal社区在充满了爱和激情的大量付出中逐步成长。

Drupal的生日给了我们一个回顾和反思的契机。当然,多年以来的积累,有太多的事情可供思考,本文仅从宏观的角度,来阐述对市场的分析——也就是说,本文主要从业务而非技术视角出发。

从Web到数字化

Drupal的诞生源于我对Web的浓厚兴趣。今天,他已经成为很多组织的IT基础设施的一部分。对多数机构来说,一个网站或移动应用,是业务运行的重要组成部分,这一重要性还在逐步提高。随着移动和社交媒体的兴起,我们不再只是谈论“网站”或“网站应用”,而是“数字化体验”。为浏览者或顾客提供最佳的数字化体验,已经从“选修课”变成了“必修课”。

Field API

利用Field API可以把字段附加到Drupal实体中,并提供了对字段数据的存储、载入、编辑以及渲染支持。Field API能把包括Node、User在内的任何实体变得“字段化”,也就是说可以把字段附加在实体之上。其他模块可以提供基于用户界面,可以通过浏览器来管理各种数据类型的字段,Form元素以及显示兼容性等。

Field API定义了两个重要的数据结构:Field(字段)和Instance(字段实例),以及一个重要的概念:Bundle。字段定义了可以附加到实体智商的数据类型。字段实例是一个附加到一个Bundle上的字段。一个Bundle是一系列的用Field Attach API组织起来的字段集合,并且这一集合会被附加到一个字段化的实体之上。

最佳实践:hook_cron

如果你成功的设置了Drupal Cronhook_cron()提供了一种不依赖页面请求的方式来进行后台任务,然而,Cron的滥用也有可能造成性能问题,甚至威胁数据完整性。

这里提供一些我们在实际工作中得来不易的一些Cron方面的最佳实践:

第一条:用变量控制Cron。

hook_cron()的每一次调用都封装在一个变量检查的条件之内,这个变量的缺省值是TRUE,想要禁止这个CRON,只要把这个变量创建起来并赋值为False即可,当你的CRON过程失控或者消耗太多资源时,这一手段是非常有效的。

页面