Se il nodo Feed padre (importazione) non è pubblicato, come non includerlo nel programma di importazione?


11

Se il feed principale importa un nodo (il modulo / nodo per inserire l'URL del feed, non l'importatore di feed) che non è stato pubblicato, vorrei che (l'URL del feed) non fosse incluso nella pianificazione cron per aggiornare / importare gli elementi del feed. Come si fa? Ad esempio, un utente invia un feed, ma l'amministratore deve verificarlo prima di pubblicarlo e importarlo.

Vedi anche Non importare articoli se il feed principale non è pubblicato .


Hai avuto fortuna a immaginarlo? L'ho provato con l'importatore di feed (RSS) predefinito e sembrava funzionare come previsto: non veniva importato quando il nodo feed non era stato pubblicato.
Jan Tomka,

Hmm, è strano. Uno dei miei importatori di feed è configurato per utilizzare Common Syndicate Parser e l'altro utilizza QueryPath Parser. Ho confermato che il nodo feed (padre) non è stato pubblicato. Hai visto la nota che sta importando feed in una cache flush - è strano o normale? Non dovrebbe farlo indipendentemente dallo stato, giusto? Sono su un locale quindi cron non è ancora impostato.
hellomobe,

1
L'articolo collegato contiene informazioni molto migliori, persino un codice di esempio. Ti preghiamo di considerare di aggiungerlo alla domanda qui.
Berkes,

Risposte:


1

Sembra che, quando un nodo viene salvato, il modulo Feed inizia a importare il feed da quel 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();
  }
}

C'è un'opzione nella pagina delle impostazioni dell'importatore chiamata Importa al momento dell'invio . Se deselezioni questa casella, si spera che il tuo feed non venga importato. Il manutentore dei feed deve ancora apportare modifiche in feed_cron () in modo che non recuperi i nodi non pubblicati.

Mentre aspetti una soluzione migliore dai manutentori del modulo, puoi correggere rapidamente questo codice modificando la prima istruzione if per aggiungere $ node-> status == 1 condizione come segue:

if ($node->status==1 && isset($node->feeds) && $importer_id = feeds_get_importer_id($node->type))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.