support « Besoin d'aide «
Liens "intelligents" entre pages
| Owner | Jmarc |
| Progress | ![]() |
| Workflow | Support request |
| Status | Problem has been recorded
|
Je cherche à "tirer des liens" entre des pages qui seraient ensuite listés automatiquement.
Je m'explique avec un exemple. J'ai :
- des pages parlant de produits (une page par produit)
- des pages parlant de revendeur (une page par revendeur)
Tout d'abord, lorsque je crée une page "produit", j'aimerais pouvoir indiquer les revendeurs qui vendent ce produit, par exemple, en allant les désigner dans la liste de tous les revendeurs.
Je dois ensuite afficher la liste des revendeurs de ce produit dans la page de mon produit (avec le lien vers la page parlant du revendeur).
D'autre part, lorsque je me rends sur la page d'un revendeur, j'aimerais inclure automatiquement dans la page la liste des produits qui ont "désignés" ce revendeur.
Avant de me lancer dans le développement de code spécifique, je me demande s'il n'y a pas moyen d'obtenir cela avec les possibilités offertes par Yacs.
Avec les catégories peut-être ?

![]() Jmarc | Ben mince alors... Je suis en train de réaliser que la fonction après laquelle je cours pour établir des liens entre mes pages Yacs, et bien, elle existe déjà en bonne partie dans Yacs ! En effet, Yacs propose d'ajouter des liens (url) à une page. Ces liens peuvent être du type Dans ce cas, yacs remplie le reste des champs (titre, description) avec le titre de la page et son introduction. J'ai donc l'essentiel du fonctionnement :
Bon, cela oblige à connaître et à renseigner le numéro id de la page mais cela reste acceptable. Par contre, je remarque que le titre et le résumé de la page sont stockés en dur dans la table "links" donc ils ne seront pas modifiés si le titre ou l'introduction de la page liée sont modifiés... m'en vais faire un petit tour dans le code qui gère les liens pour l'adapter à ma sauce |
![]() Alexis Raimbault | " tu peux utiliser aussi le calibre au dessus : view_as_foo_bar dedans tu mets tout ce qui est systématique à tes pages, tandis que dans les overlay tu mettrais ce qui est spécifique à un type de page. @christian : j'ai pas encore regardé ton overlay pour chéri FM. Mais ici on se noie dans les infos. Tu devrais peut être nous le présenter dans un sujet dédié. Alexis Raimbault webmaster free-lance
|
![]() Jmarc | Christian : " Et bien non justement c'est l'intéret. tu peux mettre produit ou revendeur si tu en as envie " Alors c'est tout bon Merci pour le tuyau. |
![]() Jmarc | Alexis : " Peut être tu pourrais stocker ton paramètre dans un nouvel index de la variable $context. Cela t'éviterais de completer toutes les urls des pages traversées. " Très bonne idée !!! " Par contre pourquoi une liaison dans les deux sens ? Le produit est lié au revendeur c'est tout. " Moi, un seul enregistrement liaison dans un seul sens, ça me va parfaitement. Je pensais, après avoir lu Christian, qu'il fallait les laisons dans les 2 sens pour pouvoir utiliser les fonctions de members...
|
Christian | pour appuyer le propos d'Agnès. Quelqu'un a-t-il regarder mon overlay et son exemple d'utilisation sur l'agenda de Chérie FM. J'utilise moi aussi les catégories A noter aussi que pour associer 2 éléments dans la table members il faut insérer 2 lignes Actupro quelques sites yacs : création site internet annuaire pro
|
![]() Agnès Rambaud | J'ai pas tout tout saisi, mais quand même les catégories me semblent vraiment les plus appropriées. Agnès Il n'y a pas de problèmes, que des solutions.
|
![]() Jmarc | Alexis : " il faut que tu puisse aussi revenir en arrière et supprimer une association " ah oui tiens. J'avais pas pensé à ça. Je peux faire comme sur mon site actuel : à coté du lien vers la page liées, j'ajoute une icône pour poubelliser le lien (après confirmation et vérification des droits du surfeur). " comment tu fais le lien entre la page de départ et la page cible, sachant que d'après ta description on atteint pas la cible au premier clic. " En fait, il n'est même pas nécessaire d'ouvrir une nouvelle fenetre. Lorsque le surfeur clique sur le lien pour définir un lien vers une autre section --> propagation du parametre de retour j'arrive sur la section des revendeur avec l'url : /section/view.php?id=456&id_retour=123 le view.php détecte la présence du parametre id_retour qu'il transmet à la fonction get_url pour que les url pointant vers d'autres pages disposent également du &id_retour=123 Traitement du retour View.php, après avoir détecté la présence du parametre id_retour, ajoute dans le panneau extra un lien qui amène à une page PHP chargée d'enregistrer dans la table members le lien entre la section 456 et la section 123 puis qui redirige vers la page de départ (123) qui est alors mise à jour pour afficher le nouveau lien vers la section 456
|
![]() Jmarc | Alexis : " ça veux dire un overlay systèmatique sur chaque section " Aie. J'ai déjà des sections qui ont un overlay (fiche produit) et je ne crois pas que l'on puisse empiler 2 overlay pour une même page... " La commande donne sur une page identique à celle qui chaine aux catégories, sauf que dans les choix tu as tout remplacé par des sections " heu, là, j'ai pas compris... tu veux dire que j'arrive sur une page dédiée qui liste toutes mes sections sous forme d'arborescences de lien qu'il me suffit de cliquer pour créer le lien ? Là, effectivement, avec mes 12 000 pages, le chargement risque d'être un peu long (et la navigation pas évidente... quoi qu'avec des arborescences dépliables, ça serait correct). Surtout que je compte sur yacs pour multiplier par 10 le nombre de pages gérées C'est pour ça que l'idée de laisser le surfeur se balader normalement sur le site pour trouver et désigner la page qu'il veut lier me plait bien. Une autre solution bien plus simple consisterait à lui demander de saisir le numéro de la page qu'il veut lier... (pas top ergonomique mais rapide, simple et efficace) " de même que dans une section l'overlay permet de s'associer à une autre, dans l'autre il va permettre de lister les pages associées. " oui, ça c'est malin ! Comme le fait aujourd'hui la boite des catégories qui propose le lien pour ajouter une catégorie tout en listant les catégories déjà liées.
|
Christian | Mais tof il me semble que l'on peut associer tout ce qu'on veut dans la table members même des objets que ne sont pas forcément issue de yacs. A titre d'exemple je viens de mettre rapidement un overlay c_categories (comme choix catégorie) à disposition dans Overlays Merci pour vos retours Actupro quelques sites yacs : création site internet annuaire pro
|
![]() Alexis Raimbault | JM : users liés aux sections en étant éditeur, oui. Pour le reste, tu utilises déjà dans ton modèle uniquement des sections, pour pouvoir toujours chainer en dessous. On dirait qu'il va te falloir apprendre aux sections à devenir membre d'une autre. ça veux dire un overlay systèmatique sur chaque section, qui ajoute ces fonctions :
de même que dans une section l'overlay permet de s'associer à une autre, dans l'autre il va permettre de lister les pages associées. pour cela il faut surcharger get_view_text ou autre, détourner une des fonctions de listage de la classe members pour trouver les sections membres d'une autre donnée par son id. donc pour résumé deux fichiers :
par contre comme tu as 12000 pages, à réflechir l'ergonomie de ta page d'association... et la requête qui va avec. Alexis Raimbault webmaster free-lance |
![]() Christophe Battarel | JMarc a dit : " en fait, tu fais émerger un vieux serpent de mer qui pose la question de la différenciation article/catégorie/section/utilisateur/etc que j'avais initié ici : Définition d'une entité mère aux sections, articles, etc... Il serait en effet utile de pouvoir lier n'importe quelles entités entre elles via la table members, et pouvoir également bénéficier pour chaque entité des fonctionnalités des autres entités; par exemple, pouvoir avoir un article contenant d'autres articles, ... Yacs a une structure qui pourrait gagner à être assouplie. Christophe Battarel - Société altairis -
|
Alain Lesage | Merci Alexis, Merci Tof. J'avais bien compris qu'il s'agissait d'une fonction d'une classe, dans un fichier yacs. Je n'étais pas certain que ce fichier aurait toujours exactement le même nom que la classe (je comprends des remarques d'Alexis que c'est le cas) et je ne savais pas où le trouver. Me voici éclairé. Jmarc : créer un onglet qui mène à une catégorie est possible par un template de skin, mais ça ne fait peut-être quand même pas ce que tu recherches. |
![]() Jmarc | Merci à tous pour vos réflexions et suggestions. Pour illustrer ma demande, j'ai pris cet exemple de produit - fournisseur mais le besoin s'applique également à d'autres "objets" : membre, petite annonce, emplacement(localisation), compte-rendu, etc. L'idée étant de pouvoir lier "une page" à une autre. Par exemple, un article qui rend compte de l'essai d'un produit pourra être lié :
On sent bien qu'il y a une notion de catégorie sauf que celle-ci est également une page d'information a part entière. Ca tombe bien, yacs permet de mettre du contenu dans une page "catégorie" de la même manière que dans une page article. Donc, pourquoi pas créer mes pages produit, revendeur, etc sous forme de catégorie, comme suggéré par Alexis. Sauf que j'imagine que cela impose quelques limitations. J'en ai déjà identifié 2 :
Ce deuxième point est plus problématique dans mon cas. Je peux toujours créer une vraie section (qui va me créer l'onglet) et y mettre le code indiqué par Alexis... mais une fois que l'on aura cliqué sur une de ses sous-catégorie, on se retrouve dans la page catégorie qui n'est plus "associée" à mon onglet de départ (le surfeur va penser qu'il est parti ailleurs Reste l'autre option qui consiste à gérer mes "objets" dans des pages "normales" et de gérer mon arborescence de catégorie en parallèle. Mais là, il faut coder quelques chose pour que les nouvelles catégories se crées automatiquement chaque fois qu'un nouveau revendeur est créé. Idem lorsque le titre de la page d'un revendeur est modifié ou qu'un revendeur est supprimé. Pour la solution à base de page "membre", je n'ai pas compris comment un membre était associé à une page |
![]() Alexis Raimbault | tir croisé avec Tof ! revendeur comme utilisateur. Ouaip, on peut stocker les coordonnées et tout ça dans la "carte de visite". le lien entre les pages (sections pour JM) et utilisateurs se ferait en assignant les sections-produits aux utilisateurs-revendeurs. Après il faut peut être adapter le layout qui liste les sections. Alexis Raimbault webmaster free-lance |
Alain Lesage | Wow ! Alexis, tu es génial !
|
![]() Alexis Raimbault | tu peux modéliser ton comportement avec le mécanisme suivant :
maitenant le fait que la page vendeur soit une catégorie ne te convient peut être pas ?
maintenant tu as une page vendeur en double...
(*) : si le code yacs ne liste pas les sections liées à la catégorie, il faudra un overlay sur la page vendeur pour faire le boulot. C'est fou tout ce qu'on peut faire faire à Yacs sans toucher le source ! Alexis Raimbault webmaster free-lance |
![]() Alexis Raimbault | les articles sont liés aux catégories via la table "members", qui sert aussi à d'autres usages.
Alexis Raimbault webmaster free-lance
|
Christian | humm il me semble pas que ce soit possible automatiquement aussi simplement que çà. Si il existe un lien dans la base de données entre un produit et son revendeur ca sera assez simple de l'afficher soit par overlay soit par layout dans une liste. Si le lien n'existe pas alors il va falloir le créer. C'est là qu'il y aura un peu plus de programmation à faire. C'es en tout cas ce que je ferais après une rapide réflexion. Le but serait de créer ces liens d'un nouveau type dans la table members A noter aussi qu'on pourrait jouer avec les catégories en définissant soit les produits soit les revendeurs en tant que catégories. A la création d'un produit on lui affecte un "revendeur catégorie" et le lien se fait dans la base de données. On peut aussi envisager un revendeur en tant que membre fictif, pourquoi pas Actupro quelques sites yacs : création site internet annuaire pro
|
![]() Jmarc |
















