drupal-修改区块钩子

我们可以把所以的新代码都塞进 goodreads_block() 钩子;但是,这将使函数变得冗长,难以阅读和维护。我们不在这里加入大片代码,我们只是调用另一个函数,让它完成其余的工作。

 

/**
 * Implementation of hook_block
 */
function goodreads_block($op='list' , $delta=0, $edit=array()) {
  switch ($op) {
  case 'list':
    $blocks[0]['info'] = t('Goodreads Bookshelf');
    return $blocks;
  case 'view':
    $url = 'http://www.goodreads.com/review/list_rss/'
      .'398385'
      .'?shelf='
      .'history-of-philosophy';
    $blocks['subject'] = t('On the Bookshelf');
    $blocks['content'] = _goodreads_fetch_bookshelf($url);
    return $blocks;
  }
}

 

上面的代码看起来应该脸熟。这是我们的钩子函数实现,上一章见到过。但是,我们进行了几处修改,这些地方用高亮指示出来了。

首先,我们增加了一个变量,$url,它的值是我们将要使用的 Goodreads XML feed 的 URL (http://www.goodreads.com/review/list_rss/398385?shelf=history-of-philosophy) 对于一个全部完成的模块,它应该是个可以配置的参数,不过目前,我们先把它硬编码在这里。

模块的第二个变化是获取内容。先前,函数把内容设定为 t('Temporary content')。现在它调用另一个函数:_goodreads_fetch_bookshelf($url).

这里,开头的下划线表明这个函数是我们模块的一个私有函数——我们不想让模块以外的任何代码调用这个函数。用开头的下划线把函数划分为私有函数,是你应该在代码中采用的另一个 Drupal 惯例。

现在让我们来看看 _goodreads_fetch_bookshelf() 函数。

评论

发表新评论

此内容将保密,不会被其他人看见。
  • 允许HTML标签:<a> <img><em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><p>
  • 自动断行和分段。

更多关於格式化选项的信息

Image CAPTCHA
验证码
|