如果父供稿(导入)节点未发布,如何不将其包含在导入计划中?


11

如果父供稿导入了未发布的节点(用于输入供稿URL的表单/节点,而不是供稿导入器),则我希望它(供稿URL)不包含在cron计划中以进行更新/导入提要项。怎么做?例如,用户提交了提要,但管理员需要在发布和导入之前对其进行验证。

另请参见如果父供稿未发布,则不要导入项目


你有运气来解决这个问题吗?我使用默认(RSS)Feed Importer尝试了此操作,它似乎按预期方式工作-未发布feed节点时未导入。
日Jan Tomka

嗯,很奇怪。我的Feed导入器中的一个配置为使用Common Syndicate解析器,另一个配置为使用QueryPath解析器。我确认Feed节点(父节点)未发布。您是否看到说明它是在缓存刷新中导入提要的?这是正常的还是奇怪的?无论状态如何,都不应该这样做,对吗?我在本地,所以尚未设置cron。
hellomobe

1
链接的文章提供了更好的信息,甚至包括示例代码。请考虑在此处将其添加到问题中。
berkes 2011年

Answers:


1

看起来,当保存节点时,Feeds模块开始从该节点导入feed。

function feeds_node_insert($node) {
  // Source attached to node.
  feeds_node_update($node);
  if (isset($node->feeds) && $importer_id = feeds_get_importer_id($node->type)) {
    $source = feeds_source($importer_id, $node->nid);
    // Start import if requested.
    if (feeds_importer($importer_id)->config['import_on_create'] && !isset($node->feeds['suppress_import'])) {
      $source->startImport();
    }
    // Schedule source and importer.
    $source->schedule();
    feeds_importer($importer_id)->schedule();
  }
}

导入程序的设置页面中有一个名为提交时导入的选项。如果您取消选中此框,则希望您的供稿不会导入。Feed维护者仍然需要在feed_cron()中进行更改,以便它不会获取未发布的节点。

在等待模块维护者提供更好的修复程序时,可以通过更改第一个if语句以添加$ node-> status == 1 条件来快速修复此代码,如下所示:

if ($node->status==1 && isset($node->feeds) && $importer_id = feeds_get_importer_id($node->type))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.