デフォルトのテーマ/テンプレートに触れずにフォーム要素のマークアップを変更する方法を探しています。ソースコードを確認すると、Drupalはフォーム要素を編集するためのテーマ提案を推奨していないようです。公開されたフィルターの同じフィールドを使用する複数のビューがあります。フォームを編集しようとすると、 element-label.html.twigこれは、同じフィールドを持つすべての要素に影響します。
<!-- THEME DEBUG -->
<!-- THEME HOOK: 'form_element_label' -->
<!-- BEGIN OUTPUT from 'themes/iom/templates/layout/form-element-label.html.twig' -->
<label for="edit-field-themes-target-id" class="label">Themes</label>
<!-- END OUTPUT from 'themes/iom/templates/layout/form-element-label.html.twig' -->
2つのフックを実装する必要があるようです。 1つは提案を追加し、もう1つはテンプレートを定義します。 hook_theme_suggestions_HOOK_alter
および template_preprocess_form_element
(別名hook_preprocess_HOOK
)。
/**
* Implementation of hook_theme_suggestions_form_element_alter().
*/
function MYTHEME_theme_suggestions_form_element_alter(array &$suggestions, array $variables) {
if (\Drupal::service('path.current')->getPath() == '/user/login') {
$suggestions[] = $variables['theme_hook_original'] . '--user-login';
}
}
/**
* Implementation of hook_preprocess_form_element().
*/
function MYTHEME_preprocess_form_element(&$variables, $hook, &$info) {
$info['template'] = 'form-element--user-login';
}
ソース: フォーム要素テンプレートの提案は効果がありません 。