Drupal 7:使用复选框创建分类过滤器

时间:2012-02-09 10:19:04

标签: drupal drupal-taxonomy

我正在寻找使用复选框创建包含分类过滤器的页面,当勾选一个或多个复选框时,这将创建下面用所选分类标记的页面列表。例如,过滤器可以包含类别A,B,C,D和E作为复选框。如果用户勾选类别A和类别D,然后单击提交按钮,将在下面列出与A和D关联的所有页面。


似乎在努力使用这两种方法!有没有人得到我可以使用的教程或分步指南?否则,有人可以帮助解决以下问题吗?

  1. 我通过使用taxonomy_get_tree(1)获取分类标签,在block - block - 1.tpl.php中创建了表单;并循环遍历这些以创建复选框。我希望我能以某种方式得到帖子数据并创建一个包含所选标签的事件(页面)列表。我会在哪里为此做PHP?我猜它不会在模板文件中,所以它会在我的自定义模块中吗?如果是这样,怎么样?

  2. 我在考虑创建表单并使用hook_form_FORM_ID_alter但是如何使用分类标签创建表单?我如何将此表单添加到我的块中?

  3. 还有其他选择吗?

  4. 由于

3 个答案:

答案 0 :(得分:1)

您可以使用优秀的Views module执行此操作。通过视图,您可以创建可以设置为由用户过滤的内容的自定义列表。这里有一篇关于构建带有视图的可过滤列表的好文章。

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

您应该能够轻松调整本教程以包含复选框而不是下拉列表。

答案 1 :(得分:1)

另一种选择是使用像http://drupal.org/project/facetapi这样的分面搜索解决方案。它适用于任何底层搜索解决方案,包括SOLR(如果您有大量卷)。

答案 2 :(得分:0)

要将过滤器从选择更改为复选框,我执行了以下操作:

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

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