インターネットで例を見つけました: CCKフィールドを本文コンテンツに変換 。
_function riddle_nodeapi(&$node, $op, $teaser, $page) {
if ($node->type == "historia") {
switch ($op) {
case 'view':
if ($node->field_svar[0]['value'] != "" AND $page == 1) {
$svar = '<form><fieldset class="collapsible collapsed">
<legend>Svar</legend>
<div>'.$node->field_svar[0]['value'].'</div>
</fieldset></form>';
$node->content['riddle'] = array(
'#value' => $svar,
'#weight' => 0,
);
if (is_array($node->content['field_svar'])) {
unset($node->content['field_svar']);
}
}
break;
}
}
}
_
次のコードの目的が何であるかわかりません。なぜそれを使用する必要があるのですか?
_ if (is_array($node->content['field_svar'])) {
unset($node->content['field_svar']);
}
_
hook_nodeapi()
引数_$a3
_および_a4
_の用途は何ですか?
ビュー操作の場合、$ a3をtrueまたは1に設定すると、ボディはノードティーザーにのみ影響しますか?私は正しいですか?
モジュールがすでにCCKフィールドをレンダリングしており、Drupalがそのフィールドのコンテンツをレンダリングしないようにするため、次のコードが使用されます。
if (is_array($node->content['field_svar'])) {
unset($node->content['field_svar']);
}
そのコードを使用しない場合、フィールドの内容は2回表示されます。1つはフィールドセットの内部、もう1つはそのフィールドセットの外部です。
hook_nodeapi()
に使用される最後のパラメーターは、ドキュメントから次のように説明されています。
$ a3
- 「ビュー」の場合、node_view()から$ teaserパラメーターを渡します。
- 「validate」の場合、node_validate()から$ formパラメーターを渡します。
$ a4
- 「ビュー」の場合、node_view()から$ pageパラメーターを渡します。
つまり、操作が「ビュー」の場合、Drupalがティーザーを表示している場合は$a3
はTRUE
であり(Drupalが完全なノードコンテンツを表示している場合はFALSE
)、ノードが次の場合は$a4
はTRUEです。ページに単独で表示されている(ノードが同じページ内の他のノードと一緒に表示されている場合はFALSE
)。$a4
に与えられたさまざまな値の意味を理解するために、Drupalがページを表示している場合、$a4
はTRUE
です http://example.com/node/1 (同じページにノードのみが表示される場合); Drupalがフロントページを視覚化していて、フロントページに昇格したノードが複数ある場合、その値はFALSE
です。