ノード作成フォームをビュー内に埋め込むにはどうすればよいですか


7

いくつかのフィールドといくつかのリンクアイテムを含むビューがあります。

リンク項目をクリックすると、リンクに関連付けられたノード作成フォームがビュー内に表示されます(AJAXの方法)。

私が考えることができる解決策は、ビュー内にフォームを埋め込むことですが、それを行う方法がわかりませんか?

これを実装する最良の方法は何ですか?



@Bala:私はDrupal 7を使用しています:(
kmdhrm

1
このkahthong.com/2012/01/embed-drupal-node-form-anywhereを確認してください:ビューのphpモジュールを使用して、この行をphpフィールドに追加できます "print drupal_render(node_add( 'NODE_TYPE'));"
バラ

回答:


5

これがあなたに役立つことを願って、

Drupal 7では、次の手順で達成できます

  • VIEW内にノード作成フォームを埋め込むことができます

    • いずれかでVIEWヘッダーまたはあなたが作成することができ、新たなビューをし、あなたのVIEWに添付します
  • この例では、ビューヘッダー内に埋め込みます。Viewsヘッダー内に埋め込むのがより良いオプションです。クリックしてビューヘッダー追加

    ここに画像の説明を入力してください

  • グローバルを選択:テキスト領域

    ここに画像の説明を入力してください

  • PHPコードを追加し、テキスト形式をPHPに変更することを忘れないでください

    ここに画像の説明を入力してください

  • PHPコード

    <?php 
        module_load_include('inc', 'node', 'node.pages');
        $node_form = node_add('node_type');
        print drupal_render($node_form);
    ?>

注意 :

  • PHPコードのnode_typeを置き換えることを忘れないでください。

  • ノードの作成後、フォームはノードの詳細ページにリダイレクトされるため、ノードフォームのリダイレクトにはhook_form_alterを使用します。ページにリダイレクトする場合は、リファレンスを使用し$form_state['redirect'] = 'mycustompage'; ます

  • admin / modulesを使用してPHPフィルターモジュールを有効にする

ここに画像の説明を入力してください

  • 次のように、PHPコードの実行に対して「管理者」を有効にして、このモジュールの権限を設定します。

ここに画像の説明を入力してください

より良い解決策がある場合は、それを共有してください。


「ノードフォームのリダイレクトにhook_form_alterを使用する」を展開していただけませんか?
KyleM 2013年

また、ユーザーが「PHPフィルター」モジュールを有効にする必要がある場合は、「PHPコードの実行」の権限の下で「管理者」を選択する必要があります。解決策をありがとう!
KyleM 2013年

1
ご提案いただきありがとうございます。いくつかのコメントを逃しました。回答を更新しました。
inizio 2013年

ようこそ、お楽しみください:)
inizio '28

このソリューションは、特定のルーチンを渡すことなくレンダリングし、セキュリティの問題も実装します。たとえば、単純化モジュールはフォームから要素を削除するように機能せず、このコンテンツタイプから「ビュー」フィールドの方法でフォームを「構築」することはできません。このフォームは雑然としていてブロック(サイドバーなど)に実装できないため、ほとんどの場合役に立たないコアから「現状のまま」ノードフォームを実装するだけです。セキュリティ上の懸念がある大規模なプロジェクトでは、管理UIからphpコードを追加しないでください。
nilsun 2014年

1

カスタムコードを試して満足している場合は、StackOverflowで同様の質問が行われ、ビュー内にフォームを埋め込むためのかなり広範なソリューションがいくつかありました。あなたがしなければならないことは、あなたのタイプに固有のノード作成フォームのform_idを使用し、それをサイト内のここに投稿されたソリューションの1つに配置することだけです。


1

これについては、インラインエンティティフォームご覧ください。Commerce Kickstartは、これを製品と製品バリエーションを管理するためのレシピの一部として採用しています。今思い出すことができるよりももっとたくさんあると確信していますが、これが有望であると思われる場合、私は戻ってこの回答を改善します(または、おそらく他の人がこの回答の改善に役立つでしょう)。

潜在的な代替(または補完的な?)モジュールはEntity Views Attachかもしれません。これはコマースキックスタートでも採用されていると思います。


これがOT / OPからの望ましいアプローチを強調するかどうかはわかりません。IEFとEVAは、コンテンツフォームの発行よりも調査フォームのアプローチを対象としています。
nilsun 2014年

0

inizioが投稿したViews Headersソリューションにコメントすることはできません。評判が足りません。

まあ私は投稿した後、Rulesを使用してフォームのリダイレクトを解決でき、カスタムモジュールhook_form_alterを作成する必要がないことを投稿したいと思います。

  • ノードタイプの「新しいコンテンツを保存した後」にトリガーされるルールを作成する
  • 条件を追加し、データを比較して、セレクター[site:current-page:path]がビューパスと等しいことを比較します
  • アクションページのリダイレクトをビューパスに追加する

あまりにも役立ちますフォームをブロックし、高度なフォームブロックのモジュールが、ビューのヘッダにPHPのコードを入れて、あなたは余分なモジュールをインストールすることを防止します

そして、終わりました!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.