drush

使用Drupal的Batch API

最近我在做一个图书馆网站,这个网站有很多数据需要导入到Drupal并转换为Node。书籍标题、电子书、DVD等都需要进行导入;不仅如此,还有一个外部数据库需要进行同步的新增,以及少量的修改和删除工作。估计有30到40万Node需要创建,并且需要同他们的内部数据库进行同步。在本文中,我会大致描述一下我如何使用Drush结合Batch API,在控制台中导入这些数据。

引入数据

我的第一个挑战是把数据导入到Drupal中。这其中包含大量数据,所以我需要使用batch API。Batch API让你可以在无需担心PHP超时的情况下,运行一个或多个方法来操作大量数据,并提供相应的进度指示。我创建了一个模块来处理图书馆数据的更新和导入。要创建这个批处理队列,首先要给batch_set()建立一个数组:

如何用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"。

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这样实现:

页面