Submitted by fvictoire on
Bonjour,
J'ai créé une vue de type calendar avec des dates récurrentes.
Hors les dates récurrentes ne s'affichent pas dans les différentes cellules du calendrier (par mois dans mon exemple) mais toute dans la 1ère cellule.
Pourtant j'ai bien décoché la case 'Display all values in the same row' dans le paramétrage de mon champs date dans ma vue.
Il a fallut que je modifie la requête SQL de la vue car les dates ne sont pas accessibles immédiatement (du moins je n'ai pas réussi avec Views UI, donc j'ai préféré modifier directement ma requête, qui me renvoie les bons résultats).
Pour être plus clair, j'ai créé un type de contenu Profil qui contient un champ Tranche_horaire_nid qui est une entité référence vers un type de contenu Tranche horaire. Le type de contenu Tranche horaire contient une date récurrente (ou non, au choix de l'utilisateur) :
Profil
-field_trache_horaire_nid : entity reference vers Tranche Horaire (cardinalité illimité)
Tranche horaire
- field_tranche_horaire_date (date récurrente)
Ma vue calendar me permet d'afficher le planning d'un profil en fonction des différentes tranches horaires qu'il a créé.
Voici la requête SQL de la vue :
function ressourcesap_view_views_pre_execute(&$view)
{
if ($view->name=='planning' and $view->current_display == 'month') {
$profil_nid = $view->args[0];
$date = $view->args[1];
$query = db_select('node', 'th_node');
$query->addField('th_node','title','node_title' );
$query->addField('th_node','nid', 'nid');
$query->addField('th_node','language','node_language');
$query->addField('dth','field_tranche_horaire_date_value','field_data_field_tranche_horaire_date_field_tranche_horaire_' );
$query->addField('dth','entity_type', 'field_data_field_tranche_horaire_date_node_entity_type');
//$query->addField('dth','bundle', 'field_data_field_tranche_horaire_date_bundle');
//$query->addField('dth','field_tranche_horaire_date_value2', 'field_data_field_tranche_horaire_date_field_tranche_horaire__1');
//$query->addField('dth','field_tranche_horaire_date_rrule', 'field_data_field_tranche_horaire_date_field_tranche_horaire__2');
$query->innerjoin('field_data_field_tranche_horaire_date','dth','th_node.nid = dth.entity_id');
$query->innerjoin('field_data_field_tranche_horaire_nid','thn','th_node.nid = thn.field_tranche_horaire_nid_target_id');
$query->innerjoin('node','profil_node','thn.entity_id = profil_node.nid');
$query->where(" (th_node.status = '1') ");
$query->where(" (profil_node.status = '1')");
$query->where("( (DATE_FORMAT(ADDTIME(FROM_UNIXTIME(dth.field_tranche_horaire_date_value2), SEC_TO_TIME(3600)), '%Y-%m') >= '".$date."' AND DATE_FORMAT(ADDTIME(FROM_UNIXTIME(dth.field_tranche_horaire_date_value), SEC_TO_TIME(3600)), '%Y-%m') <= '".$date."') )");
$query->where(" (profil_node.nid = '".$profil_nid."') ");
$query->orderBy('dth.field_tranche_horaire_date_value');
$view->build_info['query'] = $query;
}
}
Cette requette fonctionne correctement.
Quand j'inspecte les valeurs du champs date de ma vue avec dpm(), la valeur multiple est positionné.
Je ne comprends pas pourquoi mes dates ne s'affichent pas dans plusieurs cellules.
Quelqu'un aurait-il une explication et pourrait m'aider ?
Merci d'avance.
Fabrice V.
Fichier attaché | Taille |
---|---|
Le résultat de la vue | 158.54 Ko |
La configuration de la vue (bien que la requête SQL soit changée) | 206.84 Ko |
La configuration du champs date | 197.33 Ko |