source: spip-zone/_plugins_/logos_roles/trunk/README.md

Last change on this file was 110926, checked in by bystrano@…, 5 months ago

maj README et up de y

File size: 4.8 KB
Line 
1
2Logos par rôles
3===============
4
5Ce plugin modifie le système de logos de SPIP pour le rendre plus flexible et permettre de donner plus de contrôle aux rédacteurs.
6
7Un problème récurent avec les logos de SPIP, c'est qu'on veut les afficher à des endroits différents du site, en général dans plusieurs format différents.
8On peut par exemple afficher le logo d'un article sous la forme d'un petit carré dans les listes d'articles, mais aussi en grand format sur la page d'accueil.
9Les rédacteurs doivent alors trouver des images qui fonctionnent dans les deux formats, ce qui s'avère souvent impossible.
10
11On peut alors détourner les logos de survol, mais c'est vite limité.
12Parce que ça n'offre qu'un seul logo alternatif par objet éditorial, mais aussi parce que les rédacteurs ne voient pas le logo dans le bon format dans l'espace privé, ce qui oblige à des allers-retours.
13
14En utilisant ce plugin, on peut définir autant de types de logos qu'on le souhaite, qui peuvent alors être gérés indépendamment par les rédacteurs.
15On pourra alors utiliser des images différentes pour la page d'accueil et pour les listes.
16
17Le plugin [Massicot](https://contrib.spip.net/Massicot) complète très bien ce plugin, et permet alors de définir des recadrages différents pour les différents types de logos.
18On peut aussi utiliser des formats prédéfinis pour le recadrage.
19
20
21Fonctionnement
22--------------
23
24Ce plugin s'appuie sur le plugin « Rôles de documents », et ré-implémente l'API des logos en se servant des rôles.
25Cela permet d'assurer une bonne rétro-compatibilité tout en permettant d'étendre le mécanisme des logos beaucoup plus facilement.
26
27L'idée est de se baser sur les rôles de documents dont le nom commence par `logo` pour définir les types de logos disponibles.
28Les rôles définis par le plugin « Rôles de documents » nous donnent les rôles habituels de spip : `logo` et `logo_survol`, mais on peut aussi ajouter d'autres rôles de logos via la méthode décrite dans [la documentation du plugin Rôles](https://contrib.spip.net/Des-roles-sur-des-liens).
29
30Pour simplifier les choses, on propose d'ajouter les nouveaux types de logos avec le pipeline `roles_logos` :
31
32
33        function prefix_plugin_roles_logos($logos) {
34
35                $logos['logo_bandeau'] = array(
36                        'label' => 'Bandeau du site',
37                        'objets' => array('site'),
38                        'dimensions' => array(
39                                'largeur' => 1200,
40                                'hauteur' => 300,
41                        ),
42                );
43
44                $logos['logo_extrait'] = array(
45                        'label' => 'Extraits pour les listes',
46                        'objets' => array('articles', 'rubriques'),
47                        'defaut' => 'img/logo-extrait.png',
48                        'dimensions' => array(
49                                'largeur' => 800,
50                                'hauteur' => 500,
51                        ),
52                );
53
54                $logos['logo_slideshow'] = array(
55                        'label' => 'Slideshow page d\'accueil',
56                        'objets' => array('articles', 'rubriques'),
57                );
58
59                return $logos;
60        }
61
62
63En se basant sur cette liste de rôles, le plugin se charge automatiquement de :
64
65- Déclarer les rôles de documents qui correspondent, en les liant aux bons objets.
66- Surcharger le formulaire d'édition des logos, pour permettre de gérer les différents types de logos.
67- Créer les balises pour afficher ces logos dans les squelettes. Avec l'exemple ci-dessus, on pourra alors appeler la balise `#LOGO_ARTICLE_EXTRAIT`, qui reverra le bon logo.
68
69### Paramètres des rôles de logo ###
70
71Les logos que l'on définit dans le pipeline `logos_roles` nécessitent au moins deux paramètres :
72
73- __label :__ Le nom du type de logo tel qu'il doit s'afficher dans l'espace privé. Peut être une chaîne de langue.
74- __objets :__ Une liste des types d'objets pour lesquels ce type de logo doit être actif.
75
76D'autres paramètres sont optionnels :
77- __dimensions :__ Ce paramètre permet de forcer les dimensions d'un logo, la balise `#LOGO_` correspondante recadre alors automatiquement le logo. Doit être un tableau avec les clés `largeur` et `hauteur`. Cette fonction est particulièrement utile quand on utilise le plugin massicot, qui propose alors directement le bon format pour chaque type de logo.
78- __defaut :__ Permet de spécifier un logo qui sera affiché par défaut, qu'on ira alors chercher dans le chemin de SPIP.
79
80### Migration des logos existants ###
81
82Comme les logos enregistrés avec l'ancienne API fonctionnent toujours avec la nouvelle, il n'y pas d'urgence à migrer, la cohabitation se fait bien.
83
84On peut passer un logo enregistré à la racine d'IMG à la nouvelle API en le ré-uploadant dans le formulaire d'édition des logos.
85
86Le formulaire de configuration du plugin propose également de migrer les logos en masse.
87
88
89Surcharges du core
90------------------
91
92On surcharge le critère `{logo}` pour qu'il se serve de l'API chercher_logo pour trouver quels objets ont des logos, au lieu de chercher dans le dossier IMG/.
93
94C'est pas top en terme de performance, il vaudrait mieux faire ça avec une jointure…
95Et plutôt intégrer ça dans le plugin roles_documents.
Note: See TracBrowser for help on using the repository browser.