カスタムDrupal 8テーマの.themeファイルで、デフォルトの検索ブロックをカスタマイズして、カスタムクラスを追加し、入力ラベルを変更してWordの「search」を削除できるようにするにはどうすればよいですか。代わりにfontawesomeの検索アイコンがありますか?
ほとんどの場合、最終的な出力コードは次のようになります。
<div class="infoBar-search">
<form action="#!" class="searchForm">
<input type="search" name="sitesearch" placeholder="Search...">
<input type="submit" class="searchForm-submit fa" value="">
</form>
</div>
.themeアプローチはこれを行うための最良の方法でしょうか?いくつかのテンプレートファイルを変更してみましたが、サイトの他のフォームにも影響することに気付きました。
これはよりエレガントにできると確信していますが、フォーム[]の#icon_variableを使用してこれを行うことで、入力候補を変更できました。ボタンのアイコンを追加するサイドと追加のオプションを...- icon-class.html.twigなどに追加しました。
1)入力に提案を追加する
function MODULE_theme_suggestions_input_alter(array &$suggestions, array $variables, $hook) {
if (isset($variables['element']['#icon']) || isset($variables['element']['#icon-left']) || isset($variables['element']['#icon-right'])) {
$suggestions[] = 'input__submit_icon';
if (isset($variables['element']['#icon'])) {
$suggestions[] = 'input__submit_icon_' . $variables['element']['#icon'];
}
}
}
次に、これをフォームに追加/変更できます。
$form['actions']['submit']['#icon-left'] = 'icon-class';
input__submit_icon.html.twig
のようなテンプレートで:
<button {{ attributes }} >
{% if element['#icon-left'] %}
<i class="{{ element['#icon-left'] }}"></i>
{% endif %}
{{ attributes.value }}
{% if element['#icon-right'] %}
<i class="{{ element['#icon-right'] }}"></i>
{% endif %}
</button>
最初にdrupal 8の検索ブロックを使用し、次に検索フォームをhook_form_alter関数でオーバーライドします。次に、最後にそのブロックをテンプレートファイルにレンダリングします。
まず、これをオーバーライドしますtwigカスタムテーマテンプレートのファイル。block--search-form-block.html.twig _div class="infoBar-search"> {{ title_prefix }} {% if label %} {{ label }} {% endif %} {{ title_suffix }} {% block content %} {{ content }} {% endblock %} /div>
_
Divタグを修正してください。次に、.themeファイルのhook_form_alterを使用して、変更したいものを変更します。
function hook_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) { if ($form_id == 'search_block_form') { $form['#attributes']['class'][] = 'searchForm'; $form['keys']['#attributes']['placeholder'] = t('Search...'); $form['actions']['submit']['#attributes']['class'][] = '"searchForm-submit fa'; }