Wenn der Knoten für übergeordnete Feeds (Import) nicht veröffentlicht ist, wie kann ich ihn nicht in den Importplan aufnehmen?

11

Wenn der übergeordnete Feed einen Knoten (das Formular / den Knoten zur Eingabe der Feed-URL, nicht den Feed-Importer) importiert, der nicht veröffentlicht wurde, möchte ich, dass er (die Feed-URL) nicht in den Cron-Zeitplan zum Aktualisieren / Importieren aufgenommen wird die Futtermittel. Wie wird das gemacht? Ein Benutzer sendet beispielsweise einen Feed, der Administrator muss ihn jedoch vor dem Veröffentlichen und Importieren überprüfen.

Siehe auch Importieren Sie keine Elemente, wenn der übergeordnete Feed nicht veröffentlicht wurde .

hellomobe
quelle
Haben Sie Glück gehabt, diesen herauszufinden? Ich habe dies mit dem Standard-Feed-Importer (RSS) versucht und es schien wie erwartet zu funktionieren - es wurde nicht importiert, als der Feed-Knoten nicht veröffentlicht wurde.
Jan Tomka
Hmm, das ist seltsam. Einer meiner Feed-Importer ist für die Verwendung von Common Syndicate Parser konfiguriert, der andere für QueryPath Parser. Ich habe bestätigt, dass der Feed-Knoten (übergeordnet) nicht veröffentlicht ist. Haben Sie den Hinweis gesehen, dass Feeds in einen Cache-Flush importiert werden - ist das seltsam oder normal? Das sollte es nicht unabhängig vom Status tun, oder? Ich bin auf einem Einheimischen, also ist Cron noch nicht eingerichtet.
Hellomobe
1
Der verlinkte Artikel enthält viel bessere Informationen, sogar Beispielcode. Bitte erwägen Sie, dies der Frage hier hinzuzufügen.
berkes

Antworten:

1

Es sieht so aus, als würde das Feeds-Modul beim Speichern eines Knotens den Feed von diesem Knoten importieren.

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

Auf der Einstellungsseite des Importeurs gibt es eine Option namens "Beim Senden importieren" . Wenn Sie dieses Kontrollkästchen deaktivieren, wird Ihr Feed hoffentlich nicht importiert. Der Feeds-Betreuer muss noch Änderungen an feed_cron () vornehmen, damit die nicht veröffentlichten Knoten nicht abgerufen werden.

Während Sie auf eine bessere Korrektur durch die Modulbetreuer warten, können Sie diesen Code schnell beheben, indem Sie die erste if-Anweisung ändern, um die Bedingung $ node-> status == 1 wie folgt hinzuzufügen :

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