Blogueur

« ezzahrm »

ezzahrm
28 novembre 2011

Mettre en forme les filtres exposés d’une View en Drupal

Exposer à l’internaute des filtres d’une Views, c’est pratique mais difficile à mettre en forme, surtout lorsque les filtres sont nombreux et de nature diverses (checkbox, select, …), voilà à quoi on peut arriver par défaut :

Pas facile dans l’état actuel de mettre en forme ces .views-exposed-widget sans class et ID CSS.

Le module views utilise un template générique pour afficher les filtres, vous le trouverez dans le module ici : /views/theme/views-exposed-form.tpl.php
Faites une copie de ce dernier et placez-le dans votre thème, videz le cache du registre (theme registry).

Ce template s’applique pour toutes les views de votre site, on va donc le renommer pour cibler notre view spécifique de cette façon : views-exposed-form–NomDeLaView–DisplayID.tpl.php.
Explorer les $variables avec dpm($widgets).
En explorant et en choisissant les variables PHP dont on a besoin, on va pouvoir répartir les filtres dans diverses colonnes avec des DIV.

Voici le résultat :

<?php dpm($widgets); ?>

<div class=’filter-block’>

<h3 class=’filtre-titre’>Titre</h3>

<?php print $widgets['nom_du_filtre'] ?>

</div>

même chose pour le reste des filtres.





ezzahrm
2 août 2011

Afficher tous les nodes d’un type de contenu

Sur un de mes projets, je dois afficher la liste de tous les nodes d’un type de contenu pour extraire les champs qui m’intéresse, malheureusement la fonction node_load() ne retourne qu’un seul node même chose pour node_load(array(« type » => ‘mon_type_de_contenu’)).
La fonction suivante permet d’afficher la liste de tous les nodes d’un type de contenu donnée :

function node_load_by_type($type, $limit = 100, $offset = 0) {
$nodes = array();
$query = db_rewrite_sql(« SELECT nid FROM {node} n WHERE type = ‘%s’ », ‘n’);
$results = db_query_range($query, $type, $offset, $limit);
while($nid = db_result($results)) {
$nodes[] = node_load($nid);
}
return $nodes;
}