Comment faire de l'arithmétique sur un filtre contextuel


9

Plutôt que de spécifier un filtre contextuel, est-il possible de spécifier un filtre contextuel +1 (c'est-à-dire en ajouter un à la valeur actuelle du filtre?)

Si vous avez une vue prenant un argument, je comprends que vous pouvez créer un champ de texte global pour créer un lien vers une autre vue en utilisant l'argument d'origine.

C'est à dire dans view1 / arg1 je peux avoir un champ de texte global qui sort comme un lien vers view2 / arg1

Est-il possible de créer un champ de texte global qui génère un lien vers view2 / arg1 + 1

c'est-à-dire ajoute un à l'argument actuel?

Réponses:


1

Dans Vues pour D7 (pas sûr de D6), vous pouvez ajouter un champ de type "Expression mathématique" pour faire ce genre de chose. Entrez l'expression [!1]+1(ou peut-être [%1]+1) dans le champ d'expression mathématique, puis les champs de texte ultérieurs peuvent faire référence à cette valeur (dans leurs sections de réécriture) comme [expression].


0

Le PHP est normalement ma réponse, mais il semble qu'il ne supporte pas encore PHP dans les filtres contextuels ...

Il vous faudra donc créer vous-même un module puis:

Je suppose que votre premier argument est celui que vous souhaitez modifier, et je n'ai pas de vue contre laquelle je peux tester en ce moment, vous devrez donc print_r($ query-> where [0]); `pour voir ce qui est en cours là-bas et ajouter à la valeur correcte.


0

Faites quelque chose comme ça.

<?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

Vous pouvez créer un modèle de vues pour vos vues et faire quelque chose comme ceci ci-dessous.

<?php $arg = arg(1);  ?>
<a href="<?php print base_path() . 'view2/' . ($arg + 1) ;?>">Link to view</a>  
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.