Message d'avertissement

The subscription service is currently unavailable. Please try again later.

comment faire ce genre de page avec views ?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour

Je souhaiterais créer une page qui ressemble au modèle attaché en image. J'imagine que cela passera par le module Views. Ma question est simple, comment feriez vous ?

Le but est d'avoir un bloc contenant plusieurs vues (un glossaire, 3 ou 4 de termes de taxonomie avec un menu déroulant) et d'un pager au bas de la page. Le résultat affiché dépendant de ces filtres.

Merci.

Fichier attachéTaille
Icône image maquette.png13.06 Ko
Version de Drupal : 
Tags : 

Très simple il suffit de créer une vue avec tout les résultat que vous voulez afficher, ajouter un attachment qui contient vos filtre.

Pour voir un exemple activer la vue Glossary disponible par défault dans views.

  • Commencer avec la vue glossary dans views, pour ce faire cloner la vue.
  • Dans "Page settings" changer le chemin avec le chemin que vous souhaiter.
  • Modifier les fields que vous voulez afficher, le type de noeuds, etc...
  • Dans "Contextual filters" si vous avez clone la vue glossary il devrai y avoir un filtre par titre "Contenu: Titre". Il suffit de cliquer sur ce filtre et de mettre "Display all results for the specified field " pour voir tout les résultat dès l'arrivée sur la page.
  • Puis pour rajouter des filtres selon la taxonomie, il suffit d'ajouter à la vue principal un "Sort criteria" et de cocher "Expose this sort to visitors, to allow them to change it "

parfait, effectivement c'est mieux comme ça

par contre je préfère passer par "Filter criteria" pour rajouter mes termes" + "Expose this sort to visitors, to allow them to change it"

il ne reste plus que 3 choses à trouver:
- comment déplacer le positionnement de ces filtres, peut être du coté du module panel et utiliser des content pane ?
- comment afficher toutes les lettres du glossaire même quand il n'y a aucune entrée (ex : A (2) | B (0) | C (5) | D (0)| E (0) | F (2) )
- changer le -ANY- dans les filtres

en tout cas merci, on est vite perdus dans Views ...

pour le moment ca donne ceci :

Alors dans l'ordre :

  • Pour changer l'emplacement des filtres avec les lettres, il suffit de modifier le "Display output" dans les paramètre thème. Par exemple pour le glossary, le thème à modifié est views-view--glossary--page.tpl.php.
    Il suffira de mettre à l'intérieur de ce fichier :

    <?php if($attachment_before): ?>
    <div class="attachment attachment-before">
      <?php print $attachment_before; ?>
    </div><!-- .attachment, .attachment-before -->
    <?php endif;?>

    <?php if($exposed): ?>
    <div class="view-filters">
      <?php print $exposed; ?>
    </div><!-- .view-filters -->
    <?php endif;?>

    <?php if ($rows): ?>
    <div class="view-content">
      <?php print $rows; ?>
    </div><!-- .view-content -->
    <?php endif; ?>

  • Pour afficher toute les lettres il suffit de créer un fichier dans votre thème avec le nom views-view-summary-unformatted.tpl.php et de mettre à l'intérieur:

    <?php
    $total
    = 0;
    $letters = range('A', 'Z');

    foreach($rows as $id => $row){
     
    $existing_letters[] = $row->link;
     
    $urls[$row->link] = $row->url;
     
    $counts[$row->link] = $row->count;
     
    $total += $row->count;
    }

    $letters[] = 'Tous';
    $existing_letters[] = 'Tous';
    $urls['Tous'] = substr_replace(strtolower($rows[0]->url), 'all', -1, strlen($rows[0]->link));
    $counts['Tous'] = $total;

    print '<div class="views-summary views-summary-unformatted">';
    foreach(
    $letters as $letter){
      if(
    in_array($letter, $existing_letters)){
       
    $nav[] = '<span class="result"><a href=' . $urls[$letter] . '>' . $letter . '</a></span><span class="count"> (' . $counts[$letter]. ')</span>';
      }
      else {
       
    $nav[] = '<span class="no-result">' . $letter . '</span>';
      }
    }
    print
    implode(' | ', $nav);
    print
    '</div><!-- .views-summary, .views-summary-unformatted -->';
    ?>

  • Pour le -ANY- cela est dût au faite que views ne met pas les traduction en bundle avec le module, il suffit d'aller télécharger la traduction sur http://localize.drupal.org et de l'importer dans votre base de donnée en allant dans "admin/config/regional/translate/import".

alors dans l'ordre

1 : pas trouvé le fichier, ou suis je censé le trouver stp ?
2 : j'avais déjà un fichier existant dans /sites/all/modules/views/theme j'ai juste ajoute ton code et ça fonctionne bien, comment rajoutes tu également de 0 à 9 sans les caractères spéciaux ?
3 : effectivement avec localize cela fonctionne bien

bon en tout cas j'aurais jamais trouvé sans toi, t'es un bon :)

merci !

update : bon j'ai trouvé pour les 0 à 9 mais c'est laid, l'idéal aurais été une entrée du type 0-9 (incluant tous les résultats de 0 à 9 par exemple 0-9 | A | B | C ... TOUT) mais la je pense que j'en demande trop

dernière chose, j'ai un problème lorsque je clique sur Tous > Un choix interdit a été détecté. Veuillez contacter l'administrateur du site. < trouvé, erreur due à mes filtres, est il possible de concilier à la fois les filtres et 'Tous' ?

Pour le premier fichier ainsi que pour le deuxième il faut les créer dans votre thème, je vous que vous utiliser encore bartik, il faut que créer un subtheme de bartik si vous comprenez l'anglais => http://technobabble.drupalgardens.com/blog/creating-sub-theme-bartik

Ensuite pour le probeleme avec les filtres et tous essayer de changer cette ligne:

$urls['Tous'] = substr_replace(strtolower($rows[0]->url), 'all', -1, strlen($rows[0]->link));

Par:

$urls['Tous'] = substr_replace(strtolower($rows[0]->url), 'all', strpos($rows[0]->link, '?'), strlen($rows[0]->url));

Bonjour,
je suis débutant sur drupal et j'ai un probleme je n'arrive pas à afficher mon contenu comme je veux, je m'explique j'aimerais afficher mes contenu comme sur le site:

http://gastronomie.kalys.com/

on voit sur la page d'accueil un texte en entête ensuite il ya 3 colonnes ou dans chaque colonne il ya plusieurs articles.

j'aimerais savoir faire cela mais je ne sais pas comment est ce que quelqu'un pourrais m'aider svp??