Токен текущей даты в Drupal View - PullRequest
0 голосов
/ 19 марта 2012

Я хочу создать математическое выражение в View в Drupal 7, используя текущую дату в качестве переменной.Я не нашел ни одного простого токена или способа ссылки на текущую дату в математическом выражении в представлениях.

Кто-нибудь знает эффективный способ сделать это?

Ответы [ 3 ]

0 голосов
/ 08 августа 2014

Мне нравится подход Джонатана, позволяющий использовать токены в пользовательских текстовых полях.У меня не совсем получилось, потому что функция 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);
  }

}
0 голосов
/ 09 января 2018

Если вы просто хотите узнать, как использовать текущую дату в токене, посмотрите этот список доступных форматов:

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

0 голосов
/ 06 апреля 2012

Я тоже искал это. Это то, что я только что бросил вместе.

<?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);
  }
}

Затем, по вашему мнению, вы добавили бы поле «Global: пользовательский текст с заменой токена» и использовали [current-date: raw] в текстовом поле. Затем вы можете добавить математическое выражение, используя это поле. Возможно, вы сможете расширить класс views_handler_field_math, чтобы сделать там то же самое, но еще не пробовали.

...