【问题标题】:Drupal 7 - Is there a possibility to create a revision programmatically without publishing it and maintain original node publish?Drupal 7 - 是否有可能以编程方式创建修订而不发布它并维护原始节点发布?
【发布时间】:2020-06-16 10:54:54
【问题描述】:

我正在使用 Drupal 7,我需要以编程方式保存草稿节点而不发布它,但保持发布的原始节点。我创建了一个新按钮,当有人点击它时,自定义模块上的一个函数尝试创建一个节点修订版,但我不知道如何做我写的内容

用户可以将节点保存为草稿,而不会丢失必须对公众可见的最初发布的节点。保存草稿必须是取消发布且仅对可以更改节点的用户所有者可见,直到它将请求发送给管理员以批准草稿节点

谁能告诉我怎么做?

谢谢

【问题讨论】:

    标签: drupal-7


    【解决方案1】:

    保存草稿模块之类的东西会起作用吗?听起来很接近你的描述。

    https://www.drupal.org/project/save_draft

    【讨论】:

    • 我试过这个模块,但它没有按我的意愿工作。正如我所说,我有一个已发布的节点。用户可以将节点保存为草稿,而不会丢失必须对公众可见的最初发布的节点。保存草稿必须是取消发布且仅对可以更改节点的用户所有者可见,直到它将请求发送给管理员以批准草稿节点
    • 我明白了 - 您正在寻找修订和工作流程。 drupal.org/project/revisioning。这涉及到一些复杂性,但它会处理您的整个编辑、修订和批准工作流程。
    • 我也尝试了这两个模块,但我没有解决它。因为如果我不发布修订版,drupal 将其设为默认,原始节点变为状态 0。您认为这两个模块有可能一起解决我的问题吗?
    • 我正在考虑通过我模块上的一个函数以编程方式执行此操作,在该函数中我使用以下内容创建修订: $nid = $form_state['node']->nid; $node = node_load($nid); $节点->修订=真; // 保存时创建一个新修订 $node->revision_moderation = TRUE; // 使新修订待审核 $node = node_form_submit_build_node($form, $form_state); $插入=空($节点->nid);节点保存($节点); 但我不知道如何将所有数据保存为修订版。在此之后,我可以尝试将原始节点恢复为默认值并将状态 0 设为修订版
    • 我在问题队列中发现了一个错误,可以解决您遇到的问题。它在模块的开发版本中进行了修补。尝试一下可能是值得的。如果您真的想编写自己的模块,请使用辅助函数_node_save_revision。创建修订版需要一个nid、uid。修订版将可用 node->vid。您不必担心构建节点或收集数据。都是内置的。
    【解决方案2】:

    试试Workbench moderation module

    它是 Drupal 8 的核心(自 8.2 起)。 在 Drupal 7 中,它为您提供了一个简单的管理界面、帮助您开始工作的文档,并且它在社区中看起来很可靠。

    【讨论】:

      猜你喜欢
      • 2017-09-14
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多