web-dev-qa-db-ja.com

ノードフォームの作成

特定のコンテンツタイプのノードフォームを作成する方法を知っている人はいますか? Content> Add Content> Content Typeをクリックする代わりに、わからないので、サイドバーに移動して、そこに情報を入力します。

これは、体験談コンテンツタイプのように匿名アクセスを許可するコンテンツタイプに最適です。 http://goo.gl/LMpSS には短い説明がありますが、実際には何も説明されておらず、さらに多くのことを望んでいます。

5
enchance

フォームブロック モジュールの使用をお勧めします。
このモジュールは、ノードフォームをブロックで公開するだけです。ブロックを有効/無効にするコンテンツタイプごとに追加のオプションセットが表示されます。

プログラムで行う必要がある場合は、@ kiamlalunoによって提案されているように、node_add()が最善の方法です。

7
Olof Johansson

ガイドラインとして node_add() のコードを使用できます。

function mymodule_node_form($type) {
  global $user;

  $output = array();
  $types = node_type_get_types();

  if (isset($types[$type])) {
    $node = (object) array(
      'uid' => $user->uid,
      'name' => (isset($user->name) ? $user->name : ''),
      'type' => $type,
      'language' => LANGUAGE_NONE,
    );

    $output = drupal_get_form($type . '_node_form', $node);
  }

  return $output;
}
8
kiamlaluno

SOから恥知らずに持ち上げられた:

https://stackoverflow.com/questions/5344754/drupal-7-how-to-display-node-add-sometype-form-on-another-page#answer-7740337

module_load_include('inc', 'node', 'node.pages');
$form = node_add('node_type');

@ "Marius Ilie"への称賛

1
chim

私は試していませんが、ディスプレイ(ブロック、コンテンツパネル、ビューなど)を作成し、このディスプレイにdrupal_get_form()呼び出しを配置する必要があると思います。

プログラムでディスプレイを作成するか(hook_block_view()など)、またはViewsモジュールを使用できます。このモジュールを使用して、新しいビュー(admin/structure/viewsで)を作成し、表示(たとえば、「ブロック」)を追加してから、「グローバルテキスト領域」(ヘッダーまたはフッターに)を追加しますPHPコード(グローバルテキストのフォーマッタを変更することを忘れないでください、「フィルタされたHTML」を「PHPコード」に。

最後に、ブロックを作成した場合は、必要な場所に配置できます(admin/structure/blockの管理UIを使用)。

0
user1241