web-dev-qa-db-ja.com

ビューにコメントフォームを追加する

コメントからビューを作成しました。ビューのボタンにフッターでコメントフォームを追加したい。 「views_php」モジュールをインストールして「Global:PHP」をフッターに追加し、フッターにコメント追加フォームを印刷するこのコードを記述します。

$comment = new stdClass;
$comment->nid = $row->nid;
$form = drupal_get_form('comment_form', $comment);
print render($form);

しかし問題は、印刷されたフォームにcomment_bodyまたは他のカスタムフィールドがないことです。実際には、作成者、件名、保存ボタンだけです。

私もこのコードを試しました:

print drupal_render(drupal_get_form("comment_form", (object) array('nid' => $data->nid)));

または

print drupal_render(drupal_get_form("comment_node_news_form", (object) array('nid' => $results[0]->nid)));

しかし、どれも正しく機能しませんでした!

5
shekoufeh
<?php
$comment = new stdClass;
$comment->nid = $row->nid;
$form = drupal_get_form('comment_form', $comment);
print render($form);
?>

私のために働く。 Content:Nidフィールドが[〜#〜] above [〜#〜]Global:PHPフィールド、それ以外の場合(その下にある場合)$row->nidは変数として使用できません。

enter image description here

更新

Qをより注意深く読んだ後、フッターにそれを入れたいので、フォームのノードIDを指定する必要があります。 (このコメントが格納されるノードの下)の場合:/ node/1

<?php
$comment = new stdClass;
$comment->nid = 1;
$form = drupal_get_form('comment_form', $comment);
print render($form);
?>

/ node/5が必要な場合は、この行を$comment->nid = 5;に変更します

[〜#〜]または[〜#〜]

これを動的にしたい場合、nidは表示しているページに基づいてください。次に使用します

<?php
if ($node = menu_get_object()) {
$comment = new stdClass;
$comment->nid = $node->nid;
$form = drupal_get_form('comment_form', $comment);
print render($form);
}
?>

:フォームはビューのプレビューではレンダリング/表示されませんが、ノードにアクセスすると表示されます。

5
No Sssweat