2010-08-20 202 views

回答

4

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

+1

截至今天这仍然是一项工作正在进行对于Nodequeue 7.x-2.x分支(不确定大约7.x-3.x):[规则集成](http://drupal.org/node/1125922)。 – thirdender 2013-04-19 22:40:41

+0

我无法找到在规则中添加到Nodequeue - 操作。 – Fahad 2014-04-13 13:58:06

0

你不能将其设置在管理界面中,但可以使用hook_nodeapi自定义模块中做到这一点op insert

+0

我已经解决了通过创建一个新的规则,但是我也应该删除节点,当它从队列中删除..并没有条件触发器.. – aneuryzm 2010-08-21 08:18:56

2

我使用的是没有规则的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); 
    } 
} 
9

我需要这个功能对于一个Drupal 7个网站,并采取了自定义模块的解决方案。假设设置是一个节点队列,并且每个“项目”节点都应该自动添加并移除到队列中。在sites/all/modules /中创建一个空的nodequeue_auto_add目录。这包含这两个文件

nodequeue_auto_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 

nodequeue_auto_add.module

<?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); 
} 
3

有此目的只是做一个简单的模块,两者的Drupal 6和Drupal 7 :

http://drupal.org/project/auto_nodequeue

+1

从[Nodequeue 7.x-3.x](http://drupal.org/project/nodequeue)不起作用。我认为这与这个问题有关[放弃所有使用$ qid](http://drupal.org/node/1160068)。尝试将auto_nodequeue的设置保存为“未定义的索引$ qid”错误... – thirdender 2013-04-19 22:31:11

0

尽管该模块并不完全符合OP“自动添加”请求,但它确实允许您配置内容类型,以便您可以将其直接添加到队列中:https://www.drupal.org/sandbox/rlhawk/1444496这是一个沙盒,但非常稳定,我使用它一直都很喜欢它。