新規ノード作成時のリファレンス方法

カテゴリ コンテンツの作成 コアバージョン 7.34 関連モジュール Entityreference prepopulate

ノードを構造的にReferenceさせています。
コンテンツタイプ1ノード
 |
 +ー コンテンツタイプ2ノード(コンテンツタイプ1をReferenceする)
 +ー コンテンツタイプ2ノード(コンテンツタイプ1をReferenceする)
というように下位ノードから上位ノードをReferenceさせる場合、下位ノード新規作成時、hook_form_alter()で入力フォームにデフォルト値を入れるPHPコードを書いています。

先々を考えると、なるべくPHPは書きたくありません。何か良い方法はありませんか?

コメント

ユーザー actbrain の写真

Entityreference prepopulateモジュールを使えば良いと思います。
https://www.drupal.org/project/entityreference_prepopulate

新規ノードを作成する場合のパスは「node/add/コンテンツタイプ」になりますが、Entityreference prepopulateモジュールを使い、パスを「node/add/コンテンツタイプ?フィールド機械名=Reference先ノードid」(※1)とすると、自動的にフォームデフォルト値にしてくれます。

※1)パス
・フィールド機械名:field_reference_toなど、コンテンツタイプのフィールド管理ページで標示されるフィールド機械名です。
・Reference先ノードid:親ノードのことです。親ノードの表示ページに子ノードを新規作成するリンクを置くならば、arg(1)で取得できます。
という状況なら、「node/add/content_type?field_reference_to=<?php print arg(1) ?>」という記述をテンプレートまたはブロックに挿入することで実現できます。

フォームの方をReadonlyやHiddenにもできるので結構便利です。

ページ

OTHER FAQ

Drupal開発・運用の疑問/質問の答えはここに

無料ユーザー登録すると質問できます。

カテゴリ Core Ver.降順で並び替える 関連モジュール タイトル
拡張機能 8.3x Contribute modules drupal8-寄贈モジュールの動向
Viewsプログラミング 8.4x Views drupal8におけるViewsプログラミング
コンテンツの作成 8.4x node node保存前に色々やる方法
コンテンツの作成 8.4x json jQueryにjsonで渡す方法
video 8.4x video map 動画上にクリッカブルマップを作成する方法
コンテンツの作成 8.4x archiver zipファイル圧縮・解凍する方法
Views 8.4x hook_views_query_alter Viewsクエリの条件式にサブクエリを追加する方法
Initial 8.4x Subscriber hook_init() 〜 drupal_goto() を drupal8でやる方法
コンテンツの管理 8.4x Entity EntityをPropertyで探す(クエリする)方法
テーマ 8.4x hook_preprocess_html bodyタグにnode idやaliasのClassを追加する方法
コンテンツの作成 8.4x コンテンツ作成時のフォームレイアウトの変更
コンテンツの作成 8.4x PhpSpreadsheet Excelを読み書きする方法
Views 8.4x hook_views_query_alter Viewsクエリに多くの条件を追加する方法
Views Exposed Filter 8.4x hook_views_pre_view Views Exposed Formの複数単語入力(textfield)をフォーム上だけ複数行入力(textarea)にする方法
SFTP 8.4x SFTP RSA SFTP(RSA)でファイル転送(送信)する方法
サイト情報 8.4x JavaScript JavaScriptに変数を渡す方法
Token 8.4x Token カスタムモジュールからtokenを提供する方法(drupal8版)
コンテンツの作成 8.4x Download とにかく何でもコンテンツをダウンロードさせる方法
コンテンツの作成 8.4x node 新規ノードを作成する
Views 8.4x hook_views_query_alter 現在のViewsクエリを保存・再現する方法

ページ