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

カテゴリ コンテンツの作成 コアバージョン 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. 関連モジュール昇順で並び替える タイトル
ユーザ 7.22 Realname ユーザーIDではなくニックネーム等を表示したい
ユーザ 7.44 Quickbar 会員の種別(役割)別にメニューを設けたい
SSH 7.50 ProxyCommand SSH IP制限を1コマンドで通過する
Proxy 7.59 Proxy Apache settings.php リバースプロキシ(Apache)+バックグランドWeb(Drupal 7 )でログインセッションを維持する方法
サイトの構築 7.19 Plesk Pleskでdrupal7(プライベートファイルシステム)を使う場合の注意点
コンテンツの作成 8.4x PhpSpreadsheet Excelを読み書きする方法
アップデート 8.9.x PHP CentosでPHPのバージョンアップ(例:5.3->5.6)を行う方法
コンテンツの管理 7.16 PHP 好きなところにノードを埋め込みたい
JavaScript 7.34 PHP PHPからJavaScriptに変数値を渡したい
JavaScript 8.5.x PHP Commerce決済モジュール設定をJavaScriptにデータに渡す方法
チューニング 7.26 PHP DrupalはNginxで動く?
PHP 8.3x PHP drupa8でhook_init()する方法
Database 7.34 PHP データベースクエリ(SELECT)時のSQL関数
PHP-FPM 8.9.x PHP PHP-FPM 環境で .htaccess に php_value を 書いてもダメ
コンテンツの作成 7.26 PHP ノード内の一部(フィールド)を変更する
PHP 7.22 PHP ノードに付いたコメントを好きな場所に表示する
PHP 8.9.x PHP YamlをPHP配列にする方法
ユーザ 7.23 PHP user_load_multiple()の復帰値
ユーザの管理 7.27 PHP 新規ユーザーの追加ができない
ユーザの管理 7.50 Paypal continued billing drupal7のPaypal継続課金モジュールについて

ページ