Bonjour draeya,
Comme souvent avec MODX, il existe plusieurs solutions pour arriver à tes fins. Les 2 solutions impliquent d'utiliser une table "tierce" où tu pourras stocker tes données (notamment un alias qui définira l'URI de tes "pages").
Pour le côté affichage :
La première solution (celle que je connais le moins) serait de combiner mod_rewrite (Apache) et un paramètre $_GET (autre que &id= qui par défaut est réservé à l'affichage des ressources). Un exemple (léger) est
Discuss (le composant utilisé pour les forums).
Une autre solution consiste à créer ton propre système de routes en utilisant l'évènement système OnPageNotFound, ainsi qu'une ressource (que j'ai tendance à appeler "placeholder").
Lorsqu'une requête ne débouche pas sur une ressource existante, tu vérifies que l'on cherche bien à accéder à tes données (c'est là qu'intervient ton système de route). Si les conditions sont bien respectées, tu
sendForward vers ta ressource "placeholder".
Là, je dirais que 2 solutions s'offrent à toi :
1 - ton plugin affiche ton objet complet :
$array = $object->toArray();
$modx->setPlaceholders($array, 'prefix.');
2 - ton plugin n'envoie que l'id de ton objet et ta ressource "placeholder" contient un snippet avec toute la logique pour afficher ton objet :
$id = $object->get('id');
$modx->setPlaceholder('nom-du-placeholder', $id);
et dans ta ressource placeholder
[[!snippet? &objectId=`[[!+nom-du-placeholder]]`]]
Un peu de lecture (du code) qui m'a aidé à mettre en place cette dernière solution :
- le système de routage d'Articles (le
plugin et la
classe de routage)
-
CustomUrls de yoleg
En revanche, yoleg a mis en place un système pour empêcher l'accès directe aux ressources "placeholders". Pour ma part je préfère en pas publier les ressources "placeholders", rendant celles-ci inaccessibles aux visiteurs.
En espérant que cela t'aidera.
Bon courage