当字段数据可用时,仅显示公开的过滤器

时间:2011-03-30 08:34:18

标签: drupal drupal-views drupal-exposed-filter

假设我的网站销售汽车和其他运输方式。我有一个名为Product的内容类型,它用分类法分类,例如。汽车,自行车,船,直升机。

Product内容类型包含一些CCK字段,用于描述产品的基本功能,例如horsepowernumber_of_wheelstop_speed

我使用视图覆盖分类术语页面,并显示一些公开的过滤器,以便用户缩小选择范围。

我的问题是,在查看某些字词时,我的某些曝光过滤器并不适用。例如,如果我正在查看自行车术语,我不希望能够按horsepower进行过滤!或者,如果我正在查看船只,我不希望能够按number_of_wheels进行过滤(因为我的船都没有轮子)。

如果视图中没有行包含该字段中的数据,是否有办法隐藏字段的公开过滤器?

2 个答案:

答案 0 :(得分:0)

只有一种内容类型“产品”虽然简单,但最终会导致冗余和问题,例如您现在体验的内容。添加单个内容类型要好得多;汽车,自行车,船只和他们独有的场地。这样,您就可以在针对内容类型的视图中轻松创建过滤器。

如果你要在mysql中创建表,你会只有一个表产品吗?我希望不是。 ; - )

答案 1 :(得分:0)

如果您无法像Gary Green所建议的那样分支您的内容类型,制作单独的视图(通过更精细的视图过滤器控制),您可以使用hook_form_alter来检查对应于的分类法字段的默认值您的产品类型(自行车,船只等),然后通过将#access设置为FALSE来删除字段。

如果你不习惯使用hook_form_alter,你也可以将它们设置为display:none with jQuery(不要删除它们,否则表单在提交时不会通过安全/完整性测试)。不幸的是你不能用简单的css做到这一点,因为至少在D6中,CCK过滤器输入元素没有足够的id或类来允许简单的css操作。

这预先假定您为每个分类标识确定的产品类型都有单独的视图页面;您的描述听起来就像这种类型的设置。