Drupal 当字段数据可用时,仅显示公开的筛选器

Drupal 当字段数据可用时,仅显示公开的筛选器,drupal,drupal-views,drupal-exposed-filter,Drupal,Drupal Views,Drupal Exposed Filter,假设我的网站出售汽车和其他交通工具。我有一个名为Product的内容类型,它是用分类法分类的,例如汽车、Biyces、船只、直升机 产品内容类型有一些CCK字段来描述产品的基本功能,如马力、车轮数量和最高速度 我使用视图覆盖分类术语页面,并显示一些公开的过滤器,以便用户缩小选择范围 我的问题是,我的一些公开过滤器在查看某些术语时并不真正适用。例如,如果我正在查看自行车术语,我不希望能够通过马力进行过滤!或者,如果我正在查看船只,我不想通过轮子的数量进行过滤,因为我的船只都没有轮子 那么,如果视图

假设我的网站出售汽车和其他交通工具。我有一个名为Product的内容类型,它是用分类法分类的,例如汽车、Biyces、船只、直升机

产品内容类型有一些CCK字段来描述产品的基本功能,如马力、车轮数量和最高速度

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

我的问题是,我的一些公开过滤器在查看某些术语时并不真正适用。例如,如果我正在查看自行车术语,我不希望能够通过马力进行过滤!或者,如果我正在查看船只,我不想通过轮子的数量进行过滤,因为我的船只都没有轮子


那么,如果视图中没有行包含某个字段中的数据,有没有办法隐藏该字段的公开筛选器?

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


如果您要在mysql中创建表,您会只使用一个表产品吗?我希望不是-

如果您不能像Gary Green建议的那样对内容类型进行分支,使用更细粒度的视图过滤器控制创建单独的视图,您可以使用hook_form_alter检查与产品类型bicycles、boats等对应的分类字段的默认值。,然后通过将这些字段的访问权限设置为FALSE来删除这些字段

如果您不习惯使用hook\u form\u alter,还可以将其设置为显示:使用jQuery时为none不删除它们,否则表单在提交时将无法通过安全性/完整性测试。不幸的是,您不能用简单的css来实现这一点,因为至少在D6中,CCK过滤器输入元素没有足够的特定id或类来允许简单的css操作


这假定您对每个分类法确定的产品类型都有单独的视图页面;您的描述听起来像是这种类型的设置。

是的,我完全明白您的意思,谢谢您的评论。我试图让它保持灵活性,以允许使用我的示例,一款混合动力汽车船产品能够很好地存在。我想我将不得不接受它,并将其分为不同的内容类型。再次感谢!混合动力汽车船听起来不错,我想要一辆!无论如何,在这种情况下,我会再次创建一个新的内容类型来显示两栖车-Drupal的好处是,您不必反复创建字段,您可以在新的内容类型中重复使用它们,只需从CCK的下拉菜单中选择即可。您有字段和字段实例。例如,您可以有一个通用字段名标题,并将其附加到多种内容类型。对于您的情况,请从cars内容类型中选择字段,以便更容易在CCK中创建。一旦制作完成,你以后就不用担心了。谢谢你的回复,詹姆斯,我感谢你的意见。我从来没有玩过现场访问,所以你鼓励我为了将来的目的研究它。最终,对于这个问题,我认为对我来说最有效的选择是对内容类型进行分支,并牺牲少量的灵活性。再次感谢!谢谢你,德帕尔。我同意,出于这个目的,分支内容类型听起来更有意义。请注意,有一个使用CCK打包的模块,您可以激活内容副本或类似的名称,它允许您创建一个包含所有各种属性的内容类型,您可以将其克隆到新的内容类型中,然后删除不需要的各种字段。这将节省您的时间,并防止跨产品内容类型的一致性错误。