【问题标题】:Drupal: automatically add new nodes to a nodequeueDrupal:自动将新节点添加到节点队列
【发布时间】:2010-08-20 10:02:16
【问题描述】:

我可以在创建节点时以某种方式自动将节点添加到特定节点队列吗?

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

谢谢

【问题讨论】:

    标签: drupal drupal-6


    【解决方案1】:

    我需要此功能用于 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);
    }
    

    【讨论】:

      【解决方案2】:

      规则中有一个动作“添加到节点队列”。我已经通过创建新规则解决了。

      【讨论】:

      • 到目前为止,Nodequeue 7.x-2.x 分支仍在进行中的工作(不确定 7.x-3.x):Rules integration
      • 我在规则 - 操作中找不到添加到节点队列。
      【解决方案3】:

      为此目的制作了一个简单的模块,适用于 Drupal 6 和 Drupal 7:

      http://drupal.org/project/auto_nodequeue

      【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 我已经通过创建一个新规则解决了,但是当它从队列中删除时我也应该删除节点......并且没有条件触发器......
        【解决方案6】:

        有一个模块。检查一下,看看它是否有帮助。 https://www.drupal.org/project/auto_nodequeue/project/auto_nodequeue

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-05-22
            • 2013-01-05
            • 2014-01-24
            • 1970-01-01
            • 2022-01-22
            相关资源
            最近更新 更多