コンテキストフィルターで演算を行う方法


9

コンテキストフィルターを指定するのではなく、コンテキストフィルター+1を指定することは可能ですか(つまり、現在のフィルター値に1を追加しますか?)

引数を取るビューがある場合、元の引数を使用して別のビューへのリンクを作成するグローバルテキストフィールドを作成できることを理解しています。

つまり、view1 / arg1には、view2 / arg1へのリンクとして出力されるグローバルテキストフィールドを含めることができます。

view2 / arg1 + 1へのリンクとして出力するグローバルテキストフィールドを作成することは可能ですか

つまり、現在の引数に1を追加しますか?

回答:


1

D7のビュー(D6については不明)では、「数式」タイプのフィールドを追加して、このようなことを行うことができます。[ 数式]フィールドに式[!1]+1(または[%1]+1)を入力すると、後のテキストフィールドでこの値を([書き換え]セクションで)として参照できます[expression]


0

ビューPHPは通常私の答えですが、コンテキストフィルターでPHPをまだサポートしていないようです...

したがって、自分でモジュールを作成してから、次の手順を実行する必要があります。

  • hook_views_api()モジュールがAPIを使用することを望んでいることをビューに伝えるために実装します-参照:hook_views_query_alter()の使用方法
  • hook_views_query_alter()次に、実装は次のようにします。

    function YOURMODULE_views_query_alter(&$view, &$query) {
      if ($view->name == 'YOUR_VIEW_NAME') {
         $query->where[0]['conditions'][0] += $value; // change this line accordingly
      }
    }
    

私はあなたの最初の引数があなたが変更したいものであることを想定しています、そして今私がテストできるビューがないので、あなたはprint_r($ query-> where [0]); `が何であるかを見る必要があるでしょうそこに進み、正しい値に追加します。


0

このようなことをしてください。

<?php
  $view = views_get_current_view();
  $arg = $view -> args[0];
  $newarg = intval($arg) + 1;
?>
<a href="https://drupal.stackexchange.com/view2/<?php print($newarg); ?>">Increment my contextual filter</a>

0

ビューのビューテンプレートを作成し、以下のように実行できます。

<?php $arg = arg(1);  ?>
<a href="<?php print base_path() . 'view2/' . ($arg + 1) ;?>">Link to view</a>  
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.