为 Drupal 视图中的公开项目提供预定义的选项列表?

Posted

技术标签:

【中文标题】为 Drupal 视图中的公开项目提供预定义的选项列表?【英文标题】:Supplying a predefined list of options for an exposed item in a view in Drupal? 【发布时间】:2010-08-03 14:44:53 【问题描述】:

我有一个按年份过滤的视图。年份是内容类型上的普通文本 CCK 字段。我已经在视图中公开了这个字段,以便用户可以为它输入一个值。例如。 2010。然后它将显示字段设置为 2010 的所有内容类型。我的问题是,我不希望用户输入值。我想将该文本字段更改为几年后的下拉菜单。

我的选择是:

    用 JQuery 破解它 --> 非常糟糕 在页面上输出之前使用一些钩子或其他东西编辑暴露的值 还有其他选择吗?

我的问题是,我该怎么做选项 2,或者最坏的情况,选项 3?

【问题讨论】:

【参考方案1】:

当您在管理字段中编辑 CCK 字段时,您可以为该字段设置允许的值。如果这样做,当您返回视图时,您将拥有一个新过滤器,Field - 允许值,当您公开它时,它将为您提供一个允许值的选择菜单。

如果您不想在创建期间限制值,则必须更改自定义模块中的公开表单:

function mymodule_form_alter(&$form, $form_state, $form_id) 
  if ($form_id === 'views_exposed_form') 
    // Change field_test_value to the name of your field
    $form['field_test_value']['#type'] = 'select';
    $form['field_test_value']['#options'] = array(
      '' => '', 
      '2010' => '2010', 
      '2009' => '2009');
  

查看Form API reference 了解您还能做什么。

【讨论】:

以上是关于为 Drupal 视图中的公开项目提供预定义的选项列表?的主要内容,如果未能解决你的问题,请参考以下文章

Drupal:如何在具有来自外部数据库选项卡的数据的视图中添加公开过滤器

Drupal 视图 - 当视图没有结果时不显示任何公开的过滤器选项

为块中的公开字段设置值(在 Drupal 中)?

Drupal、视图、公开过滤器:自定义默认选定标签

Drupal:在视图标题中显示公开的过滤器值

Drupal 视图和公开的过滤器 - 如何重置可选的下拉列表过滤器,或允许“全部”选择