Если узел родительских каналов (импорт) не опубликован, как мне не включить его в расписание импорта?

11

Если родительский канал импортирует неопубликованный узел (форму / узел для ввода URL канала, а не импортер каналов), я бы хотел, чтобы его (URL канала) не включали в расписание cron для обновления / импорта элементы корма. Как это сделать? Например, пользователь отправляет фид, но администратор должен проверить его перед публикацией и импортом.

См. Также Не импортировать элементы, если родительский канал не опубликован .

hellomobe
источник
Тебе повезло с этим? Я попробовал это с импортером каналов по умолчанию (RSS), и он, казалось, работал как ожидалось - он не импортировал, когда узел канала не был опубликован.
Ян Томка
Хм, это странно. Один из моих импортеров каналов настроен на использование Common Syndicate Parser, а другой использует QueryPath Parser. Я подтвердил, что узел канала (родитель) не опубликован. Вы видели сообщение о том, что он импортирует каналы при очистке кэша - это странно или нормально? Это не должно делать это независимо от статуса, верно? Я нахожусь на местном, поэтому Cron еще не настроен.
hellomobe
1
Связанная статья содержит гораздо лучшую информацию, даже пример кода. Пожалуйста, подумайте над тем, чтобы добавить это к вопросу здесь.
Беркес

Ответы:

1

Похоже, что при сохранении узла модуль Feeds начинает импортировать канал с этого узла.

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_cron (), чтобы он не получал неопубликованные узлы.

Пока вы ждете лучшего исправления от сопровождающих модулей, вы можете быстро исправить этот код, изменив первый оператор if, добавив условие $ node-> status == 1, следующим образом:

if ($node->status==1 && isset($node->feeds) && $importer_id = feeds_get_importer_id($node->type))
Ajinkya Kulkarni
источник