Je suis au point de l'expérience Drupal où j'essaie de résoudre les problèmes de conception de sites au niveau du code personnalisé à l'aide des API Drupal et Views. Comme d'habitude, ma tentative apparemment simple de résoudre un problème m'a démontré combien je ne sais pas encore!
J'ai un champ de référence de nœud qui pointe vers un contenu de «faits liés» utilisé par de nombreux types de contenu et sous-catégories différents pour chacun de ces types. Bien que je puisse créer une relation et afficher les «faits associés» pour une vue, il y a des problèmes. D'une part, je veux que les faits connexes soient placés dans un bloc distinct et pour afficher une seule liste de faits connexes pour la liste complète des articles fournis par la vue. Views ne gère pas les doublons pour plusieurs nids avec la même référence de «faits liés». En outre, je devrais générer des vues distinctes sur les «faits connexes» pour chaque type de contenu et sous-catégorie, qui seront un nombre assez important.
Si je pouvais créer une vue des faits connexes distincte pouvant accepter une liste de nids comme argument, la vue des faits connexes pourrait être simplifiée. Ma question est donc de savoir comment procéder. Bien que cela puisse être possible à partir des vues, je cherche une solution php de module personnalisé , j'ai donc besoin de réaliser ce qui suit:
Extrayez les résultats de n'importe quelle vue de type de contenu sous forme de liste d'arguments. En plus d'afficher les résultats de la vue, je dois charger la liste des NID affichés.
Appelez la vue des faits liés et passez-lui la liste des nids à utiliser comme filtre ou filtre contextuel dans la vue des «faits liés».
Information additionnelle:
En utilisant cette stratégie, j'ai commencé par définir une vue et tenter d'en extraire les résultats. Cette tentative a conduit à un problème pour trouver les résultats dans l'objet de vue ( voir cette question ). Une fois que j'aurai les résultats, je devrai générer une autre vue qui aura ces résultats sous forme de filtres. J'ai vu des vues implémentées à partir de code comme des fichiers d'inclusion où tous les paramètres sont codés, mais je n'ai pas trouvé d'exemples qui définissent et génèrent une vue et manipulent les résultats à l'aide d'une fonction php. Tous les exemples ou liens seraient appréciés.
Jusqu'ici:
Deux réponses ont porté sur le processus d'application des résultats d'une vue et de placement dans une autre vue en tant que filtre contextuel. Mais je suis toujours confronté au problème d'avoir des dizaines de types de contenu avec au moins une douzaine de variantes de volet de contenu d'affichage dans chacun. Au lieu de lier directement chaque vue aux faits connexes, je devrai faire en sorte que chacune de mes vues de contenu de vue1 transmette ses résultats à une seule vue de «fait lié» distincte.
CONTENT TYPE SUB-CATEGORY RELATED FACT (nid)
Type 1 --------- General Info 101, 105
Specifications 103, 105
Inspections 102
Quality
etc...
Type 2 ----------General Info 101, 106
Specifications 102, 103
Cost factors 107
etc...
View1 recherche un type de contenu spécifique et contient divers articles de sous-catégorie triés par valeur dans un champ de sous-catégorie. En outre, il contient un champ de référence de nœud pour les faits associés. Affichez un filtre pour un type de contenu et une sous-catégorie et a des champs exposés pour l'affichage et un champ masqué avec les nœuds de référence de faits associés.
View2 filtre les articles «faits associés» et contient un ensemble de filtres contextuels pour nid (bien que le paramètre s'applique à l'URL)
En utilisant le code dans la réponse de Letharion, la boucle foreach à la ligne 6 compile une liste des ID d'article, pas les identifiants de faits associés (les articles contiennent une référence à des faits liés, mais les faits liés n'ont pas de référence de nœud aux articles) . J'ai besoin d'extraire les identifiants de faits associés du champ de faits de chaque nœud. J'ai inclus le champ des faits dans la définition de View1, mais je ne trouve pas le résultat depuis la commande dpm ($ node); s'est écrasé et je ne sais pas où les valeurs sont stockées dans le tableau.
Puisqu'il y aura plus d'un View1 cloné pour différents types de contenu, j'ai pensé qu'il pourrait être judicieux d'utiliser hook_views_post_execute et je l' ai codé comme suit:
function mymodule_views_post_execute (&$sourceview) {
$nids = '';
foreach($sourceview->result as $node) {
$nids += $node->nid . ','; //I need field name for $node->facts
}
$nids = rtrim($nids, ',');
$view = views_get_view('get_related');
//dpm($nids); // Fatal error: Cannot unset string offsets...
$view->execute_display('panel_pane_1', array($nids));
}
Enfin, je ne sais pas si je dois diriger l'affichage de la vue vers l'emplacement approprié ou cela se fait-il simplement en plaçant le volet de contenu des faits connexes à l'emplacement du panneau via l'interface utilisateur des panneaux et en laissant le thème des panneaux gérer le reste.