tl; dr:デフォルトのタイトルを指定し、ユーザーが変更できないようにします。
D7→D8 変更レコードの状態:
node_type-> has_titleがエンティティフォームの表示を優先して削除されました
エンティティフォーム表示を使用してノードタイトルウィジェットの動作を構成できるようになったため、ノードのタイトルフォーム要素を非表示にする特別なフラグは不要になりました。
特定のノードタイプのタイトルを非表示にするには、「フォーム表示の管理」UIを使用するか、次のようなスニペットで非表示にします。
$form_display = entity_get_form_display('node', 'article', 'default');
$form_display->removeComponent('title');
$form_display->save();
それを読んだ後、私はいくつかの方法を試しました。最後の1つだけが機能するので、この回答は何を試してはならないかについての警告として役立つはずです。
entity_form_display設定を編集します
独自のモジュールの場合はcore.entity_form_display.node.my_content_type.default.yml
、title
キーを編集してから削除しますcontent
。これはフィールドで機能しますが、タイトルや、昇格、作成などの他のデフォルトの項目を削除した場合でも、フォームのに表示され/node/add/my_content_type
ます。
コードでentity_form_displayを変更する
次のコードを追加しますmy_module_install
。
$form_display = entity_get_form_display('node', 'my_content_type', 'default');
$form_display->removeComponent('title');
$form_display->save();
これは視覚的には機能しますが、このソリューションには3つの問題があります。-それでも、参照する整合性制約エラーが発生します。-これは、データベースの設定がインストール時にファイルの設定を上書きする原因になります。これは、私見では悪い考えです。- entity_get_form_display
廃止されました
entity_form_display構成で非表示にします
非表示にしますが、削除しないでください。でcore.entity_form_display.node.my_content_type.default.yml
:
hidden:
title: false
試行錯誤の結果、ここでは論理が逆になることがわかりました。これも、参照する整合性制約エラーの原因になります。
CSSを使用して非表示にする
私はこれを試しました、そしてタイトルに空の文字列も許可されていないようです。したがって、コアノードモジュールのほとんどのコードを再実装する独自のエンティティタイプを作成するか、...
私が見つけた唯一の実用的な解決策
デフォルトのタイトルを指定し、ユーザーが変更できないようにします。
function my_module_form_node_my_content_type_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
$form['title']['#disabled'] = 'disabled';
$form['title']['widget'][0]['value']['#default_value'] = 'none';
}
あなたは、変更される可能性none
にmy_module
タイムスタンプ、またはピーナッツバターのあなたのお気に入りのブランド、。
Node::setTitle
ですか?