Comment trier l'Affichage des résultats par programme?
Je suis en train de prendre les résultats de la vue à l'aide de la fonction views_get_view_result()
- et trier le tableau dans un sens, je ne pouvais pas le faire de l'intérieur le point de Vue de l'interface. So far So good. J'ai un $lignes variable avec tous les trucs que j'ai besoin.
Maintenant... Comment puis-je le remettre? 🙂 Avant j'avais besoin de ce genre, j'ai utilisé views_embed_view()
, mais je ne peux pas faire plus.
Reconnaissant pour toute aide sur ce, se sent comme je suis si près de craquage!
$important_var = important_function();
$result = views_get_view_result($view, $display, $args);
$result = sorting_function($result, $important_var);
//TODO: Put the result back into the view
Vous pouvez modifier la requête SQL de la Vue de l'interface génère de faire le tri dans la requête?
Non, le tri, dépend de certaines variables qui ne sont pas disponibles dans ce contexte.
Non, le tri, dépend de certaines variables qui ne sont pas disponibles dans ce contexte.
OriginalL'auteur Ace | 2010-03-18
Vous devez vous connecter pour publier un commentaire.
Le point de vue du module fournit quelques crochets pour "externes" manipulations, comme base de Drupal.
Vous pouvez mettre en œuvre
hook_views_pre_render(&$view)
dans un module personnalisé et de manipuler la matrice de résultats disponibles dans$view->result
:Le crochet est invoquée dans le milieu de l'affichage des processus de production, après que toutes les données de résultat a été assemblé, mais avant la sortie réelle est rendu, de sorte que les modifications de la matrice de résultats seront reflétées dans les vues de la sortie finale.
EDIT: Alternativement, vous pourriez processus de la vue "manuellement", en copiant le comportement de la
views_get_view_result()
fonction, mais au lieu de retourner le résultat, vous le manipuler et de continuer à rendre la vue:Remarque: C'est beaucoup de duplication de code et donc sujettes à erreur - je ne recommande pas ce et préfère aller avec le crochet de mise en œuvre ci-dessus, en essayant de trouver un moyen d'obtenir l'accès à votre "$important_var " de l'intérieur.
Vous pouvez obtenir la variable externe contenu dans le crochet de la mise en œuvre (en appelant
important_function()
à partir de là, ou par l'intermédiaire d'un déjà peuplées global, ou en appelant un "get_x ()" fonction qui utilise une statique pour stocker la variable calculée précédemment), ou vous avez besoin de faire un traitement d'affichage "manuellement" - je vais mettre à jour ma réponse à montrer la dernière option.À l'aide de hook_views_pre_render ne fonctionne pas avec un pager. Elle ne sorte de la page en cours.
OriginalL'auteur Henrik Opel
Selon votre logique de tri, vous pouvez essayer en utilisant hook_views_query_alter() pour mettre en œuvre votre tri directement dans la requête.
Cela peut être un peu compliqué cependant, vous pouvez vous familiariser avec les views_query objet.
Voici un exemple concret où j'ai appliqué une règle de jointure basée sur le contexte de la page, puis de plus ajouté les règles de tri.
Voir: http://drupalcontrib.org/api/function/hook_views_query_alter/6
ORDER BY CASE
est cette réponse. Permet un arbitraire de l'ordre de tri de la liste de champs.merci pour l'exemple à l'aide d'alias de table en add_orderby 🙂
OriginalL'auteur speedytwenty
J'utilise ce code:
hook_views_pre_render ne fonctionne pas pour moi.
OriginalL'auteur Denis Borisov
J'ai combiné les exemples ci-dessus et l'a réécrit comme suit. Dans mon cas, j'ai dû trier les éléments individuellement.
NOTE: je ne comprend pas la condition de jointure, et je n'ai pas essayer avec champ personnalisé. Mais j'ai l'impression que vous pouvez facilement comprendre.
OriginalL'auteur user6200216