Drupal 7 дурной #weight в Better Exposed Filters

Может случиться так, что в bef понадобится кое-какая простенькая разметка. Для этого можно использовать hook_form_alter и кроме нужного элемента упорядочить веса элементов формы используя '#weight'. Не вопрос...

123456789101112131415
function template_form_alter(&$form, &$form_state, $form_id) {  if($form_id == 'views_exposed_form') {    if($form['#id'] == 'views-exposed-form-view-zzz') {      // Новый элемент собственной персоной      $form['filter'] = array(        '#type' => 'item',        '#markup' => '<span>'.t('Filter').':</span>',        '#weight' => 1      );      // Веса для прочих элементов формы, добавленных в Views UI      $form['type']['#weight'] = 2;      $form['field_zzz_value']['#weight'] = 3;    }  }}

Класс, но этот код не заработает. Вернее, нужного результата это не принесёт. Ответ нашёл на .

Достаточно впилить что-то такое:

123456789101112131415161718
function template_form_alter(&$form, &$form_state, $form_id) {  if($form_id == 'views_exposed_form') {    if($form['#id'] == 'views-exposed-form-view-zzz') {      // Новый элемент собственной персоной      $form['filter'] = array(        '#type' => 'item',        '#markup' => '<span>'.t('Filter').':</span>',      );      $new_form_info = array(        'filter-pl' => array('value' => 'filter'),      );      $form['#info'] = array_merge(        $new_form_info,         array_diff_assoc($form['#info'], $new_form_info)      );    }  }}

Теперь в $form['#info'] первым элементом будет наш новый элемент. Такой вот Drupal 7.

Добавить комментарий

Содержание этого поля является приватным и не предназначено для показа.

Plain text

  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.