Si el nodo de fuentes primarias (importación) no está publicado, ¿cómo no lo incluyo en la programación de importación?

11

Si la fuente principal importa un nodo (el formulario / nodo para ingresar la URL de la fuente, no el importador de fuentes) que no está publicado, me gustaría que no se incluya (la URL de la fuente) en la programación cron para actualizar / importar Los artículos de alimentación. ¿Cómo se hace esto? Por ejemplo, un usuario envía un feed, pero el administrador debe verificarlo antes de publicarlo e importarlo.

Consulte también No importar elementos si el feed principal no está publicado .

Hellomobe
fuente
¿Has tenido suerte al imaginar esto? Intenté esto con el Importador de feeds predeterminado (RSS) y parecía funcionar como se esperaba: no se importó cuando el nodo de feeds no se publicó.
Jan Tomka
Hmm, eso es extraño. Uno de los importadores de mi feed está configurado para usar Common Syndicate Parser y el otro usa QueryPath Parser. Confirmé que el nodo de alimentación (padre) no está publicado. ¿Viste la nota de que está importando feeds en un vaciado de caché? ¿Es extraño o normal? No debería hacer eso independientemente del estado, ¿verdad? Estoy en un local así que cron aún no está configurado.
hellomobe
1
El artículo vinculado tiene mucha mejor información, incluso código de muestra. Considere agregar eso a la pregunta aquí.
Berkes

Respuestas:

1

Parece que, cuando se guarda un nodo, el módulo Feeds comienza a importar el feed desde ese nodo.

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();
  }
}

Hay una opción en la página de configuración del importador llamada Importar al enviar . Si desmarca esta casilla, esperamos que su feed no se importe. El mantenedor de feeds todavía necesita hacer cambios en feed_cron () para que no recupere los nodos no publicados.

Mientras espera una mejor solución de los encargados del mantenimiento del módulo, puede corregir rápidamente este código cambiando la primera instrucción if para agregar la condición $ node-> status == 1 de la siguiente manera:

if ($node->status==1 && isset($node->feeds) && $importer_id = feeds_get_importer_id($node->type))
Ajinkya Kulkarni
fuente