[Résolu] Comment créer une views comportant les derniers articles de plusieurs catégories

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 @ toutes et tous,

J'espère que je vais être assez clair :D

Je souhaite créer dans une vue (views) qui s'affichera dans un bloc (jusque là pas de soucis) mais qu'elle ait pour résultat le titre et le teaser du dernier article de chaque catégorie de mon site.
Prenons l'exemple d'un site d'actualités sportives :
Je souhaiterai que ma vue m'affiche le dernier article de chaque catégories : Cyclisme + Football + Rugby

Je me doute bien qu'il va falloir utiliser la taxonomie dans le filtre de ma vue mais comment lui dire qu'elle m'affiche 3 fois que le dernier article de chaque catégorie !?!?
Suis-je obligé de créer 3 vues que j'intègre après dans mon template ? Si c'est ca ... alors il reste encore des modules à créer sous Drupal ;)
Merci pour vos lumières

Forum : 
Version de Drupal : 
Tags : 

Salut,

c'est effectivement un besoin assez commun et j'espère qu'une solution est possible avec les outils disponibles actuellement sous drupal (même si je conviens que moi aussi quelque fois je m'étonne que des besoins que je qualifierais de triviaux ne trouvent pas de solution triviale sous drupal ;) )

Je n'ai pas la solution, mais je pense à une piste:

Si tu avais posé la question en SQL, j'aurai cherché du coté de 'sous-select':
trois sous select ramenant le dernier article pour chaque catégorie et un select chapeau pour les agréger.

Je ne sais pas comment coder un sous select avec views, peut être pouvons nous faire des vues de vues, auquel cas tu n'as plus qu'a afficher sous forme de bloc le résultat de ta vue de vues.

N'est il pas?

Trois vues peut-être pas, mais une vue avec trois display "Attachments" (traduit à tort par Fichier Attaché dans Views) me paraîtrait pas mal.

On crée un display block pour retourner le dernier article d'une des catégories. Puis on en crée deux autres de type Attachment, on les attache au premier et on change le filtre de catégorie sur chacun.

Trois minutes montre en main, et cette solution peut fonctionner pour des tas d'autres cas, sans écrire une ligne de code. Ça ne me paraît pas si mal. Views n'est pas une solution clefs en main, mais une boîte à outils demandant un peu de prise en main.

Et oui, il reste des modules à créer sous Drupal. C'est normal, il y a de plus en plus d'utilisateurs et donc de demandes diverses, que la communauté cherche, avec un succès variable il est vrai, à résoudre par des propositions adaptables et pas par des fonctionnalités monolithiques.

Merci @ vous pour vos lumières ;)
Numerizen, cette approche me parait tout à fait adéquate, je m'en vais la mettre en place !

Je vais abuser avec mes incompréhensions de trouver des fonctionnalités "de base" mais je cherche désespérément coller un attribut "disabled" (read only) à un champ input ...
Ben vous savez quoi ? il semblerait que le noyau ne le gère pas :(
Avez-vous une solution alternative ?

PS: En fouillant un peu sur le net, j'ai vu un "malin" qui avait détourné l'attribut "hidden" afin de lui passer la valeur "disabled" mais là c'est pas très "propre" ...

La gestion des forms laisse un peu à désirer sur certains points, c'est vrai. Drupal étant toujours un peu à cheval entre le développement et le paramétrage par UI, il arrive souvent qu'il faille écrire un petit module pour implémenter ce genre de fonctionnalités.

Celle-ci est un classique : il faut faire un hook_form_alter et ajouter l'attribut '#access' => FALSE (de mémoire) à l'objet $form.

Peut-être un module existe-t-il maintenant pour faire ce que vous voulez ; les choses bougent très vite en ce moment (tout le temps en fait).