ノードを構造的にReferenceさせています。
コンテンツタイプ1ノード
|
+ー コンテンツタイプ2ノード(コンテンツタイプ1をReferenceする)
+ー コンテンツタイプ2ノード(コンテンツタイプ1をReferenceする)
というように下位ノードから上位ノードをReferenceさせる場合、下位ノード新規作成時、hook_form_alter()で入力フォームにデフォルト値を入れるPHPコードを書いています。
先々を考えると、なるべくPHPは書きたくありません。何か良い方法はありませんか?
コメント
Entityreference
パーマリンク Submitted by actbrain on 2016/09/14 16:39.
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にもできるので結構便利です。
ページ