親フィード(インポート)ノードが非公開の場合、インポートスケジュールに含めないようにするにはどうすればよいですか?


11

親フィードが非公開のノード(フィードインポーターではなく、フィードURLを入力するフォーム/ノード)をインポートする場合、更新(インポート)するcronスケジュールにそれ(フィードURL)を含めないようにしたいフィード項目。これはどのように行われますか?たとえば、ユーザーがフィードを送信しましたが、管理者はそれを公開してインポートする前に確認する必要があります。

親フィードが非公開の場合はアイテムをインポートしないもご覧ください。


これを理解するのに運はありましたか?デフォルト(RSS)のフィードインポーターでこれを試しましたが、期待どおりに動作するようでした。フィードノードが非公開の場合はインポートされませんでした。
Jan Tomka、2011

うーん、それは奇妙です。フィードインポーターの1つはCommon Syndicate Parserを使用するように構成されており、もう1つはQueryPath Parserを使用しています。フィードノード(親)が非公開であることを確認しました。キャッシュフラッシュでフィードをインポートしているというメモをご覧になりましたか?ステータスに関係なくそうすべきではありませんよね?私はローカルにいるので、cronはまだセットアップされていません。
hellomobe

1
リンクされた記事には、サンプルコードを含め、はるかに優れた情報があります。こちらの質問に追加してください。
11

回答:


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))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.