簡體   English   中英

Drupal視圖中的當前日期令牌

[英]Current Date Token in Drupal View

我正在使用當前日期作為變量在Drupal 7的View中創建數學表達式。 我還沒有在視圖中的數學表達式中找到任何簡單的標記或引用當前日期的方式。

有人知道這樣做的有效方法嗎?

我也只是在尋找這個。 這就是我剛剛提出的。

<?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類,以在那里執行相同的操作,但尚未嘗試過。

我喜歡喬納森(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);
  }

}

如果您只想知道如何在令牌中使用當前日期,請參閱以下可用格式列表:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM