これどうやってするの?通常のノードがデフォルトで非公開であっても、フィードモジュールによって作成されたノードを強制的に公開します。
フィードによって作成された新しいステータスがある場合にノードのステータスを公開に設定する「保存」操作の実装 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;
}
}
ノードを公開することは問題ではありません。問題は、フィードによって作成されたノードをどのように伝えるかです。最も速いオプションは
シナリオに適したクイックソリューションがないと仮定すると、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;
?>
アクションを追加
追加するアクションを選択:コンテンツを公開
ユーザーステータスをマッパーとして公開するのと同じようなことをしました。 FeedsUserProcessorにユーザーステータスを追加する で提案されたパッチを参照してください。これは同様です。