Differences

This shows you the differences between two versions of the page.

Link to this comparison view

fr:faq [2007/07/03 20:39]
88.162.208.147
— (current)
Line 1: Line 1:
-La FAQ est en cours d'élaboration et pour première conséquence, elle est loin d'être structurée. Elle est même insuffisante à ce jour. 
-Merci d'avance aux visiteurs de leur compréhension. 
  
-====== Foire aux questions de PhpWebGallery (PWG) ====== 
- 
-===== Avant d'installer ===== 
-Je n'ai pas encore installé PWG et je me pose bien des questions, peut-être vais-je trouver des [[fr:faq-before|réponses ici]]. 
- 
-===== Installation / Migration ===== 
- 
-Je suis décidé, mais voilà, c'est bien la première fois que je vais faire ça. 
-Ce ne sont pas les questions qui manquent, mais les [[fr:faq-install|réponses]]. 
- 
-===== Premiers réglages ===== 
- 
-==== Comment changer le titre de la Galerie ? ==== 
-Admin +  Configuration + Général 
-. 
- 
-==== Comment ne pas développer les sous-categories dans le menu? ==== 
-Admin +  Configuration + Affichage par défaut\\ 
-Développer toutes les catégories                              Oui / Non 
- 
- 
-===== La base de Données ===== 
- 
-==== Où se trouvent les paramètres de connexion à la base de données? ==== 
-Dans le fichier ''include/mysql.inc.php''. 
- 
-Mais si vous vous posez cette question, c'est que vous n'avez pas encore démarré le processus d'installation et votre fichier include/mysql.inc.php est encore vide. 
- 
-===== Les miniatures (ou vignettes) ===== 
- 
-==== Pourquoi éviter d'utiliser la génération automatique des vignettes ? ==== 
-  * Avant tout, la qualité ne sera pas au rendez-vous (surtout si l'original est très grand). 
-  * Car vous de ne disposez pas du règlage du taux de compression. 
-  * De plus, le dispositif est plus ou moins performant en fonction de l'hébergeur. 
-En serveur mutualisé (fournisseur d'accès par exemple): un processeur sera monopolisé dans la limite de 30 secondes en général. Votre site apparaitra en rouge dans le suivi de votre site (monitoring), inutile d'en dire plus. 
-    * Pour une image, ou une quantité réduite d'images: cela peut encore s'imaginer (une solution de dépannage temporaire). 
-    * Pour une grande quantité d'images livrées via FTP, autant utiliser avant un programme externe approprié, contrôler le résultat, puis transférer des miniatures correctes. 
-    * Seuls les fichiers .jpg ou .png sont supportés en entrée du processus. Les autres formats d'image du web nécessiteront une préparation / conversion externe et éventuellement le renommage, si le nom de miniatures existantes ne commencent pas par le préfixe TN- 
- 
- 
-En serveur dédié (ou sur votre propre serveur): cela reste un problème et devra être apprécié en fonction du nombre de processeurs du serveur et des accès externes. 
- 
- 
-<del> 
- 
-Cependant, si vous avez besoin d'un créateur automatique de miniatures, vous pouvez essayer de télécharger http://ahao.free.fr/Photo/SiteDistant.zip . Modifiez les paramètres du fichier config_create_miniature.php, puis uploadez-le à la racine du site concerné avec les autres fichiers. Lancez ce fichier depuis votre navigateur, et voilà les miniatures sont crées :p Reste plus qu'à synchroniser PWG.</del> 
- 
- 
- 
-==== Paramètres pour utiliser un créateur automatique de miniatures ==== 
- 
-  * PWG s'exécute sur votre ordinateur en local, sans accès vers l'extérieur. Dans ce cas, il serait judicieux d'augmenter le paramètre 'max_execution_time' dans php.ini à valeur telle que 1000.  
-En fonction de la vitesse de votre ordinateur, ce réglage permettra en moyenne de créer 300 à 600 miniatures avant la fin du l'exécution du script. Si cela se produit,  cliquer simplement sur le lien "Miniatures", sélectionner "Tout" pour le "Nombre de miniatures à créer," puis cliquer sur Envoyer. 
- 
-===== Installation des catégories ===== 
- 
-Pour obtenir des explications détaillées, connectez-vous à PWG et rendez-vous à la rubrique : 
- 
-Admin → General → Instructions 
- 
-==== Les catégories réelles... ==== 
- 
-Les catégories réelles (identiques à des albums photos) doivent être créés directement dans le fichier système du serveur, dans le sous-dossier ''galleries''.  Il y a deux façons de procéder : 
- 
-  * Si vous avez un accès local à l'ordinateur où se trouve PWG, créez simplement un sous-dossier dans le dossier ''galleries''. Le nom que vous donnerez à ce sous-dossier sera celui affiché dans PWG. Si le système d'exploitation est de type Unix / Linux, ce sous-dossier DOIT être accessible en écriture par les utilisateurs.  
-  * Si votre serveur est distant, créez un sous-dossier local, puis transférez-le en utilisant un client FTP. Vérifiez également que le nouveau sous-dossier du serveur Web est accessible en écriture. 
-  * Les noms de dossiers peuvent UNIQUEMENT comporter des caractères alphanumériques, ainsi que les caractères entre les guillements, ci après : "-", "_" ou ".". PAS d'espace, ni de caractères accentués ! 
- 
-==== Les catégories virtuelles... ==== 
- 
-Evidentes à créer, mais l'association d'éléments avec les catégories est parfois plus complexe.  
- 
-  * Création de catégories virtuelles : [Panneau d’administration » Catégories » Gérer]. 
- 
-  * Une théorie simple: [[fr:gestion_des_categories|Gestion des catégories]]  
- 
-  * Et dans la pratique: [[fr:faq:categories_virtuelles|La mise en oeuvre des catégories virtuelles]]. 
- 
-  * Les catégories virtuelles de premier niveau peuvent être créées dans le panneau Administration, (au même endroit que les catégories réelles). 
-  * Pour créer une catégorie virtuelle dans une catégorie réelle, vous devez sélectionner celle-ci, en cliquant sur son nom, puis cliquez sur l'icône représentant un dossier :"Gérer les sous-catégories". 
-   * Pour associer des éléments (des images) aux catégories virtuelles, sélectionnez une catégorie virtuelle et cliquez sur l'icône en forme de dossier avec un engrenage. Vous avez alors 2 choix de mode : 
-     * Mode global : permet la sélection d'images par lots qui seront associées à une catégorie virtuelle. Tout mot-clé ou méta-donnée ajouté(e) dans cette page, sera associé(e) à tous les éléments \\ (rappel : dans une catégorie virtuelle, les images n'y sont pas copiées; seuls les liens vers les images sont stockés dans la base de données). 
-     * Mode unitaire : permet d'éditer les mots-clé et méta-données pour chaque élément à associer à la catégorie virtuelle. 
- 
- 
-===== L'Upload en général ===== 
- 
-J'aurais voulu savoir comment augmenter les limites de l'upload ou encore savoir (...) : [[fr:faq:upload|réponses]]. 
- 
-===== Les sites distants... ===== 
- 
-Rapidement les images prennent de la place, et l'hébergement est engorgé, alors la solution proposée par PhpWebGallery : [[fr:site_distant|La mise en oeuvre de sites distants]]. 
- 
-===== Les extensions ===== 
- 
-La liste des extensions est disponible dans sa [[http://phpwebgallery.net/ext|rubrique]]. De même il existe un forum [[http://forum.phpwebgallery.net/viewforum.php?id=9|français]] et [[http://forum.phpwebgallery.net/viewforum.php?id=6|anglais]]. Une recherche répondra sans doute aux questions les plus courantes. 
- 
-===== Les mods ===== 
- 
-Concernant les mods, je préconise la lecture du "[[fr:faq-mod|Comment installer un MOD?]] " lorsqu'on a récupéré l'archive désirée. Cela évitera sans doute quelques mauvaises surprises. 
- 
-==== MOD expliqués ==== 
- 
-[[fr:faq-mod:vi2|Video Integrator II]] 
- 
-[[fr:faq-mod:dm|Download Multi]] 
- 
- 
-===== Les bêtises à éviter... ===== 
- 
-Certaines actions doivent être évitées, [[fr:faq-eviter|lesquelles?]] 
- 
-  * Oublier de faire des sauvegardes 
-  * Renommer un répertoire d'images 
-  * Déplacer un répertoire dans un autre répertoire 
-  * Déplacer des images d'un répertoire à un autre 
-En [[fr:faq-eviter|savoir+]] 
- 
-**Règle d'or**: Je ne synchronise pas si je n'ai pas **réellement** de nouvelles images. 
- 
- 
-===== Les erreurs fréquentes à éviter... ===== 
- 
-1 - //"Je n'ai pas trouvé de fichier config_**local**.inc.php alors j'ai modifié 
-config_**default**.inc.php..."// Bien sûr que vous n'avez pas trouvé ce fichier local, puisque que c'est à vous de le créer. Il n'est pas distribué: c'est **votre** fichier. 
- 
-'default' est livré avec de nouveaux paramètres à chaque version. Si vous faites des modifs dans ce fichier, lors de la prochaine mise à jour vos modifications seront perdues et peut être que votre galerie ne fonctionnera plus. Donc, on ne modifie pas le fichier config_default.inc.php. On crée son config_**local**.inc.php. 
- 
-2 - //"J'ai recopié le fichier config_default.inc.php dans config_**local**.inc.php comme ça, je peux les changer tout à ma guise."// \\ 
-Dans la version n+2 vous aurez peut être 200 paramètres en plus, pouvez-vous dire lesquels vous aurez déjà, ceux qui seront modifiés, ceux qui ne le seront pas. 
-  
-Dans config_**local**.inc.php on ne mentionne que les $conf qu'on souhaite vraiment modifier. 
- 
-3 - //"Quand j'accède à ma galerie j'ai un message :"// \\ 
-  Warning: Cannot modify header information - headers already sent by (output started at /.../include/config_**local**.inc.php:???) ... 
- 
-PhpWebGallery tente de créer l'entête de bloc IP (ce n'est qu'un warning) mais cet entête (en principe unique) a déjà été créé. \\ 
-//"Par qui?"// output started at... config_local.inc.php \\ 
-//"Oui, mais vous avez dit ci-dessus de le créer... Alors, je ne comprends plus rien."//\\ 
-Nous avons dit de le créer mais pas de faire des erreurs quand même. Il se trouve qu'un module php comme config_**local**.inc.php doit suivre des règles strictes d'écriture entre autres, il doit commencer par:\\ 
-''<?php''\\ 
-et il doit se terminer par:\\ 
-''?>'' 
- 
-De plus, aucun espace ou ligne vide ne doit être après cette dernière ligne !!! C'est en général ces dernières erreurs qui génèrent l'entête IP. D'ailleurs, dans "(output started at 
-/.../include/config_**local**.inc.php:???)" les ??? correspondent au numéro de ligne où se trouve l'erreur. Soit très souvent 10 ou plus. 
- 
-4 - //"J'ai fait un config_**local**.inc.php mais le paramètre n'est pas pris en compte. (Pire, parfois, mes anciens paramètres ne sont plus reconnus)."// Il y a une erreur de syntaxe dans le config_**local**.inc.php:\\ 
-  * un ' dans un libellé peut être... ( essayez de l'écrire comme ceci : 'L\'album d\'André' ou "L'album d'André" ), 
-  * une parenthèse n'est pas fermée, 
-  * une virgule manque dans une liste, 
-  * un ; manque en fin d'instruction... 
-dans votre navigateur lancer ''http://monsite/magalerie/include/config_local.inc.php'', cela peut vous aider à comprendre (l'erreur est sur la ligne ou sur la ligne précédente). 
- 
- 
- 
- 
- 
- 
- 
- 
-===== Les Web Services ou comment externaliser des données de PWG ===== 
- 
-//Cet article se veut le plus abordable possible pour s'adresser au plus grand nombre mais il est tout de même conseillé de disposer de bases en PHP// 
- 
----- 
- 
-  * Dans un premier temps, il faut prendre en compte que les Web Services (WS) sont plus complexes à mettre en oeuvre dans la branche 1.7 que //"external_random"// existant dans les branches précédentes. Plus complexe mais aussi beaucoup plus puissant. 
- 
-  * Le but de WS : Pouvoir externaliser (présenter sur une page / un site distant de PWG lui-même) des données et informations de la galerie PWG. Exemple : Afficher tout ou partie des dernières images ajoutées à la galerie dans un blog, un échantillon aléatoire d'images sur une page d'index de site, les derniers commentaires déposés avec les images concernées, etc... 
- 
-  *** La description d'emploi de WS ci-dessous est basée sur un exemple permettant d'afficher aléatoirement des images ou leur version miniature dans une page web externe à la galerie (page d'index de site par exemple) selon différents critères.** 
- 
- 
-==== Génération des requêtes ==== 
- 
-  * Pour parvenir au résultat désiré, la première étape consiste à trouver la bonne requête à appeler dans la page externalisée. Pour cela, on utilisera un outil spécifique, livré en standard dans la distribution de PWG sous 'http:\\www.monsite.com\magalerie\tools\ws.htm'. 
- 
-1 - Lancer la page ws.htm dans votre navigateur préféré. 
- 
-2 - Une page vous demande de préciser la position du script WS (ws.php). Normalement, il doit se trouver sous 'http:\\www.monsite.com\magalerie\ws.php'. 
- 
-3 - Cliquez alors sur //"GO!"// 
- 
-4 - Il s'agit maintenant de choisir la bonne méthode en fonction du résultat désiré. Voici une traduction des termes : 
- 
-       * pwg.categories.getImages -> Méthode pour récupérer des images à partir des catégories 
-       * pwg.categories.getList -> Méthode pour récupérer une liste de catégories 
-       * pwg.getVersion -> Méthode pour récupérer la version utilisée de PWG 
-       * pwg.images.addComment -> Méthode pour ajouter des commentaires 
-       * pwg.images.getInfo -> Méthode pour récupérer des informations sur des images 
-       * pwg.images.search -> Méthode pour effectuer une recherche d'images 
-       * pwg.session.getStatus -> Méthode pour connaître l'identité et le profil en cours 
-       * pwg.session.login -> Méthode pour s'identifier (se connecter) 
-       * pwg.session.logout -> Méthode pour retourner en simple visiteur 
-       * pwg.tags.getImages -> Méthode pour récupérer des images via des Tags 
-       * pwg.tags.getList -> Méthode pour récupérer des Tags 
- 
-Pour information: 
-       * reflection.getMethodDetails -> Méthode pour obtenir des détails sur les méthodes employées 
-       * reflection.getMethodList -> Méthode pour obtenir la liste des méthodes  
- 
-5 - Votre choix fait, il suffit de cliquer sur la méthode pour obtenir le panneau de requêtes associé. Il serait trop long et fastidieux de détailler chaque méthode. Aussi, pour notre exemple, nous choisirons ici la méthode //"pwg.categories.getImages"// qui nous permettra de d'afficher aléatoirement des images ou leur version miniature selon différents critères. 
- 
-6 - En utilisant la méthode //"pwg.categories.getImages"//, nous avons tout d'abord 2 paramètres à renseigner : Le format de la requête (Request format) et le format de la réponse (Response format): 
- 
-    * Le premier concerne la fonction (POST ou GET) à employer avec la méthode. Typiquement, POST serait utilisé pour envoyer le résultat de la requète et GET pour le recevoir. On choisira ici la fonction GET. 
- 
-      N.B. : La méthode pwg.session.login n'accepte que la fonction POST. Par ce biais, on peut envisager d'utiliser une ouverture de session sur un blog (un forum ou autres...) pour s'identifier automatiquement sur la galerie. En partageant les tables contenant les informations des inscrits sur chaque application, on pourrait aussi gérer les nouvelles insciptions. 
- 
-    * Le second concerne la manière de formater les données issues de la requête. Nous avons le choix entre REST (xml), JSON, PHP serial et XML (RPC). Le choix du formatage de sortie dépend de la destination des informations extraites. Par exemple, pour générer un flux RSS  spécifique, on utilisera REST (xml) car les lecteurs de flux comprennent ce format. Toujours dans le cadre de notre exemple, nous choisiront PHP serial car nous souhaitons afficher les informations dans une page web et un script PHP fera très bien l'affaire. 
- 
-FIXME : S'il y en a qui se sentent pour traiter le sujet des XML et autres... ;-) 
- 
-7 - Dans la partie de droite, nous avons un tableau récapitulant tous les paramètres utilisables pour la méthode sélectionnée. Chaque méthode a un tableau de paramètre différent. Il serait trop long de tout détailler ici. Dans le cadre de notre exemple (méthode //"pwg.categories.getImages"//), voici les explications des différents filtres : 
- 
-    * cat_id -> Filtre de type numérique sur les identifiants de catégories (peut être unique ou multiple dans le cadre d'un tableau - Array) 
-    * recursive -> Paramètre booléen (vrai / faux) précisant si la requête doit récursive (recherche dans les sous-dossiers) - __**Attention ! Ne concerne que les catégories publiques !**__ 
-    * per_page -> Nombre d'éléments maximum à remonter par page 
-    * page -> Nombre de pages maximum 
-    * order -> Paramètre de tri des informations. 
-    * f_min_rate -> Valeur de note minimale attribuée aux éléments 
-    * f_max_rate -> Valeur de note maximale attribuée aux éléments 
-    * f_min_hit -> Nombre de visualisation minimum des éléments 
-    * f_max_hit -> Nombre de visualisation maximum des éléments 
-    * f_min_date_available -> Date d'ajout minimale 
-    * f_max_date_available -> Date d'ajout maximale 
-    * f_min_date_created -> Date de création minimale 
-    * f_max_date_created -> Date de création maximale 
-    * f_min_ratio -> Rapport minimal de largeur/hauteur de l'image 
-    * f_max_ratio -> Rapport maximal de largeur/hauteur de l'image 
-    * f_with_thumbnail -> Paramètres booléen (vrai / faux) précisant si la requête ne concerne que les images avec miniatures. 
- 
-8 - Avec tous ces élements, il nous est maintenant possible de //"jouer"// avec l'outil pour tenter d'obtenir le résultat souhaité. La vérification du résultat produit se fait en cliquant sur les liens //"Invoke"// ou //"Invoke (New window)"//. Le premier lien affiche le résultat dans le cadre en dessous du tableau de paramètres quant au second, affiche dans une nouvelle fenêtre du navigateur. En poursuivant notre exemple, nous utiliseront les paramètres suivants : 
- 
-    * cat_id -> vide 
-    * recursive -> True 
-    * per_page -> 5 
-    * page -> 0 (car nous ne souhaitons pas gérer l'affichage de plusieurs pages de résultats dans la page web de destination) 
-    * order -> Random (aléatoire) 
-    * f_min_rate -> vide 
-    * f_max_rate -> vide 
-    * f_min_hit -> vide 
-    * f_max_hit -> vide 
-    * f_min_date_available -> vide 
-    * f_max_date_available -> vide 
-    * f_min_date_created -> vide 
-    * f_max_date_created -> vide 
-    * f_min_ratio -> 1.2 
-    * f_max_ratio -> vide 
-    * f_with_thumbnail -> True 
- 
-Traduction : //"Récupérer, sur une page, 5 images au hasard dans toutes les catégories et sous catégories dont le rapport largeur/hauteur est au moins 1.2 (donc plus larges que hautes).  
-Ceci étant bien qu'un exemple. On pourrait fixer également f_max_ratio à 1.4, ce qui permettrait d'obtenir les images présentées en mode paysage (en excluant les images carrées, les images de diaporama et les image en mode portrait."//  
- 
-Autre exemple : 
- 
-    * cat_id -> vide 
-    * recursive -> True 
-    * per_page -> 5 
-    * page -> 0 (car nous ne souhaitons pas gérer l'affichage de plusieurs pages de résultats dans la page web de destination) 
-    * order -> Random (aléatoire) 
-    * f_min_rate -> vide 
-    * f_max_rate -> vide 
-    * f_min_hit -> 500 
-    * f_max_hit -> vide 
-    * f_min_date_available -> vide 
-    * f_max_date_available -> vide 
-    * f_min_date_created -> vide 
-    * f_max_date_created -> vide 
-    * f_min_ratio -> vide 
-    * f_max_ratio -> vide 
-    * f_with_thumbnail -> True 
- 
-Traduction : //"Récupérer, sur une page, 5 images au hasard, vues au moins 500 fois, dans toutes les catégories et sous catégories." Ce qui permet d'afficher un nombre limité d'images "Les plus regardées". A l'inverse, on peut ne mettre qu'un f_max_hit à 50 et tant que des images n'auront pas été regardées au moins 50 fois, elles seront présentées, ce qui permet de présenter "Les plus récentes" en y intégrant "Les moins regardées".// 
- 
-9 - Un clic sur //"Invoke"// et on obtient un tableau sérialisé des données trouvées par la requête. Comme on a spécifié //"Random"// dans le paramètre //"order"//, on ne devrait pas retrouver deux fois le même résultat. Sauf, bien entendu, s'il n'y a pas assez d'images répondant aux critères. Le tableau est représenté sous la forme : 
-<code> 
-a:2:{s:4:"stat";s:2:"ok";s:6:"result";a:1:{s:6:"images"; 
-(...) 
-"page_url";s:72:"http://www.monsite.com/magalerie/picture.php?/[id]/category/[id]";}}}}}}} 
-</code> 
- 
-10 - Pas très évident de vérifier le bon fonctionnement de la requête sous cette forme, je vous l'accorde. Mais vous pouvez faire des essais en réduisant, par exemple, le nombre d'images à retourner. Vous pouvez passer en présentation "REST (xml)" ce sera plus simple à contrôler. Mais dans notre cas, il faut formater le résultat pour y comprendre quelque chose. Mais avant tout, quelques définitions : 
-<code> 
-- a:x -> "a" pour "array" ou tableau suivi par x représentant le nombre d'éléments dans le tableau. 
-    Exemple : a:2 = "tableau de 2 éléments" 
- 
-- s:x:"$" -> "s" pour "String" ou chaine suivi par x représentant le nombre de caractères de la chaine et $, le contenu de la chaine. 
-    Exemple : s:4:"stat" = "Chaine de 4 caractères qui sont "stat" 
- 
-- i:x -> "i" pour "Integer" ou entier suivi de la valeur de l'entier. 
-    Exemple : i:100 = "Un entier de valeur 100" 
- 
-- N -> équivalent à NULL. 
- 
-- Les tableaux sont délimités par "{}". 
- 
-- Les champs du tableau sont délimités par ";". 
- 
-- Une donnée complète du tableau est composée du nom de la donnée et de sa valeur. 
-    Exemples : s:4:"stat";s:2:"ok"; 
-               s:4:"page";i:0; 
-</code> 
- 
-* Ci-dessous, un exemple de ce que cela donne avec les explications qui vont bien. 
- 
-<code> 
-a:2:{ 
- s:4:"stat";s:2:"ok"; <- le statut de la requête est OK 
- s:6:"result";a:1:{ <- le résultat commence ici 
- s:6:"images";a:4:{ <- le tableau des images qui contient 4 éléments 
- s:4:"page";i:0; <- élément #1 : le nombre de pages pour afficher les éléments (images) 
- s:8:"per_page";i:100; <- élément #2 : le nombre d'éléments (images) par page 
- s:5:"count";i:11; <- élément #3 : le compte du nombre d'éléments (images) trouvés. 
- s:8:"_content";a:11:{ <- élément #4 : Qui ouvre aussi un tableau de 11 éléments détaillant le contenu de la requête, c'est çà dire les images proprement dites 
- i:0;a:10:{ <- Première image trouvée dont les données sont dans un tableau de 10 éléments 
- s:2:"id";i:4460; <- l'identifiant (ID) de l'image #1 en base de données 
- s:5:"width";i:504; <- la largeur de l'image #1 
- s:6:"height";i:699; <- la hauteur de l'image #1 
- s:3:"hit";i:35; <- le nombre de fois que l'image #1 a été vue 
- s:4:"file";s:38:"image1.jpg"; <- le fichier phyqique de l'image #1 
- s:4:"name";s:23:"nom_image_1"; <- le nom représentant l'image #1 
- s:7:"comment";N; <- le commentaire associé à l'image #1 (IPTC). Il ne s'agit pas des commentaires déposés par les visiteurs de la galerie. 
- s:6:"tn_url";s:116:"http://www.monsite.com/magalerie/./galleries/Catégorie1/thumbnail/TN-image1.jpg";  <- le chemin complet pour accéder à la miniature de l'image #1 
- s:11:"element_url";s:103:"http://www.monsite.com/magalerie/./galleries/Catégorie1/image1.jpg"; <- Le chemin complet pour accéder à l'image #1 
- s:10:"categories";a:1:{ <- les informations sur la (les) catégorie(s) hébergeant l'image #1. 
- i:0;a:3:{ <- Ici une seule catégorie donc 1 élément qui ouvre un tableau de 3 éléments 
- s:2:"id";i:227; <- l'identifiant (ID) de la catégorie 
- s:3:"url";s:65:"http://www.monsite.com/magalerie/index.php?/category/227"; <- le chemin complet pour accéder à racine de la catégorie 
- s:8:"page_url";s:72:"http://www.monsite.com/magalerie/picture.php?/4460/category/227"; <- le chemin complet pour accéder aux pages de la catégorie (cas où il y aurait plusieurs pages) 
- } 
- } 
- } 
- i:1;a:10:{ <- Et c'est reparti pour l'image #2 - Même principe - Et ainsi de suite jusqu'à l'image #11 puisque c'est le nombre d'éléments retournés par la requête. 
- s:2:"id";i:4458; 
- s:5:"width";i:432; 
- s:6:"height";i:653; 
- s:3:"hit";i:30; 
- s:4:"file";s:28:"image2.jpg"; 
- s:4:"name";s:13:"nom_image_2"; 
- s:7:"comment";N; 
- s:6:"tn_url";s:106:"http://www.monsite.com/magalerie/./galleries/Catégorie1/thumbnail/TN-image2.jpg"; 
- s:11:"element_url";s:93:"http://www.monsite.com/magalerie/./galleries/Catégorie1/image2.jpg"; 
- s:10:"categories";a:1:{ 
- i:0;a:3:{ 
- s:2:"id";i:227; 
- s:3:"url";s:65:"http://www.monsite.com/magalerie/index.php?/category/227"; 
- s:8:"page_url";s:72:"http://www.monsite.com/magalerie/picture.php?/4458/category/227"; 
- } 
- } 
- } 
-(...) 
-</code> 
- 
-11- Lorsque la requête est au point, notez les paramètres pour qu'ils puissent être appelés par un script PHP dans la page externe destinée à recevoir le résultat de la requête. Pour notre exemple, nous aurons : 
-<code> 
-http://www.monsite.com/magalerie/ws.php?method=pwg.categories.getImages&format=php&recursive=true&order=random&f_min_ratio=1.2&f_with_thumbnail=true&per_page=5&page=0 
-</code> 
- 
-    * Explications : 
-<code> 
-Lien vers ws.php -> http://www.monsite.com/magalerie/ws.php 
-Passage en paramètre de la méthode ->                      ?method=pwg.categories.getImages 
- 
-Définition du format de sortie ->                          &format=php 
- 
-Paramètres de la requête ->                                &recursive=true 
-                                                           &order=random 
-                                                           &f_min_ratio=1.2 
-                                                           &f_with_thumbnail=true 
-                                                           &per_page=5 
-                                                           &page=0 
-</code> 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-==== Intégration dans une page externe ==== 
- 
-    * Il s'agit maintenant d'intégrer la requête WS dans une page externe à PWG et de n'afficher que les informations nécessaires. Ce qui suit nécessite un minimum de connaissances en PHP mais je vais tenter de faire au plus simple pour que chacun, quelque soit son niveau en PHP, puisse réaliser son propre service web. 
- 
-    * Pour rappel, nous partons d'une requête WS élaborée dans le paragraphe précédent, destinée à afficher des 5 images aléatoires ou leur version miniature avec un critère de note moyenne minimum de 1.2. 
- 
-1 - Je passe sur la position d'insertion du code PHP dans la page ou du script devant accueillir le résultat de la requête WS. Chacun trouvera l'endroit idéal qui lui conviendra selon ses besoins. Pour notre exemple, nous envisagerons le cas simple d'une page HTML formatée ou non avec des CSS et accueillant dans une partie x l'affichage de nos 5 images. 
- 
-2 - Voici un exemple de code utilisable. Il sera documenté et expliqué à la suite. Ce code est modulable et n'est en aucune façon une référence en soit. Ce n'est que pour illustrer l'exemple WS considéré (merci à VDigital pour cette solution dont il est l'auteur): 
-<code=php> 
-<?php 
-// initialisation de la session 
-$session = curl_init(); /* (a) */ 
- 
-// configuration des options 
-/* (b) */ 
-curl_setopt($session, CURLOPT_URL, 
-"http://www.monsite.com/magalerie/ws.php?method=pwg.categories.getImages&format=php&recursive=true&order=random&f_min_ratio=1.2&f_with_thumbnail=true&per_page=5&page=0"); 
-curl_setopt($session, CURLOPT_HEADER, 0); 
-curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
- 
-// exécution de la session 
-$response = curl_exec($session); /* Ici nous réceptionnons le tableau sérialisé de la requête (c) */ 
-$thumbc = unserialize($response);/* que nous "désérialisons" (d) */ 
- 
-curl_close($session); /* fermeture des ressources (e) */ 
- 
-if ($thumbc["stat"]=='ok') /* Réponse correcte ? (f) */ 
- { 
-  for ($i=0;$i<$thumbc["result"]["images"]["count"];$i++) /* (g) */ 
-   { 
-    $picture = $thumbc["result"]["images"]["_content"][$i]; /* (h) */ 
- 
-    // dans picture nous avons :  id, width, height, hit, file, name, comment, tn_url, element_url 
-/* (i) */ 
- 
-    $HTML_txt = '<a href="http://www.monsite.com/magalerie/picture.php?/' 
-        . $picture['id'].'" title="'.$picture['name'].'">'.'<img src="' 
-        . $picture['tn_url'].'" alt="'.$picture['name'] 
-        . '" /></a><span class="caption">['.$picture['width'].'x' 
-        . $picture['height'].'] &nbsp; - &nbsp;'.'Hits : ' 
-        . $picture['hit'].'</span><br/>'; 
-    echo $HTML_txt; 
-    } 
-  } 
-?> 
-</code> 
- 
-3 - Explications du code ci-dessus : 
- 
-Pour obtenir le résultat de la requête WS, nous devons utiliser le jeu de fonctions curl. Il est néanmoins possible d'arriver au même résultat en utilisant file_get_contents() mais cette fonction n'est pas admise par tous les hébergeurs. Pour plus de détails sur ces fonctions, se reporter à la doc de PHP. 
- 
-a) On commence par initialiser une variable de session sur la fonction curl... 
- 
-b) ... Et on établit les options relatives dont, notamment, l'URL de la requête élaborée dans le paragraphe précédent. 
- 
-c) Le résultat de la requête est récupéré par curl_exec($session) et stocké dans une variable... 
- 
-d) ... Mais il s'agit d'un tableau de valeurs en série qu'il faut remettre en forme. La fonction unserialize($response) se charge de cela et stocke le tableau dans une nouvelle variable. 
- 
-e) Pour continuer les traitements, on ferme la session de la requête initiale. 
- 
-f) Pour être certain de ne pas afficher n'importe quoi si la requête ne retourne rien, on teste si le champ "stat" est bien à "OK". 
- 
-g) On isole chaque élément du tableau des résultats (comprendre les images)... 
- 
-h) ... Et pour chaque élément, on //"charge"// une variable $picture qui contiendra toutes les infos relatives à chaque image. 
- 
-i) Il ne reste plus qu'à //"partir à la pêche"// aux infos et à les placer sous format HTML dans une variable d'affichage. 
- 
-Simple, non ?... Non, pas simple mais très puissant ! En jouant avec les différentes requêtes WS et en arrangeant le code PHP à ses besoins, on peut afficher à peu près n'importe quelle information présente dans la galerie. 
- 
-En espérant que cet article aide le plus grand nombre d'utilisateurs de PWG et d'avoir été le plus limpide possible sur le sujet. 
 
Back to top
fr/faq.1183495147.txt.gz · Last modified: 2009/03/07 22:13 (external edit)
 
 
github twitter newsletter Donate Piwigo.org © 2002-2024 · Contact