Якщо батьківський вузол каналів (імпорту) не публікується, як я не включати його до графіка імпорту?


11

Якщо батьківський канал імпортує вузол (форма / вузол для введення URL-адреси каналу, а не імпортер каналів), який не публікується, я б хотів, щоб його (URL-адреса каналу) не було включено до розкладу cron для оновлення / імпорту елементи каналу. Як це робиться? Наприклад, користувач подає канал, але адміністратору потрібно перевірити його перед публікацією та імпортувати його.

Див. Також Не імпортуйте елементи, якщо батьківський канал не опублікований .


Чи мали ви удачу розібратися в цьому? Я спробував це з імпортером каналу за замовчуванням (RSS), і, здавалося, він працює як очікувалося - він не імпортував, коли вузол каналу не був опублікований.
Ян Томка

Гм, це дивно. Один з моїх імпортерів каналів налаштований на використання спільного аналізатора синдикатів, а інший - на QueryPath Parser. Я підтвердив, що вузол каналу (батьківський) не опублікований. Ви бачили примітку про те, що імпортує канали на флеш-кеші - це непарно чи нормально? Це не повинно робити це незалежно від статусу, правда? Я на локальному, тому крон ще не налаштований.
hellomobe

1
Пов'язана стаття має набагато кращу інформацію, навіть зразок коду. Будь ласка, розгляньте, як додати це питання тут.
berkes

Відповіді:


1

Схоже, коли вузол збережено, модуль каналів починає імпортувати канал з цього вузла.

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 (), щоб він не отримав неопубліковані вузли.

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

if ($node->status==1 && isset($node->feeds) && $importer_id = feeds_get_importer_id($node->type))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.