假设我的网站销售汽车和其他运输方式。我有一个名为Product的内容类型,它用分类法分类,例如。汽车,自行车,船,直升机。
Product
内容类型包含一些CCK字段,用于描述产品的基本功能,例如horsepower
,number_of_wheels
和top_speed
。
我使用视图覆盖分类术语页面,并显示一些公开的过滤器,以便用户缩小选择范围。
我的问题是,在查看某些字词时,我的某些曝光过滤器并不适用。例如,如果我正在查看自行车术语,我不希望能够按horsepower
进行过滤!或者,如果我正在查看船只,我不希望能够按number_of_wheels
进行过滤(因为我的船都没有轮子)。
如果视图中没有行包含该字段中的数据,是否有办法隐藏字段的公开过滤器?
答案 0 :(得分:0)
只有一种内容类型“产品”虽然简单,但最终会导致冗余和问题,例如您现在体验的内容。添加单个内容类型要好得多;汽车,自行车,船只和他们独有的场地。这样,您就可以在针对内容类型的视图中轻松创建过滤器。
如果你要在mysql中创建表,你会只有一个表产品吗?我希望不是。 ; - )
答案 1 :(得分:0)
如果您无法像Gary Green所建议的那样分支您的内容类型,制作单独的视图(通过更精细的视图过滤器控制),您可以使用hook_form_alter来检查对应于的分类法字段的默认值您的产品类型(自行车,船只等),然后通过将#access设置为FALSE来删除字段。
如果你不习惯使用hook_form_alter,你也可以将它们设置为display:none with jQuery(不要删除它们,否则表单在提交时不会通过安全/完整性测试)。不幸的是你不能用简单的css做到这一点,因为至少在D6中,CCK过滤器输入元素没有足够的id或类来允许简单的css操作。
这预先假定您为每个分类标识确定的产品类型都有单独的视图页面;您的描述听起来就像这种类型的设置。