如何更改视图中的单个自定义字段值?


11

我有一个带有字段Global:Custom Text的视图,该字段被修改为链接。我想更改替换令牌以生成此链接,具体取决于其他字段的值。

试图在hook_views_pre_render中修改它,但是我找不到一种方法。

在hook_views_post_render中有两个数组:

$view->style_plugin->render_tokens
$view->style_plugin->row_tokens

其中包含每行生成的链接,但在pre_render中不存在,并且在post_render中进行更改也不起作用。

我也尝试在template_preprocess_views_view_fields中执行此操作,但是对于该特定视图,此函数不会触发(对于其他视图,则不会触发),我也不知道为什么。

Answers:


16
function hook_views_pre_render(&$view) {

  switch ($view->name) {
    case 'YOUR_VIEW_NAME':
      //  override the global custom text field value
      $view->field['nothing']->options['alter']['text'] = 'My custom text';
    break;
  }
}

检查链接以获取更多详细信息。 如何以编程方式将值插入视图的“全局自定义文本”字段中?

在视图中添加nid作为字段,并使用该字段作为条件,您可以如下添加条件: if ($nid == '124') { $view->field['nothing']->options['alter']['text'] = $nid}

简单的方法是创建一个新字段field_waga,如果您在视图中签入,它将使用field_waga_1作为新名称,然后可以更改标签并使用自定义值覆盖该字段

if($view->result[0]->field_waga[0]['raw']['value'] == '10') {
//here you can create the field to act as custom text field and enter the custom //value
$view->result[0]->field_waga_1[0]['#markup'] = 'alter';
}

此解决方案将每个字段都更改为“我的自定义文本”,我看不到这样的选项:仅更改所选字段并更改链接(如果将字段修改为显示为链接)。不幸的是,我不能使用在您提供的链接中提到的preprocess_views_view_fields()函数,因为出于未知(对我而言;))原因不会针对该特定视图触发此函数。
dmk.it,2013年

您可以添加如下条件:if($ nid =='124'){$ view-> field ['nothing']-> options ['alter'] ['text'] = $ nid}
苛刻的

检查更新的答案
严厉的

以这种方式添加条件:if($ view-> result [0]-> field_waga [0] ['raw'] ['value'] =='10'){$ view-> field ['nothing']- > options ['alter'] ['text'] ='ALTER'; }如果a在第一行中的值是“ 10”,则所有字段“ nothing”的值都为“ ALTER”。不幸的是,不仅是第一行,而且是所有行。我认为这是一个全局变更,不能用于选定的行。
dmk.it,2013年

1
不只是添加一个field_waga,您已经再次使用add字段,然后将该字段用作自定义字段来输入您的自定义值
严重的

0

作为上述答案的更新,我必须将'alter_text'设置为TRUE才能使其正常工作,例如:

function hook_views_pre_render(&$view) {

  switch ($view->name) {
    case 'YOUR_VIEW_NAME':
    //  override the global custom text field value
    $view->field['nothing']->options['alter']['text'] = 'My custom text';
    $view->field['nothing']->options['alter']['alter_text'] = TRUE;

    break;
  }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.