BEF+VAF или как скрестить бобра с козлом?

Главные вкладки

Аватар пользователя direqtor direqtor 24 декабря 2012 в 4:40

Есть два модуля, Бивис и Батхед Better Exposed Filters (BEF) и Views Autocomplete Filters (VAF). Очень удачные модули, весьма рекомендую, но вот случилось так, что они понадобились мне оба в одной форме раскрытых фильтров. Причем понадобились позарез, клиент плачет и слезно умоляет. Но, вот такая, понимаешь, загогулина получается:
И на этом избирательном участке выборы подделывают.

Потому у меня пара вопросов к коллективному думателю:

  1. Есть ли какая штатная возможность использовать сразу два плагина exposed filters во Views? Может какой третий хитрый плагин, что позволяет использовать два вместе?
  2. Насколько трудоемко внутривидовое скрещивание этих плагинов собственном модуле? Тут просьба ответить тем, кто умеет эти самые модули для views писать и имеет опыт подобного плана.

Комментарии

Аватар пользователя Nikit Nikit 24 декабря 2012 в 15:15

http://drupal.org/node/809656 - для bef тут сделали патч автокомплита, но с багами.
Но у Андрея работает с этого патча: http://drupal.org/files/issues/Screenshot%20-%2001.09.png

Я бы просто в кастомном модуле сделал hook_form_alter и добавил функцию для автокомплита в выбранный элемент.

Аватар пользователя direqtor direqtor 26 декабря 2012 в 6:00

"Nikit" wrote:
hook_form_alter

Совет, конечно, хороший, но...
25 типов товаров и планируются новые, на каждый по две формы поиска по полям, у каждого два-три десятка специфичных полей. Я устану писать хуки. Smile
Пойду смотреть патч.

Аватар пользователя iNFerNo iNFerNo 26 декабря 2012 в 8:52

а как вы сделали чтобы после включения модуля Views Autocomplete Filters он появлялся. У меня не появляется нифига... в списке фильтров

Аватар пользователя Nikit Nikit 26 декабря 2012 в 15:12

Чтото такое, писал без проверки, но общий способ понятен:

function YOURMODULE_form_alter(&$form, &$form_state, $form_id) {
if (strpos('views_exposed_TUTUTU', $form_id) !== FALSE) {
  if (in_array($view->name, array('view1', 'view2', ...)) {
    if (isset($form['given_element'])) {
      $form['given_element']['#autocomplete'] = 'TRATATA';
    }
  }
}

$view должен быть в form_state или в $form, devel поможет.