Annonce

Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

plg
2009-10-28 23:08:10

ron a écrit:

plg a écrit:

Que dirais-tu si pwg.categories.getList renvoyait directement une liste à N niveaux ?

Ou peut être ajouter pwg.categories.getTreeList ?

J'aurais plutôt dit qu'on ajoute un paramètre "as_tree" à vrai ou faux (faux par défaut) dans les méthodes pwg.categories.getList et pwg.categories.getAdminList. Ca fait moins de code à ajouter/modifier, côté Piwigo et côté clients.

ron
2009-10-28 10:20:30

plg a écrit:

Que dirais-tu si pwg.categories.getList renvoyait directement une liste à N niveaux ?

Ou peut être ajouter pwg.categories.getTreeList ?

plg
2009-10-27 23:06:43

OK, je comprends mieux la demande alors.

En lisant ça je me dis que l'API web devrait retourner, à la demande, une structure avec l'arborescence déjà formée (c'est d'ailleurs ce que je croyais avant de regarder attentivement pwg.categories.getList). Sinon, l'algorithme déjà présent dans pLoader, que tu vas apparemment réécrire pour pLoaderMac, chaque client va devoir le réécrire, et bien sûr c'est pas super efficace globalement.

Que dirais-tu si pwg.categories.getList renvoyait directement une liste à N niveaux ?

marcsins
2009-10-25 07:15:30

Bonjour,

Merci de ta réponse. Effectivement je suis en cours d'étude de la structure, car pour afficher celle-ci sous forme d'arbre (style répertoire) il faut pouvoir décoder et associer à chaque nom sa position dans l'arbre.

j'avais réussi à analyser un peu la structure mais quelques points m'étonne encore du style :
global_rank = "1.1.2" et le parent est "1" ( pas de "1.1" entre eux).
id = "138" et pas de désignation
id = 139 et pas de désignation

Merci de l'aide fournie
Cordialement
Marc S.

plg
2009-10-24 23:07:35

marcsins m'a demandé (par email) des explications sur "permalink", "uppercats" et "global_rank". Je réponds ici parce que ça peut servir à d'autres, autant ouvrir la discussion (et j'aime bien quand les discussions sont publiques en règle générale).

Je vais te répondre sans détails sur les 3 points que tu cites, mais cela nécessitera sans doute davantage d'explications, n'hésites pas à demander des précisions. Sachant que les 3 mots que tu donnes sont des colonnes de la table categories, je suppose que tu étudies le modèle de données.

1) permalink : c'est lorsqu'on veut donner un nom de son choix au niveau de l'URL pour une catégorie donnée. Par exemple, si tu créées la catégorie "Première catégorie", qui obtient l'id 1, en navigant dans ta galerie, tu vas aller sur category/1 (et sur category/1-premiere_categorie si tu changes $conf['category_url_style'] dans le fichier de configuration). Ensuite tu peux créer un permalink sur cette categorie et l'appeler "mon_premier_permalink", ensuite en navigant dans ta galerie tu iras sur category/mon_premier_permalink (au indice numérique).

2) global_rank : permet de comparer l'ordre entre 2 categories, quelque soit leur niveau dans l'arborescence. C'est une donnée qui se recalcule à partir de {uppercats, rank} (voir la fonction update_global_rank dans admin/include/functions.php qui utilise un algo que j'aime beaucoup avec un preg_replace qui execute son $replacement). Mais c'est pénible donc j'ai fait un cache avec cette colonne pour accélerer tout simplement. Comparer l'ordre de 2 catégories est utile lorsqu'on affiche un sous-ensemble des catégories. Comme lorsqu'on affiche la liste des catégories associées à une photo par exemple. Il y a de nombreux autres endroits comme cela. Au niveau du code PHP, j'utilise la fonction strnatcasecmp (voir la fonction global_rank_compare dans include/functions_category.inc.php)

3) uppercats : liste de identifiants des catégories de la racine, jusqu'à la catégorie courante. Par exemple, si j'ai "events (id=23) / season 1 (id=42) / salon de Berlin (id=95)", pour la catégorie 95, j'aurai dans la colonne uppercats 23,42,95. C'est également un cache, qui se recalcule à partir de {id,id_uppercat}. Il y a longtemps, j'ai écrit un billet sur mon blog à ce sujet, et ça reste toujours valable, ce code n'a pas changé depuis la 1.4.0.

Voilà, j'attends donc tes demandes de précisions.

Ce qui m'étonne, c'est que dans le cadre de extension:314 tu aies besoin de comprendre cette mécanique interne. J'aurais plutôt tendance à penser que seule l'API web est intéressante pour toi, hors ces propriétés ne sont pas à renseigner quand on passe par l'API web.

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact