Drupal View中的当前日期令牌

时间:2012-03-19 12:02:34

标签: drupal drupal-7 drupal-views

我希望使用当前日期作为变量在Drupal 7的View中创建一个Math表达式。我没有找到任何简单的标记或方法来引用视图中数学表达式中的当前日期。

有谁知道这样做的有效方法?

3 个答案:

答案 0 :(得分:0)

我也在寻找这个。这就是我刚刚一起扔的东西。

<?php
/**
 * Implements hook_views_api()
 */
function mymodule_views_api() {
  return array("version" => "3.0");
}

/**
 * Implements hook_views_data_alter()
 */
function mymodule_views_data_alter(&$data) {
  $data['views']['nothing_token'] = array(
    'title' => t('Custom text with token replacement'),
    'help' => t('Provide custom text or link with token replacement.'),
    'field' => array(
      'handler' => 'views_handler_field_custom_token',
    ),
  );
}

class views_handler_field_custom_token extends views_handler_field_custom {
  function query() {
    // do nothing -- to override the parent query.
  }

  function render($values) {
    global $user;

    $data = array(
      'user' => $user,
      'view' => $this->view,
    );
    // Return the text, so the code never thinks the value is empty.
    return token_replace($this->options['alter']['text'], $data);
  }
}

然后在您的视图中,您将添加“全局:带有令牌替换的自定义文本”字段,并在文本字段中使用[current-date:raw]。然后,您可以使用该字段添加数学表达式。您可以扩展views_handler_field_math类以在那里执行相同的操作,但尚未尝试过。

答案 1 :(得分:0)

我喜欢Jonathan在自定义文本字段中允许令牌的方法。虽然因为render()函数不是为我输出值而对我不起作用。我不得不使用render_text函数。这对我来说非常适合全班。它对核心视图行为的破坏性也有点小。

class views_handler_field_custom_token extends views_handler_field_custom {
  function render($values) {
    global $user;

    $data = array(
      'user' => $user,
      'view' => $this->view,
    );
    // Return the text, so the code never thinks the value is empty.
    return token_replace(parent::render($values), $data);
  }

  function render_text($alter) {
    global $user;

    $data = array(
      'user' => $user,
      'view' => $this->view,
    );

    return token_replace(parent::render_text($alter), $data);
  }

}

答案 2 :(得分:-1)

如果您只是想知道如何在令牌中使用当前日期,请参阅以下可用格式列表:

https://drupaltokens.com/tokens/current-date