web-dev-qa-db-ja.com

ノードがデフォルトで非公開であっても、フィードモジュールによって作成されたノードを強制的に公開します

これどうやってするの?通常のノードがデフォルトで非公開であっても、フィードモジュールによって作成されたノードを強制的に公開します。

3
Matthew Hui

フィードによって作成された新しいステータスがある場合にノードのステータスを公開に設定する「保存」操作の実装 hook_nodeapi()

function MODULE_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if ($op === 'presave' && empty($node->nid) && !empty($node->feeds_node_item)) {
    $node->status = 1;
  }
}
4
Pierre Buyle

ノードを公開することは問題ではありません。問題は、フィードによって作成されたノードをどのように伝えるかです。最も速いオプションは

  1. インポートされたコンテンツの個別のノードタイプ、または
  2. フィードマッピングによってのみ設定される非表示フィールド

シナリオに適したクイックソリューションがないと仮定すると、Feedで作成されたノードを確認する実際の方法はfeeds_node_itemのみです。ノードをインポートすると、ノードのレコードが含まれ、nid列がノードIDに設定されます。

Rules モジュールを使用して、全体のトリックはExecute custom PHP codefor conditionの問題です新しく作成されたノードのレコードがあるかどうかを確認するには:

新しいルールを追加

Event:新しいコンテンツを保存した後

条件を追加

追加する条件を選択:カスタムを実行PHPコード

PHPコード

<?php
$a = db_fetch_array(db_query("select count(*) c from {feeds_node_item}
                              where nid = %d", array($node->nid)));
return $a['c'] != 0;
?>

アクションを追加

追加するアクションを選択:コンテンツを公開

2
Jan Tomka

ユーザーステータスをマッパーとして公開するのと同じようなことをしました。 FeedsUserProcessorにユーザーステータスを追加する で提案されたパッチを参照してください。これは同様です。

1
pcambra