老葛的Drupal培训班 Think in Drupal
让我们设定一个场景。假定你有一个网站,是用来呈现争议性问题的。下面是它的业务模型:用户通过付费注册进来,并只能在网站上发布一条评论。一旦他们发布了评论,他们就会被封号,直到再次付费后才被解封。我们不关心这样的网站是否有经济前景,这里主要考虑的是:如何使用触发器和动作来实现它。我们需要一个动作来阻止当前用户。检查一下user.module,我们看到Drupal已经为我们提供了这个动作:
/**
* Implementation of hook_action_info().
*/
function user_action_info() {
return array(
'user_block_user_action' => array(
'description' => t('Block current user'),
'type' => 'user',
'configurable' => FALSE,
'hooks' => array(),
),
'user_block_ip_action' => array(
'description' => t('Ban IP address of current user'),
'type' => 'user',
'configurable' => FALSE,
'hooks' => array(),
),
);
}
然而,这些动作却没有显示在触发器分配页面,为什么呢?这是因为它们的hooks键是一个空数组,也就是它们不支持任何钩子。如果我们能只改一下hooks键,那不就可以了?不错,可以这样做,让我们往下看。