web-dev-qa-db-ja.com

フォームの特定の段落のタイトルを変更する

Picture 1

Picture 2

添付の写真をご覧ください。私のプロジェクトの1つに、ユーザーがデータを編集および追加できる分類法があります。複数のタブがあり(図1を参照)、各タブには複数のフィールドがあり、そこに段落を追加できます(図2を参照)。

それぞれ異なるタイトルの異なる種類の段落があります。私たちの問題は、管理者と開発者向けのよりわかりやすいタイトルを維持しながら、「meting」というタイトルの付いた各段落をエンドユーザーに表示したいということです(2番目の画像、「Meting(decimaal)toev​​oegen」ボタン)。

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));
1
tail-my-error

フォーム内の特定の段落のタイトルを変更する場合:

/**
 * 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');
  }
}
1
4k4