Drupal 7: создание фильтра таксономии с помощью флажков - PullRequest
0 голосов
/ 09 февраля 2012

Я хочу создать страницу с фильтром таксономии, используя флажки, и когда один или несколько флажков отмечены, это создает список страниц ниже, которые помечены выбранной таксономией. E.g Фильтр может содержать категории A, B, C, D и E в качестве флажков. Если пользователь помечает категорию A и категорию D, то нажимает кнопку отправки, все страницы, связанные с A и D, будут перечислены ниже.


Кажется, борются, используя оба метода! Кто-нибудь получил учебник или пошаговое руководство, которое я мог бы использовать? В противном случае, кто-то может помочь со следующими вопросами?

  1. Я создал форму в блоке - блоке - 1.tpl.php, получив теги таксономии с помощью taxonomy_get_tree (1); и цикл по ним, чтобы создать флажки. Я надеялся, что смогу как-то получить данные постов и создать список событий (страниц), которые будут содержать выбранные теги. Где бы я сделал PHP для этого? Я предполагаю, что это не будет в файле шаблона, так было бы в моем пользовательском модуле? Если так, то как?

  2. Я думал о создании формы и использовании hook_form_FORM_ID_alter, но как мне создать форму с помощью тегов таксономии? Как мне добавить эту форму в мой блок?

  3. Есть ли другие варианты?

Спасибо

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

Другим вариантом будет использование решения Faceted Search, например http://drupal.org/project/facetapi.. Оно работает с любым базовым поисковым решением, включая SOLR, если у вас большие объемы.

1 голос
/ 09 февраля 2012

Вы можете сделать это, используя превосходный модуль Views . Представления позволяют создавать настраиваемые списки содержимого, которые вы можете настроить для фильтрации пользователем. Здесь есть хорошая статья о создании фильтруемого списка с представлениями.

http://www.advomatic.com/blogs/amanda-luker/build-filterable-staff-directory-drupal-6-or-7

Вы сможете легко настроить этот учебник, чтобы включать флажки вместо выпадающих.

0 голосов
/ 16 февраля 2012

Чтобы изменить фильтр от выбора до флажков, я сделал следующее:

function mymodule_form_alter(&$form, &$form_state, $form_id) {

switch ($form_id) {
case 'views_exposed_form':
    $form['tid']['#type'] = 'checkboxes';
break;
    }
}
...