J'essaie d'obtenir une union des nœuds et des commentaires d'un utilisateur triés par "date de publication". Cet article est lié aux projets de bac à sable pour D6, mais il n’ya rien pour 7.
Cet article présente un exemple d'utilisation de hook_views_pre_execute () et d'un SQL UNION dans D6. Cela ne fonctionne pas pour D7 avec les vues 3.
Je suis tombé sur le commentaire de Merlinofchaos
Comme nous utilisons maintenant le nouveau générateur de requêtes de Drupal, la requête est un objet SelectQuery que vous devrez modifier ou remplacer. Recherchez la nouvelle couche de base de données Drupal 7 pour plus d'informations.
Quelqu'un at-il un exemple de la façon de procéder ou toute autre solution permettant de combiner deux points de vue?
Réponses:
Voici un exemple de travail et testé:
Cela fonctionne pour la plupart des vues. Cependant, certains plugins de style peuvent faire des choses fantaisistes qui ne fonctionneront pas avec cette technique (module Agenda, je vous regarde).
la source
Vous pouvez utiliser le module Views extra handlers pour générer des requêtes SQL UNION à partir de deux vues / affichages différents.
Un tutoriel détaillé sur drupal.org ici
https://www.drupal.org/project/views_extra_handlers
la source
J'ai fini par utiliser db_query () pour créer les SQL UNION, puis le rendre dans une présentation de tableau incluant des pagers à l'aide de la fonction theme ().
Pour l'utilisateur, cela ressemble à des vues par défaut. L'autre avantage était que je pouvais optimiser beaucoup la requête. Je montre "les activités de mes amis" et si vous utilisiez des vues pour cela, cela créerait une liste de vos amis et l'utiliserait dans une clause SQL "IN" qui est très lente si vous avez plus de 50 ou 100 enregistrements.
Je pourrais restreindre cette liste d'amis à ceux qui ont été connectés au site au cours des x derniers jours.
Ceci est un exemple de code:
la source
Pour référence future, voici comment j'ai combiné deux vues basées sur la même table. Les mêmes principes devraient également s'appliquer aux vues basées sur différentes tables avec le même nombre de champs.
Dans le cas ci-dessous, seul id est sélectionné car le format est défini sur entité rendue. Mais si vous utilisez des champs, vous pouvez toujours ajouter des champs factices supplémentaires à la requête comportant moins de champs, comme j'ai ajouté l'horodatage ci-dessous.
la source
J'imagine que c'est quelque chose comme ça:
Bien que je ne l'ai pas testé.
Quelques liens qui peuvent aider:
http://api.drupal.org/api/drupal/includes!database!select.inc/function/SelectQueryInterface%3A%3Aunion/7
http://drupal.org/node/557318#comment-1991910
la source
Je suis tombé sur un module appelé Vues Field View , qui vous permet d'intégrer une vue en tant que champ dans une autre vue. Je ne l'ai pas encore essayé moi-même, mais cela pourrait vous être utile.
la source
Le EntityFieldQuery Vues Backend requêtes de support pour plusieurs types d'entités en même temps. Il devrait donc être possible d’interroger les nœuds et les commentaires. Les deux types d'entités utilisent une
uid
propriété pour créer un lien avec leur auteur. Par conséquent, au niveau de l'API, EntityFieldQuery :: propertyCondition () devrait être utilisable pour sélectionner les nœuds et les commentaires d'un seul utilisateur. Je suppose que le point de vue offre la même fonctionnalité.la source
Une approche différente pourrait consister à créer des flux de nœuds et de commentaires (avec un filtre contextuel de l'identifiant de l'utilisateur dans l'URL), puis à combiner les deux flux dans un nouveau flux et à l'afficher par date de publication.
la source
Utilisé Global: champs PHP ? Vous pouvez les utiliser pour coller ensemble une vue combinant les deux.
Créer une vue de contenu avec contenu: Titre et contenu: Champs de commentaires (exclus de l'affichage).
Ajoutez un champ PHP qui calcule ce qui est le plus récent, la date de la dernière mise à jour ou la date du dernier commentaire de l'utilisateur, et définissez la valeur du champ sur cette date. Ajoutez ce champ comme condition de tri.
Ajoutez un champ similaire qui génère un lien vers le commentaire ou vers le nœud.
Ça me semble bien!
la source