簡體   English   中英

Drupal:自動將新節點添加到節點隊列

[英]Drupal: automatically add new nodes to a nodequeue

在創建節點時,我可以以某種方式自動將節點添加到特定節點隊列嗎?

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

謝謝

我需要這個功能用於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);
}

規則中有一個“添加到節點隊列”的操作。 我已經通過創建一個新規則解決了。

對於Drupal 6和Drupal 7,都有一個簡單的模塊用於此目的:

http://drupal.org/project/auto_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);
    }
}

您無法在管理界面中進行設置,但可以使用hook_nodeapi op insert在自定義模塊中進行設置。

有一個模塊。 看看它是否有幫助。 https://www.drupal.org/project/auto_nodequeue/project/auto_nodequeue

雖然此模塊不完全符合OP“自動添加”請求,但它允許您配置內容類型,以便您可以將其直接添加到隊列中: https//www.drupal.org/sandbox/rlhawk/1444496它是一個沙盒,但非常穩定,我一直使用它,喜歡它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM