Submitted by tostinni on
Dans la serie je decouvre les vues, je voudrai le fils...
Bonne pioche ;)
Je souhaite donc faire la liste des derniers contenus d'un auteur que je puisse glisser ds un bloc qui irait dans la visualisation d'un node afin de me donner plus d'infos sur l'auteur.
Je pensais faire ca en 2sec et pourtant j'ai galere dessus un bon moment, voici le resume de cette aventure pour voir si y a de meilleures options:
- tout d'abord je me suis dit que le bloc author information serait utile mais non :(
-
ensuite je me suis dit qu'a coup de query je pouvais faire ca en 2mn chrono mais ayant entendu les louanges de views, je me suis decide a y jeter un oeil
-
faire une vue.
Vu ce que je cherchais ca me semblait extremement simple a faire avec Views. J'ai donc installe le module et commence a creer une vue.
De prime abord, c'est qd meme assez balese comme interface de creation et on sent la puissance du module. Cependant, pas moyen de rajouter un filtre qui prenne en compte l'UID de l'auteur du node que je suis en train de consulter. Grosse deception sur ce point la.
La je me suis dit que c'etait pas possible et que je devais qd meme pas etre le 1er a avoir eu l'idee de faire un ti bloc avec les 5 derniers contenus d'un auteur...
En cherchant un peu je suis tombe sur Views Argument API qui m'a tout de suite fait rever en lisant "You can create a block that shows a list of nodes authored by the active node's author." bingo !
Mais (y a tjs des "mais" partout...) un petit asterisque me rappelle que ce module n'est qu'une API donc en soit il ne fait rien.
Flute... Caray comme on dit par chez moi :D
Je continue ma quete et tombe sur Views Multiblock du meme auteur et la c banco. La encore pas facile a comprendre, heureusement la doc pas a pas me permet d'arriver a creer mon bloc.
Je constate enfin la quasi reussite de mes recherches.
Quasi car du coup je me retrouve avec le contenu que je consulte dans la liste des derniers contenus de l'auteur. Heureusement j'avais passe un bon bout de tps dans la doc de views et j'avais trouve ce snippet: Exclude the current node from a list view sauf que j'ai pas reussi a le faire marcher avec les 2 modules que j'avais...
Cependant, ca m'a fait prendre conscience de la puissance des arguments et en particulier de "Argument Handling Code" dans lequel on peut les manipulers via php.
Du coup j'ai colle un ti code comme ca:
<?php
if ( ($type=='block') && is_numeric(arg(1)) ){
$args[1] = arg(1);
if (!is_numeric(arg(2))) {
$node = node_load(arg(1));
$args[0] = $node->uid;
}
}
return $args;
?>
Avec 2 arguments:
- le 1er "User: UID is Author"
- le 2nd "Node: ID" avec la condition "not equal"
Donc le code php des arguments donne le nodeID que je visualise pour l'exclure (cf le snippet) et ensuite je faire un node_load pour recuperer l'UID de l'utilisateur et le passer comme 1er argument a mon bloc...
Et voila, plutot laborieux je trouve pour un truc qui m'aurait pris une paire de minute a coup de SQL et php dans un bloc.
Cependant, je suis assez content car mine de rien ca m'a prouve que views est extremement puissant et flexible donc jepense que je vais continuer a l'explorer.
Sinon qu'en pensez vous ?
Me suis-je vraiment trop complique la vie pour le resultat ?
Quelle est la solution que vous auriez/avez utilise ?