Как настроить шаблон формы блока поиска по умолчанию?

Как настроить шаблон формы блока поиска по умолчанию, теперь я использую шаблон ниже, чтобы отобразить блок формы поиска, но этот код не позволяет мне редактировать и настраивать каждую часть этой формы отдельно и не имеет гибкость.

форма - поиск-блок-form.html.twig

<form{{ attributes.addClass('search-form', 'search-block-form') }}>
  {{ children }}
</form>

, а затем напечатайте в моей теме под кодом ниже:

{{ page.search_box }}

Есть ли лучшее предложение имени шаблона с большим количеством переменных и гибкостью в настройке?

6 голосов | спросил Mojtaba Reyhani 11 AM00000010000001931 2016, 01:08:19

2 ответа


4

Если вы хотите использовать Twig, вы можете сделать это, создав настраиваемый модуль, например:

MyModule / mymodule.module

<?php

use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_theme_suggestions_alter
 */
function mymodule_theme_suggestions_alter(array &$suggestions, array $variables) {

    if (isset($variables['element']) && isset($variables['element']['#type']) && $variables['element']['#type'] == 'form') {
        $original_theme_hook = $variables['theme_hook_original'];

        $suggestions[] = $original_theme_hook . '__' . str_replace('-', '_', $variables['element']['#id']);
    }

    return $suggestions;

}

/**
 * Implements hook_form_alter()
 */    
function mymodule_form_alter(&$form, FormStateInterface $form_state, $form_id) {

    if ($form_id == 'search_block_form') {

      $form['#theme'] = ['my_search_form'];

    }

}

/**
 * Implements hook_theme()
 */
function mymodule_theme() {

    $themes['my_search_form'] = ['render element' => 'form'];

    return $themes;

}

MyModule /шаблоны / my_search_form.html.twig

hello {{ form.keys }} world {{ form.actions }}

Результат:

 введите описание изображения здесь>> </a> </p>

<p> В теме Бартика: </p>

<p> <a href= введите описание изображения здесь>> </a> </p></body></html>

ответил No Sssweat 24 PM00000010000003331 2016, 13:04:33
5

Поисковый блок предоставляется основным модулем Поиск. Если вы установите этот модуль, блок будет доступен в макете блока, когда вы поместите блок.

Возможно, вы уже это сделали, установив стандартный профиль.

Чтобы настроить форму поиска, вы можете использовать гиперссылку с формой.

Например, поместите эту функцию в mytheme.theme, чтобы изменить кнопку поиска:

function mytheme_form_alter(&$form, $form_state) {
  if ( $form['#form_id'] == 'search_block_form' ) {
    $form['actions']['submit']['#value'] = t('Search my Website');
  }
}
ответил 4k4 11 PM00000040000004831 2016, 16:37:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132