2012-03-19 15 views
0

現在の日付を変数として使用して、Drupal 7のビューで数式を作成したいと考えています。ビュー内の数式内で現在の日付を参照する単純なトークンや方法は見つかりませんでした。Drupalビューの現在の日付トークン

誰でも効果的な方法を知っていますか?

答えて

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クラスを拡張して同じことをすることができるかもしれませんが、試していません。

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

} 
関連する問題