添付の写真をご覧ください。私のプロジェクトの1つに、ユーザーがデータを編集および追加できる分類法があります。複数のタブがあり(図1を参照)、各タブには複数のフィールドがあり、そこに段落を追加できます(図2を参照)。
それぞれ異なるタイトルの異なる種類の段落があります。私たちの問題は、管理者と開発者向けのよりわかりやすいタイトルを維持しながら、「meting」というタイトルの付いた各段落をエンドユーザーに表示したいということです(2番目の画像、「Meting(decimaal)toevoegen」ボタン)。
1つのオプションは、DBで実際のタイトルを維持しながら、エンドユーザーのタイトルを変更することです。もう1つは、DBの実際のタイトルを変更し、管理者向けに変更することです(システム名をタイトルとして設定)。
私はあらゆる種類のフックを試しましたが、この問題に頭を悩ませることはできません。
ソリューション:サイトの構造上、フックソリューションを機能させることができませんでした。それで私は自分のモジュールを書きました。それは以下のJavaScriptをフォームに添付します。
(function ($) {
'use strict';
Drupal.behaviors.test_form_styles = {
attach: function (context, settings) {
var regEx = /(?:meting)/i;
var paragraphTitles = document.getElementsByClassName("paragraph-type-title");
Object.keys(paragraphTitles).forEach(function (key) {
if (regEx.test(paragraphTitles[key].innerHTML)){
paragraphTitles[key].innerHTML = "Meting";
}
});
var submitButtons = document.getElementsByClassName("field-add-more-submit");
Object.keys(submitButtons).forEach(function (key) {
if (regEx.test(submitButtons[key].value)) {
submitButtons[key].value = "Meting toevoegen";
}
});
}
}
} (jQuery));
フォーム内の特定の段落のタイトルを変更する場合:
/**
* Implements hook_field_widget_WIDGET_TYPE_form_alter().
*/
function mymodule_field_widget_entity_reference_paragraphs_form_alter(&$element, &$form_state, $context) {
if ($element['#paragraph_type'] == 'foo') {
// insert more conditions
$element['top']['paragraph_type_title']['info']['#markup'] = t('New title for paragraph type Foo');
}
}