Drupal:自动向nodequeue添加新节点

Drupal:自动向nodequeue添加新节点,drupal,drupal-6,Drupal,Drupal 6,我是否可以在创建特定节点时自动将其添加到该节点 (我正在使用nodequeue模块:drupal.org/project/nodequeue) 谢谢您无法在管理界面中进行设置,但您可以在自定义模块中使用opinsert规则中有一个操作“添加到Nodequeue”。我通过创建一个新规则解决了这个问题。我使用的是没有规则的drupal 5。我就是这样完成的,我没有使用任何子队列: if($op == 'insert'){ if($node->type == 'node_type'){

我是否可以在创建特定节点时自动将其添加到该节点

(我正在使用nodequeue模块:drupal.org/project/nodequeue)


谢谢

您无法在管理界面中进行设置,但您可以在自定义模块中使用op
insert

规则中有一个操作“添加到Nodequeue”。我通过创建一个新规则解决了这个问题。

我使用的是没有规则的drupal 5。我就是这样完成的,我没有使用任何子队列:

if($op == 'insert'){
    if($node->type == 'node_type'){
        $queue = nodequeue_load(4);
        $subqueue = nodequeue_load_subqueue(4);
        nodequeue_subqueue_add($queue, $subqueue, $node->nid);
    }
}

我需要Drupal7站点的这个特性,并采用了定制模块解决方案。假设设置为一个nodequeue,每个“项目”节点都应该自动添加和删除到队列中。在sites/all/modules/中创建一个空的nodequeue\u auto\u add目录。这包含这两个文件

nodequeue\u auto\u add.info

name = Nodequeue auto add/remove
description = Automatically adds and remove nodes when they are created and deleted.
core = 7.x
version = 7.x-dev
package = Nodequeue

dependencies[] = nodequeue
节点自动添加模块

<?php
/**
 * Implements hook_node_insert().
 */
function nodequeue_auto_add_node_insert($node) {
  $nid = $node->nid;
  $type = $node->type;
  // only process project node
  if ($type != 'project') {
    return FALSE;
  }
  // I've only one nodequeue where a specific node type should always be 
  // added so this is taken from the mysql nodequeue_queue table
  $queue_id = 1;

  // subqueue id, exists even if we created a really basic nodequeue (from nodequeue_subqueue table)
  $sqid = 1;
  $queue = nodequeue_load($queue_id);
  $subqueue = nodequeue_load_subqueue($sqid);

  if (function_exists('views_invalidate_cache')) {
    views_invalidate_cache();
  }

  nodequeue_subqueue_add($queue, $subqueue, $nid);
}

/**
 * Implements hook_node_delete().
 */
function nodequeue_auto_add_node_delete($node) {
  $nid = $node->nid;
  $type = $node->type;
  // only process project node
  if ($type != 'project') {
    return FALSE;
  }

  if (function_exists('views_invalidate_cache')) {
    views_invalidate_cache();
  }

  // I've only one nodequeue where a specific node type should always be 
  // added so this is taken from the mysql nodequeue_queue table
  $queue_id = 1;

  // subqueue id, exists even if we created a really basic nodequeue (from nodequeue_subqueue table)
  $sqid = 1;

  nodequeue_subqueue_remove_node($sqid, $nid);
}

Drupal 6和Drupal 7都有一个简单的模块:


有一个用于此的模块。看看它是否有用

虽然此模块不能完全满足OP“auto add”请求,但它允许您配置内容类型,以便您可以直接将其添加到队列中:它是一个沙箱,但非常稳定,我一直在使用它,并且非常喜欢它。

我通过创建一个新规则解决了这个问题,但是当从队列中删除节点时,我也应该删除它。。并且没有条件触发器。在中不起作用。我认为这与这个问题有关。尝试保存auto_nodequeue的设置会导致
未定义索引$qid
错误…到今天为止,nodequeue 7.x-2.x分支(不确定7.x-3.x)的工作仍在进行中。我无法在规则-操作中找到添加到nodequeue。