Une façon de filtrer par numéro de semaine?

9

Drupal 7, Vues 3

J'ai plusieurs vues configurées qui affichent des données sur plusieurs années. Les données sont filtrées par année en utilisant un champ de date comme critère de filtre. Pour chaque année, j'ai des vues de pièces jointes que je dois filtrer davantage par semaine. Plutôt que de déterminer les dates exactes des semaines de chaque année et de les saisir manuellement comme critères de filtrage, je me demande s'il existe un moyen d'ajouter un critère de filtrage pour filtrer par numéro de semaine, c'est-à-dire de la semaine 1 à la semaine 52. De cette façon, le seule la date qui doit être définie est l'année pour chaque vue, et le reste se produit automatiquement en fonction du numéro de semaine.

J'agrège un grand nombre de données par année et par semaine dans une vue de tableau où chaque colonne est une pièce jointe de vue supplémentaire et j'essaie d'éviter d'avoir à saisir manuellement les filtres pour les dates de la semaine par an.

Quelqu'un at-il des conseils / astuces pour moi à ce sujet? Merci beaucoup.

Voici le code avec lequel je joue actuellement:

function x_week_start($date) {
    $ts = strtotime($date);
    $start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts);
    return date('Y-m-d', $start); 
}

function x_week_end($date) {
    $ts = strtotime($date);
    $start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts);
    return date('Y-m-d', strtotime('next saturday', $start)); 
}

$date = '2013-01-14';
$start = x_week_start($date);
$end = x_week_end($date);
$inquiry_date = date('Y-m-d', $data->field_field_inquiry_date[0]['raw']['value']);

if ($inquiry_date <= $start) {return FALSE;}

Je dois ajouter que field_inquiry_date fieldc'est un horodatage Unix.

user1055810
la source
Je pense que vous devez créer votre propre filtre personnalisé voir ce module Cela peut aider drupal.org/project/customfilter
Mohammed Gomma
Il semble que l'approche du lien de Bala devrait bien fonctionner.
Niall Murphy

Réponses:

2

Voici une astuce: créez un nouveau format de date en accédant à Admin> Configuration> Régional et langue> Date et heure et en cliquant sur l'onglet Formats (admin / config / regional / date-heure / formats).

Réglez-le sur W (c'est W majuscule), et il vous donnera le numéro de semaine, que vous pouvez utiliser avec n'importe quelle date.

De cette façon, vous pouvez inclure le champ de date directement dans les vues, définir le filtre W et utiliser l'agrégation, le filtre, etc. sans codage supplémentaire.

Antonio Hernandez
la source