@kiubi/mcp-designer 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +219 -0
  3. package/package.json +57 -0
  4. package/src/app.ts +39 -0
  5. package/src/index.ts +21 -0
  6. package/src/lib/stemmer.ts +38 -0
  7. package/src/lib/theme-checker/block-validator.ts +353 -0
  8. package/src/lib/theme-checker/checker.ts +897 -0
  9. package/src/lib/theme-checker/filter-validator.ts +163 -0
  10. package/src/lib/theme-checker/index.ts +6 -0
  11. package/src/lib/theme-checker/inspector.ts +193 -0
  12. package/src/lib/theme-checker/lang.ts +42 -0
  13. package/src/lib/theme-checker/parsers/component-xml.ts +120 -0
  14. package/src/lib/theme-checker/parsers/model-xml.ts +82 -0
  15. package/src/lib/theme-checker/parsers/post-type-xml.ts +92 -0
  16. package/src/lib/theme-checker/parsers/symbol-xml.ts +162 -0
  17. package/src/lib/theme-checker/parsers/theme-xml.ts +102 -0
  18. package/src/lib/theme-checker/types.ts +97 -0
  19. package/src/logger.ts +28 -0
  20. package/src/tool.ts +13 -0
  21. package/src/tools/create_type.ts +535 -0
  22. package/src/tools/detail_type.ts +208 -0
  23. package/src/tools/get_doc_section.ts +201 -0
  24. package/src/tools/list_types.ts +87 -0
  25. package/src/tools/list_widgets.ts +181 -0
  26. package/src/tools/ruleset.ts +25 -0
  27. package/src/tools/search_doc.ts +160 -0
  28. package/src/tools/validate_theme.ts +63 -0
  29. package/storage/definitions/blog.json +1444 -0
  30. package/storage/definitions/catalogue.json +2817 -0
  31. package/storage/definitions/cms.json +1002 -0
  32. package/storage/definitions/commandes.json +2409 -0
  33. package/storage/definitions/comptes.json +780 -0
  34. package/storage/definitions/modules.json +418 -0
  35. package/storage/definitions/recherche.json +804 -0
  36. package/storage/documents/CLAUDE.exemple.md +281 -0
  37. package/storage/documents/generated/exemples.md +8054 -0
  38. package/storage/documents/generated/integration/01_theme_perso.md +182 -0
  39. package/storage/documents/generated/integration/02_modeles.md +220 -0
  40. package/storage/documents/generated/integration/03_widgets.md +139 -0
  41. package/storage/documents/generated/integration/04_blocs.md +45 -0
  42. package/storage/documents/generated/integration/05_balises.md +43 -0
  43. package/storage/documents/generated/integration/06_balises_globales.md +201 -0
  44. package/storage/documents/generated/integration/07_balises_widget.md +257 -0
  45. package/storage/documents/generated/integration/08_types_billets.md +154 -0
  46. package/storage/documents/generated/integration/09_types_produits.md +77 -0
  47. package/storage/documents/generated/integration/10_types_composants.md +142 -0
  48. package/storage/documents/generated/integration/11_symboles.md +156 -0
  49. package/storage/documents/generated/integration/12_mediatheque.md +66 -0
  50. package/storage/documents/generated/integration/13_includes.md +25 -0
  51. package/storage/documents/generated/integration/14_404.md +32 -0
  52. package/storage/documents/generated/integration/15_arianne.md +62 -0
  53. package/storage/documents/generated/integration/16_fermeture.md +36 -0
  54. package/storage/documents/generated/integration/17_recherche.md +36 -0
  55. package/storage/documents/generated/integration/18_cms.md +582 -0
  56. package/storage/documents/generated/integration/19_modules.md +479 -0
  57. package/storage/documents/generated/integration/20_blog.md +946 -0
  58. package/storage/documents/generated/integration/21_catalogue.md +1834 -0
  59. package/storage/documents/generated/integration/22_commandes.md +2772 -0
  60. package/storage/documents/generated/integration/23_comptes.md +1195 -0
  61. package/storage/documents/generated/integration/24_recherche.md +542 -0
  62. package/storage/documents/hors_sujet_regles.md +43 -0
  63. package/storage/documents/kiubi_api.md +6690 -0
  64. package/storage/documents/kiubi_ruleset.md +419 -0
  65. package/storage/documents/kiubi_workflows.md +121 -0
@@ -0,0 +1,542 @@
1
+ # Recherche
2
+
3
+ ## Widget Recherche / Recherche Simple
4
+
5
+ **Affiche la liste des résultats du moteur de recherche (et non le moteur de recherche qui est généralement intégré à un template principal).**
6
+ Le widget repose sur un fichier général qui est complété par un fichier spécifique par service. On présentera ainsi à l'aide de modèle graphiques différents les résultats d'une recherche dans les services "Site Web", "Blog" et "Catalogue".
7
+
8
+ **ce widget ne peut être utilisé que sur la page type "Recherche" de n'importe quel service.**
9
+
10
+ Contrairement aux autres widgets, la Recherche simple est composée de 4 fichiers :
11
+
12
+ - index.html : correspond aux éléments communs du moteur de recherche.
13
+ - cms.html : correspond aux résultats d'une recherche sur le Site web.
14
+ - blog.html : correspond aux résultats d'une recherche sur le Blog.
15
+ - catalogue.html : correspond aux résultats d'une recherche sur le Catalogue. Ce fichier inclut un moteur de recherche avancé pour le catalogue.
16
+
17
+ ### Template
18
+
19
+ Le template du widget : `theme/fr/widgets/recherche/simple/index.html`. Exemple :
20
+
21
+ ```html
22
+ <!-- BEGIN:main -->
23
+
24
+ <h1>R&eacute;sultat(s) pour &quot;{recherche}&quot; </h1>
25
+
26
+ <p>{resultats}</p>
27
+ <div>
28
+ <!-- BEGIN:nav1 -->
29
+ <!-- BEGIN:precedent -->
30
+ <a href="{lien_precedent}" title="page pr&eacute;cedente">page pr&eacute;cedente</a>
31
+ <!-- END:precedent -->
32
+ <!-- BEGIN: pages -->
33
+ <a href="{lien_page}">{page}</a>
34
+ <!-- END: pages -->
35
+ <!-- BEGIN:suivant -->
36
+ <a href="{lien_suivant}" title="page suivante">page suivante</a>
37
+ <!-- END:suivant -->
38
+ <!-- END:nav1 -->
39
+ </div>
40
+
41
+ <!-- END:main -->
42
+ ```
43
+ ### Arborescence des blocs
44
+
45
+ ```
46
+ └── main // Bloc racine tout le temps affiché
47
+ ```
48
+ ### Balises
49
+
50
+ Bloc|Balise|Description
51
+ ---|---|---
52
+ | main | resultats | Affiche les résultats de la recherche dans le service concerné. |
53
+ | main | recherche | Expression recherchée. |
54
+ | main | ctl | Cette balise est présente dans certains widgets qui utilisent un formulaire. Elle y a alors une utilité technique, sans elle le formulaire ne fonctionnera pas. |
55
+ | main | serial | Identifiant unique du widget dans la page. Permet d'identifier de manière unique le widget dans la page. |
56
+ | main | lien_tri | Cf valeur de la balise dans le template dédié ci dessous |
57
+ | main | widget_modele | Nom du modèle utilisé par le widget (vide pour le modèle de base). |
58
+ | main | widget_limit | Nombre maximum d'éléments affichés |
59
+ | main | widget_resume | Longueur maximale des accroches |
60
+ | main | widget_afficher_navigation | Affiche 1 si la navigation est affichée, 0 si elle est masquée |
61
+
62
+
63
+ ## Widget Recherche / Recherche Simple : Site web
64
+
65
+ **Ce template correspond aux résultats d'une recherche sur le Site web.**
66
+
67
+ Le formulaire de recherche supporte les paramètres suivants :
68
+
69
+ - `r` : termes de la recherche comparés aux contenus des champs titre, sous titre, texte 1 à texte 15 des billets des pages du cms
70
+ - `fields` : restreint la porté du paramètre `r` à une liste de champs
71
+ - `titre` : terme de recherche additionnel pour le titre des billets
72
+ - `sstitre` : terme de recherche additionnel pour le sous titre des billets
73
+ - `texte1` à `texte15` : termes de recherches additionnels pour chacun des champs textes des billets
74
+
75
+ Par exemple la recherche basée sur les paramètres `r=test&fields=titre,texte2,texte5&texte6=truc&texte10=chose` affichera les billets dont :
76
+
77
+ - les champs titre, sous titre, texte5 ou texte 10 contiennent la chaîne "test"
78
+ - ET le champ texte 6 contient le texte "truc"
79
+ - ET le champ texte 10 contient le texte "chose"
80
+
81
+ ### Template
82
+
83
+ Le template du widget : `theme/fr/widgets/recherche/simple/cms.html`. Exemple :
84
+
85
+ ```html
86
+ <!-- BEGIN:main -->
87
+
88
+ <div>
89
+ <h2>{nb_resultats} r&eacute;sultat(s) dans le Site web </h2>
90
+ <div>Trier par : <a href="{lien_tri}=d" title="Trier par Date">Date</a> | <a href="{lien_tri}=p" title="Trier par Page">Page</a></div>
91
+ </div>
92
+ <!-- BEGIN:resultat -->
93
+
94
+ <h3><a href="{lien}" title="Aller &agrave; la page">{intitule_page}</a></h3>
95
+ <div> {titre_billet}</div>
96
+ <p>{resume}</p>
97
+
98
+ <!-- END:resultat -->
99
+ <!-- BEGIN:noresultat -->
100
+
101
+ <h3>Aucun r&eacute;sultat n'a &eacute;t&eacute; trouv&eacute; dans le Site web.</h3> <p>Rechercher <a href="/recherche/blog/?r={recherche}" title="Rechercher dans le Blog">dans le Blog</a> ou <a href="/recherche/catalogue/?r={recherche}" title="Rechercher dans le Catalogue">dans le Catalogue</a>.
102
+ </p>
103
+
104
+ <!-- END:noresultat -->
105
+ <!-- END:main -->
106
+ ```
107
+ ### Arborescence des blocs
108
+
109
+ ```
110
+ └── main // Bloc racine tout le temps affiché
111
+ ├── resultat // Le contenu du bloc s'affiche pour chaque résultat.
112
+ │ ├── titre_billet // Le contenu du bloc ne s'affiche que si le titre ou le sous-tutre du billet n'est pas vide.
113
+ │ ├── resume // Le contenu du bloc ne s'affiche que si le resume_texte1 ou resume_texte2 du billet n'est pas vide.
114
+ │ ├── resume_texte1 // Le contenu du bloc ne s'affiche que si le resume_texte1 du billet n'est pas vide.
115
+ │ ├── resume_texte2 // Le contenu du bloc ne s'affiche que si le resume_texte2 du billet n'est pas vide.
116
+ │ ├── titre // Le contenu du bloc ne s'affiche que si le titre du billet n'est pas vide.
117
+ │ ├── sstitre // Le contenu du bloc ne s'affiche que si le sous-titre du billet n'est pas vide.
118
+ │ ├── texte1 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
119
+ │ ├── texte2 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
120
+ │ ├── texte3 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
121
+ │ ├── texte4 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
122
+ │ ├── texte5 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
123
+ │ ├── texte6 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
124
+ │ ├── texte7 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
125
+ │ ├── texte8 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
126
+ │ ├── texte9 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
127
+ │ ├── texte10 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
128
+ │ ├── texte11 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
129
+ │ ├── texte12 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
130
+ │ ├── texte13 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
131
+ │ ├── texte14 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
132
+ │ └── texte15 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
133
+ └── noresultat // Le bloc s'affiche si aucun résultat n'est trouvé
134
+ ```
135
+ ### Balises
136
+
137
+ Bloc|Balise|Description
138
+ ---|---|---
139
+ | main | nb_resultats | Affiche le nombre de résultats trouvés |
140
+ | main | serial | Identifiant unique du widget dans la page. Permet d'identifier de manière unique le widget dans la page. |
141
+ | main | recherche | Expression recherchée. |
142
+ | main | lien_tri | URL permettant de classer les résultats selon un critère passé en paramètre. `{lien_tri}=d` pour trier par Date, `{lien_tri}=p` pour trier par Page |
143
+ | main | widget_modele | Nom du modèle utilisé par le widget (vide pour le modèle de base). |
144
+ | main | widget_limit | Nombre maximum d'éléments affichés |
145
+ | main | widget_resume | Longueur maximale des accroches |
146
+ | main | widget_afficher_navigation | Affiche 1 si la navigation est affichée, 0 si elle est masquée |
147
+ | resultat | accueil | Affiche 1 si la page libre du billet est la page d'accueil, sinon affiche 0. |
148
+ | resultat | type_billet | Type du billet. Affiche le nom du répertoire du billet dans l'espace FTP. |
149
+ | resultat | titre | Titre du billet. |
150
+ | resultat | sstitre | Sous-titre du billet. |
151
+ | resultat | texte1 à texte 15 | Affiche le contenu des champs texte1 à texte15. |
152
+ | resultat | groupe_billet | Groupe du billet. |
153
+ | resultat | intitule_page | Intitulé de la page libre du billet. |
154
+ | resultat | nom_optim | Nom optimisé de la page libre du billet (c'est à dire la dernière partie de l'URL de la page), tel qu'il est défini dans les options avancées de la page d'édition de la page libre. |
155
+ | resultat | compteur | La balise affichera un compteur commençant à 1 et qui sera incrémenté de 1 à chaque fois. |
156
+ | resultat | alterne | La balise affichera alternativement 1 ou 2. |
157
+ | resultat | alterne_3 | La balise affichera alternativement 1,2 ou 3. |
158
+ | resultat | alterne_4 | La balise affichera alternativement 1,2,3 ou 4. |
159
+ | resultat | alterne_5 | La balise affichera alternativement 1,2,3,4 ou 5. |
160
+ | resultat | lien | URL vers la page libre du billet. |
161
+ | resultat | titre_billet | Affiche le titre du billet ou le sous-titre si le titre est vide. |
162
+ | resultat | resume | Version coupée du champ texte1 ou texte2 si le texte1 est vide. La longueur est configurable dans le widget. |
163
+ | resultat | resume_texte1 | Version coupée du champ texte1. La longueur est configurable dans le widget. |
164
+ | resultat | resume_texte2 | Version coupée du champ texte2. La longueur est configurable dans le widget. |
165
+
166
+
167
+ ## Widget Recherche / Recherche Simple : Blog
168
+
169
+ **Ce template correspond aux résultats d'une recherche sur le Blog.**
170
+
171
+ Le formulaire de recherche supporte les paramètres suivants :
172
+
173
+ - `r` : termes de la recherche comparés aux contenus des champs titre, chapô, texte des billets du blog
174
+ - `fields` : restreint la porté du paramètre `r` à une liste de champs
175
+ - `titre` : terme de recherche additionnel pour le titre des billets
176
+ - `chapo` : terme de recherche additionnel pour le chapô des billets
177
+ - `texte` : terme de recherche additionnel pour le textes des billets
178
+
179
+ Par exemple la recherche basée sur les paramètres `r=test&fields=titre,texte&titre=truc` affichera les billets dont :
180
+
181
+ - les champs titre ou texte contiennent la chaîne "test"
182
+ - ET le champ titre contient le texte "truc"
183
+
184
+ ### Template
185
+
186
+ Le template du widget : `theme/fr/widgets/recherche/simple/blog.html`. Exemple :
187
+
188
+ ```html
189
+ <!-- BEGIN:main -->
190
+
191
+ <div>
192
+ <h2>{nb_resultats} r&eacute;sultat(s) dans le Blog </h2>
193
+ <div>Trier par : <a href="{lien_tri}=d" title="Trier par Date">Date</a> | <a href="{lien_tri}=t" title="Trier par Titre">Titre</a> | <a href="{lien_tri}=c" title="Trier par Cat&eacute;gorie">Cat&eacute;gorie</a> | <a href="{lien_tri}=a" title="Trier par Auteur">Auteur</a></div>
194
+ </div>
195
+ <!-- BEGIN:resultat -->
196
+
197
+ <h3><a href="{lien_billet}"> {titre} </a></h3>
198
+ <div>Par {auteur}, le {num_jour_publication} {mois_publication} {annee_publication} dans <a href="{lien_categorie}">{intitule_categorie}</a> | <a href="{lien_billet}#commentaires">{nb_commentaires} commentaire{pluriel_commentaire}</a> </div>
199
+ <p>{accroche}</p>
200
+
201
+ <!-- END:resultat -->
202
+ <!-- BEGIN:noresultat -->
203
+
204
+ <h3>Aucun r&eacute;sultat n'a &eacute;t&eacute; trouv&eacute; dans le Blog.</h3><p> Rechercher <a href="/recherche/cms/?r={recherche}" title="Rechercher dans le Site web">dans le Site web</a> ou <a href="/recherche/catalogue/?r={recherche}" title="Rechercher dans le Catalogue">dans le Catalogue</a>.</p>
205
+
206
+ <!-- END:noresultat -->
207
+ <!-- END:main -->
208
+ ```
209
+ ### Arborescence des blocs
210
+
211
+ ```
212
+ └── main // Bloc racine tout le temps affiché
213
+ ├── resultat // Le contenu du bloc s'affiche pour chaque résultat.
214
+ │ ├── accroche // Le contenu du bloc s'affiche si l'accroche du billet n'est pas vide.
215
+ │ ├── contenu // Le contenu du bloc s'affiche si le contenu du billet n'est pas vide.
216
+ │ ├── chapo // Le contenu du bloc s'affiche si le chapô du billet n'est pas vide.
217
+ │ ├── en_avant // Le contenu du bloc s'affiche si le billet est épinglé.
218
+ │ ├── texte1 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
219
+ │ ├── texte2 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
220
+ │ ├── texte3 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
221
+ │ ├── texte4 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
222
+ │ ├── texte5 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
223
+ │ ├── texte6 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
224
+ │ ├── texte7 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
225
+ │ ├── texte8 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
226
+ │ ├── texte9 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
227
+ │ ├── texte10 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
228
+ │ ├── texte11 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
229
+ │ ├── texte12 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
230
+ │ ├── texte13 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
231
+ │ ├── texte14 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
232
+ │ ├── texte15 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
233
+ │ └── illustration // Le contenu du bloc s'affiche si le billet a une illustration
234
+ └── noresultat // Le contenu du bloc s'affiche s'il n'y a aucun résultat.
235
+ ```
236
+ ### Balises
237
+
238
+ Bloc|Balise|Description
239
+ ---|---|---
240
+ | main | nb_resultats | Affiche le nombre de résultats trouvés |
241
+ | main | serial | Identifiant unique du widget dans la page. Permet d'identifier de manière unique le widget dans la page. |
242
+ | main | recherche | Expression recherchée. |
243
+ | main | lien_tri | URL permettant de classer les résultats selon un critère passé en paramètre. <br /><br />- `{lien_tri}=d` pour trier par Date,<br />- `{lien_tri}=t` pour trier par Titre,<br />- `{lien_tri}=c` pour trier par Catégorie, <br />- `{lien_tri}=a` pour trier par Auteur |
244
+ | main | widget_modele | Nom du modèle utilisé par le widget (vide pour le modèle de base). |
245
+ | main | widget_limit | Nombre maximum d'éléments affichés |
246
+ | main | widget_resume | Longueur maximale des accroches |
247
+ | main | widget_afficher_navigation | Affiche 1 si la navigation est affichée, 0 si elle est masquée |
248
+ | resultat | billet_id | Id du billet. |
249
+ | resultat | titre | Titre du billet |
250
+ | resultat | en_avant | Affiche 1 si le billet est épinglé, sinon affiche 0. |
251
+ | resultat | chapo | Chapô du billet |
252
+ | resultat | contenu | Contenu du billet |
253
+ | resultat | accroche | Accroche du billet. Affiche le chapô du billet ou son contenu si son chapô est vide. |
254
+ | resultat | type_billet | Type du billet. |
255
+ | resultat | texte1 à texte15 | Affiche les champs texte1 à texte15. |
256
+ | resultat | categorie_id | Identifiant unique de la catégorie du billet. |
257
+ | resultat | commentaires_ouverts | Affiche 1 quand les commentaires du billet sont ouverts, sinon 0. |
258
+ | resultat | nom_optim | Nom optimisé du billet (c'est à dire la dernière partie de l'URL de la page), tel qu'il est défini dans les options avancées de la page d'édition du billet. |
259
+ | resultat | intitule_categorie | Intitulé de la catégorie du billet. |
260
+ | resultat | nb_commentaires | Nombre de commentaires |
261
+ | resultat | categorie_optim | Nom optimisé de la catégorie tel qu'il est dans la page d'édition d'une catégorie du Blog dans le champ "Nom de <br />la page" |
262
+ | resultat | lien_billet | URL vers le billet |
263
+ | resultat | lienperma_billet | URL complète (avec le nom de domaine) vers le billet |
264
+ | resultat | lien_categorie | URL vers la catégorie du billet |
265
+ | resultat | auteur | Auteur du billet |
266
+ | resultat | pluriel_commentaire | Affiche "s" si le billet contient plus d'un commentaire |
267
+ | resultat | num_jour_publication | Affiche le numéro du jour de la date de publication (01 - 31). |
268
+ | resultat | jour_semaine_publication | Affiche le jour de la semaine de la date de publication (lundi - dimanche). |
269
+ | resultat | num_mois_publication | Affiche le numéro du mois de la date de publication (01 - 12). |
270
+ | resultat | mois_publication | Affiche le mois de la date de publication (janvier - décembre). |
271
+ | resultat | mois_abrev_publication | Affiche le mois de la date de publication abrégé (jan - déc) |
272
+ | resultat | annee_publication | Affiche l'année de la date de publication (2010). |
273
+ | resultat | heure_publication | Affiche l'heure de la date de publication (00-23). |
274
+ | resultat | minute_publication | Affiche les minutes de la date de publication (00-59). |
275
+ | resultat | seconde_publication | Affiche les secondes de la date de publication (00-59). |
276
+ | resultat | timestamp_publication | Affiche le timestamp de la date de publication. |
277
+ | resultat | compteur | La balise affichera un compteur commençant à 1 et qui sera incrémenté de 1 à chaque fois. |
278
+ | resultat | alterne | La balise affichera alternativement 1 ou 2. |
279
+ | resultat | alterne_3 | La balise affichera alternativement 1,2 ou 3. |
280
+ | resultat | alterne_4 | La balise affichera alternativement 1,2,3 ou 4. |
281
+ | resultat | alterne_5 | La balise affichera alternativement 1,2,3,4 ou 5. |
282
+ | illustration | url_illustration | Url complète de l'illustration principale du billet |
283
+ | illustration | url_illustration_miniature | Url complète de la miniature de l'illustration principale |
284
+ | illustration | url_illustration_vignette | Url complète de la vignette de l'illustration principale |
285
+ | illustration | url_illustration_g_miniature | Url complète de la grande miniature de l'illustration principale |
286
+ | illustration | url_illustration_g_vignette | Url complète de la grande vignette de l'illustration principale |
287
+ | illustration | ext_illustration | Extension de fichier de l'illustration principale du billet |
288
+
289
+
290
+ ## Widget Recherche / Recherche Simple : Catalogue
291
+
292
+ **Ce template correspond aux résultats d'une recherche sur le Catalogue.**
293
+
294
+ Le formulaire de recherche supporte les paramètres suivants :
295
+
296
+ - `c` : identifiant d'une catégorie
297
+ - `pmin` : prix minimum
298
+ - `pmax` : prix maximum
299
+ - `md` : mois de début de date de disponibilité des produits
300
+ - `ma` : mois de fin de date de disponibilité des produits
301
+ - `rtags` : liste de tags séparés par des virgules
302
+ - `r` : termes de la recherche comparés aux contenus des champs intitulé, chapô, description, marque, texte 1 à texte 15 des produits du catalogue
303
+ - `fields` : restreint la porté du paramètre `r` à une liste de champs
304
+ - `intitule_produit` : terme de recherche additionnel pour l'intitulé des produits
305
+ - `desc_produit` : terme de recherche additionnel pour la description des produits
306
+ - `chapo_produit` : terme de recherche additionnel pour le chapô des produits
307
+ - `intitule_marque` : terme de recherche additionnel pour l'intitulé de la marque des produits
308
+ - `texte1` à `texte15` : termes de recherches additionnels pour chacun des champs textes des produits
309
+ - `types` : restreint la recherche aux produits de ces types uniquement
310
+
311
+ Par exemple la recherche basée sur les paramètres `r=test&fields=intitule_produit,intitule_marque,texte5&pmin=12.5&texte6=truc&rtags=truc&types=type1,type2` affichera les produits dont :
312
+
313
+ - les intitulé, marque, ou texte 5 contiennent la chaîne "test"
314
+ - ET au moins une variante à un prix d'au moins 12,50 €
315
+ - ET le champ texte 6 contient le texte "truc"
316
+ - ET possède un tag contenant "truc"
317
+ - ET de type "type1" ou "type2"
318
+
319
+ ### Template
320
+
321
+ Le template du widget : `theme/fr/widgets/recherche/simple/catalogue.html`. Exemple :
322
+
323
+ ```html
324
+ <!-- BEGIN:main -->
325
+ <form method="get">
326
+ <h2>{nb_resultats} r&eacute;sultat(s) dans le Catalogue </h2>
327
+ <div>
328
+ <input type="text" name="r" value="{rtexte}" placeholder="Produit" />
329
+ <p>
330
+ <select name="c">
331
+ <option value="">Toutes les cat&eacute;gories</option>
332
+ <!-- BEGIN:categorie-->
333
+ <option value="{categorie_id}" {selected}>{intitule_categorie}</option>
334
+ <!-- END:categorie-->
335
+ </select>
336
+ <select name="t">
337
+ <option value="">Tous les tags</option>
338
+ <!-- BEGIN:tag -->
339
+ <option value="{tag}" {selected}>{tag}</option>
340
+ <!-- END:tag -->
341
+ <!-- BEGIN:notag -->
342
+ <option value="">Pas de tag disponible</option>
343
+ <!-- END:notag -->
344
+ </select>
345
+ </p>
346
+ <p>
347
+ <select name="md">
348
+ <option value="">Date de disponibilité</option>
349
+ <!-- BEGIN:mois_debut-->
350
+ <option value="{num_mois}" {selected}>{mois}</option>
351
+ <!-- END:mois_debut-->
352
+ </select>
353
+ <select name="ma">
354
+ <option value="">Fin de disponibilité</option>
355
+ <!-- BEGIN:mois_fin-->
356
+ <option value="{num_mois}" {selected}>{mois}</option>
357
+ <!-- END:mois_fin-->
358
+ </select>
359
+ </p>
360
+ <p>
361
+ <input type="text" name="pmin" value="{pmin}" placeholder="Prix minimum" />
362
+ <input type="text" name="pmax" value="{pmax}" placeholder="Prix maximum"/>
363
+ </p>
364
+ <input type="submit" name="Submit" value="Rechercher"/>
365
+ <input type="hidden" name="ra" value="av" />
366
+ </div>
367
+ <div>
368
+ <p>Trier par :
369
+ <a href="{lien_tri}=po" title="Trier par Produit">Produit</a> |
370
+ <a href="{lien_tri}=pi" title="Trier par Prix">Prix</a> |
371
+ <a href="{lien_tri}=n" title="Trier par Note">Note</a> |
372
+ <a href="{lien_tri}=d" title="Trier par Date de disponibilit&eacute;">Date de disponibilit&eacute;</a>
373
+ </p>
374
+ </div>
375
+ </form>
376
+
377
+
378
+ <!-- BEGIN:resultat -->
379
+
380
+ <!-- BEGIN:illustrations -->
381
+ <a href="{lien_produit}" ><img src="{url_illustration_miniature}" alt="{intitule_produit|htmlentities}" /></a>
382
+ <!-- END:illustrations -->
383
+ <!-- BEGIN: noillustrations -->
384
+ <a href="{lien_produit}" ><img src="{racine}/{theme}/fr/images/produit_mini.gif" alt="{intitule_produit|htmlentities}" /></a>
385
+ <!-- END: noillustrations -->
386
+ <h3><a href="{lien_produit}">{intitule_produit}</a></h3>
387
+ <!-- BEGIN:tags -->
388
+ <p>{tags}</p>
389
+ <!-- END:tags -->
390
+ <!-- BEGIN:non_disponible -->
391
+ <p>Disponible à partir du {num_jour_disponibilite}/{num_mois_disponibilite}/{annee_disponibilite}</p>
392
+ <!-- END:non_disponible -->
393
+ <!-- BEGIN:rupture_partielle -->
394
+ <p>Toutes les variantes ne sont plus disponibles</p>
395
+ <!-- END:rupture_partielle -->
396
+ <!-- BEGIN:rupture -->
397
+ <p>Produit en rupture de stock</p>
398
+ <!-- END:rupture -->
399
+ <!-- BEGIN:accroche -->
400
+ <p>{accroche}</p>
401
+ <!-- END:accroche -->
402
+ <p>{prix}
403
+ <!-- BEGIN:prix_barre -->
404
+ <del>{prix_barre}</del>
405
+ <!-- END:prix_barre -->
406
+ </p>
407
+
408
+ <!-- END:resultat -->
409
+ <!-- BEGIN:noresultat -->
410
+
411
+ <h3>Aucun r&eacute;sultat n'a &eacute;t&eacute; trouv&eacute; dans le Catalogue.</h3>
412
+ <p> Rechercher <a href="/recherche/cms/?r={rtexte}" title="Rechercher dans le Site web">dans le Site web</a> ou <a href="/recherche/blog/?r={rtexte}" title="Rechercher dans le Blog">dans le Blog</a>.
413
+ </p>
414
+
415
+ <!-- END:noresultat -->
416
+ <!-- END:main -->
417
+ ```
418
+ ### Arborescence des blocs
419
+
420
+ ```
421
+ └── main // Bloc racine tout le temps affiché
422
+ ├── resultat //
423
+ │ ├── illustrations // Le contenu du bloc s'affiche si le produit a au moins une illustration
424
+ │ ├── noillustrations // Le contenu du bloc s'affiche si le produit n'a pas d'illustration.
425
+ │ ├── en_avant // Le contenu du bloc s'affiche si le produit est un produit vedette.
426
+ │ ├── accroche // Le contenu du bloc s'affiche si l'accroche du produit a une valeur.
427
+ │ ├── chapo // Le contenu du bloc s'affiche si le chapô du produit a une valeur.
428
+ │ ├── description // Le contenu du bloc s'affiche si la description du produit a une valeur.
429
+ │ ├── tags // Le contenu du bloc s'affiche si le produit a un ou plusieurs tags.
430
+ │ ├── prix_promo // Le contenu du bloc s'affiche si le produit a au moins une variante en promo.
431
+ │ ├── prix_barre // Le contenu du bloc s'affiche si le produit a toutes ces variantes avec le même prix et le même prix promo.
432
+ │ ├── texte1 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
433
+ │ ├── texte2 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
434
+ │ ├── texte3 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
435
+ │ ├── texte4 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
436
+ │ ├── texte5 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
437
+ │ ├── texte6 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
438
+ │ ├── texte7 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
439
+ │ ├── texte8 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
440
+ │ ├── texte9 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
441
+ │ ├── texte10 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
442
+ │ ├── texte11 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
443
+ │ ├── texte12 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
444
+ │ ├── texte13 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
445
+ │ ├── texte14 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
446
+ │ ├── texte15 // Les contenus des blocs ne s'affichent que si les contenus des champs textes correspondants ne sont pas vides.
447
+ │ ├── non_disponible // Le contenu du bloc s'affiche si le produit n'est pas encore disponible (date de disponibilité suppérieure à la date courante).
448
+ │ ├── rupture // Le contenu du bloc s'affiche si toutes les variantes du produit sont en rupture de stock.
449
+ │ ├── rupture_partielle // Le contenu du bloc s'affiche si une variante du produit est en rupture de stock.
450
+ │ └── marque // Le contenu du bloc s'affiche si la marque du produit est renseignée
451
+ ├── categorie // Le contenu du bloc s'affiche pour chaque catégorie du catalogue. Utilisé pour définir une recherche sur les catégories des produits.
452
+ ├── mois_debut // Le contenu du bloc s'affiche pour chaque mois de l'année. Utilisé pour définir une recherche sur les dates de disponibilité des produits.
453
+ ├── mois_fin // Le contenu du bloc s'affiche pour chaque mois de l'année. Utilisé pour définir une recherche sur les dates de disponibilité des produits.
454
+ ├── tag // Le contenu du bloc s'affiche s'il y a des tags de produit disponibles. Utilisé pour définir une recherche sur les tags des produits.
455
+ ├── notag // Le contenu du bloc s'affiche s'il n'y a pas de tag de produit disponible.
456
+ └── noresultat // Le contenu du bloc s'affiche s'il n'y a aucun résultat.
457
+ ```
458
+ ### Balises
459
+
460
+ Bloc|Balise|Description
461
+ ---|---|---
462
+ | main | nb_resultats | Affiche le nombre de résultats trouvés |
463
+ | main | serial | Identifiant unique du widget dans la page. Permet d'identifier de manière unique le widget dans la page. |
464
+ | main | lien_tri | URL permettant de classer les résultats différemment. Par exemple, le code `{lien_tri}=alphaDESC` retournera l'URL de tri par ordre alphabétique inversé des produits.<br /><br />Fonction de tri et paramètres associables à la balise `{lien_tri}` : <br /><br /> - Par ordre alphabétique : `alpha`<br /> - Par ordre alphabétique inverse : `alphaDESC`<br /> - Par prix : `prix`<br /> - Par prix décroissant : `prixDESC`<br /> - Par date de disponibilité : `date`<br /> - Par date de disponibilité décroissante : `dateDESC`<br /> - Par note moyenne : `note`<br /> - Par note moyenne décroissante : `noteDESC`<br /> - Classement aléatoire : `rand`<br /><br />Il est à noter que les produits vedettes affichés le seront toujours en premier, tout en respectant entre eux le paramètre de tri choisi. |
465
+ | main | type_prix | "HT" ou "TTC" |
466
+ | main | pmin | critère de recherche, prix minimal |
467
+ | main | pmax | critère de recherche, prix maximal |
468
+ | main | rtags | critère de recherche, tags |
469
+ | main | rtexte | critère de recherche, texte |
470
+ | main | recherche | récapitulatif de la recherche (texte + tags) |
471
+ | main | widget_modele | Nom du modèle utilisé par le widget (vide pour le modèle de base). |
472
+ | main | widget_limit | Nombre maximum d'éléments affichés |
473
+ | main | widget_resume | Longueur maximale des accroches |
474
+ | main | widget_afficher_navigation | Affiche 1 si la navigation est affichée, 0 si elle est masquée |
475
+ | resultat | num_jour_disponibilite | Affiche le numéro du jour de la date de disponibilité (01 - 31). |
476
+ | resultat | jour_semaine_disponibilite | Affiche le jour de la semaine de la date de disponibilité (lundi - dimanche). |
477
+ | resultat | num_mois_disponibilite | Affiche le numéro du mois de la date de disponibilité (01 - 12). |
478
+ | resultat | mois_disponibilite | Affiche le mois de la date de disponibilité (janvier - décembre). |
479
+ | resultat | mois_abrev_disponibilite | Affiche le mois de la date de disponibilité abrégé (jan - déc) |
480
+ | resultat | annee_disponibilite | Affiche l'année de la date de disponibilité (2010). |
481
+ | resultat | minute_disponibilite | Affiche les minutes de la date de disponibilité (00-59). |
482
+ | resultat | heure_disponibilite | Affiche l'heure de la date de disponibilité (00-23). |
483
+ | resultat | seconde_disponibilite | Affiche les secondes de la date de disponibilité (00-59). |
484
+ | resultat | timestamp_disponibilite | Affiche le timestamp de la date de disponibilité. |
485
+ | resultat | produit_id | Id du produit. |
486
+ | resultat | type_produit | Type du produit c'est à dire le nom du répertoire du produit dans l'espace FTP. |
487
+ | resultat | en_avant | Affiche 1 si le produit est un produit vedette, sinon affiche 0. |
488
+ | resultat | nb_commentaires | Nombre de commentaires. |
489
+ | resultat | note_moyenne | Note moyenne ; 0 à 10. |
490
+ | resultat | note_moyenne_5 | Note moyenne ; 0 à 5. |
491
+ | resultat | intitule_produit | Intitulé du produit. |
492
+ | resultat | nom_optim | Nom optimisé du produit |
493
+ | resultat | categorie_id | Id de la catégorie en cours du produit. |
494
+ | resultat | intitule_categorie | Intitulé de la catégorie en cours du produit. |
495
+ | resultat | categorie_optim | Nom optimisé de la catégorie en cours du produit. |
496
+ | resultat | lien_produit | Lien vers la page de détail du produit. |
497
+ | resultat | lien_categorie | Lien vers la catégorie en cours du produit. |
498
+ | resultat | accroche | Accroche du produit. Affiche le chapô du produit ou son contenu si son chapô est vide. |
499
+ | resultat | chapo | Chapô du produit. |
500
+ | resultat | description | Description du produit. |
501
+ | resultat | tags | Affiche la liste des tags du produit. Le lien renvoi vers le moteur de recherche restreint au tag cliqué. |
502
+ | resultat | prix_min | Affiche le prix minimum toutes variantes confondues. |
503
+ | resultat | prix_max | Affiche le prix maximum toutes variantes confondues. |
504
+ | resultat | prix_barre | Affiche le prix normal si toutes les variantes ont un prix promo renseigné identique, sinon n'affiche rien. |
505
+ | resultat | prix | Comportement standard du prix.<br /><br />- Si une variante à un prix : affiche le prix <br />- Si une variante à un prix promo : affiche le prix promo <br />- Si plusieurs variantes ont un prix identique : affiche le prix <br />- Si plusieurs variantes ont un prix promo identique : affiche le prix promo<br />- Si plusieurs variantes ont un prix (promo) différent : affiche « prix minium (promo comprise) - prix maximum (promo comprise) » |
506
+ | resultat | prix_HT_min | Affiche le prix minimum (promo comprise) HT toutes variantes confondues. |
507
+ | resultat | prix_TTC_min | Affiche le prix minimum (promo comprise) TTC toutes variantes confondues. |
508
+ | resultat | prix_HT_max | Affiche le prix maximum (promo comprise) HT toutes variantes confondues. |
509
+ | resultat | prix_TTC_max | Affiche le prix maximum (promo comprise) TTC toutes variantes confondues. |
510
+ | resultat | prix_min_valeur | Affiche le prix minimum toutes variantes confondues. |
511
+ | resultat | prix_max_valeur | Affiche le prix maximum toutes variantes confondues. |
512
+ | resultat | prix_barre_valeur | Affiche le prix normal si toutes les variantes ont un prix promo renseigné identique, sinon n'affiche rien. |
513
+ | resultat | prix_HT_min_valeur | Affiche le prix minimum (promo comprise) HT toutes variantes confondues. |
514
+ | resultat | prix_TTC_min_valeur | Affiche le prix minimum (promo comprise) TTC toutes variantes confondues. |
515
+ | resultat | prix_HT_max_valeur | Affiche le prix maximum (promo comprise) HT toutes variantes confondues. |
516
+ | resultat | prix_TTC_max_valeur | Affiche le prix maximum (promo comprise) TTC toutes variantes confondues. |
517
+ | resultat | texte1 à texte15 | Affiche les champs texte1 à texte15. |
518
+ | resultat | compteur | La balise affichera un compteur commençant à 1 et qui sera incrémenté de 1 à chaque fois. |
519
+ | resultat | alterne | La balise affichera alternativement 1 ou 2. |
520
+ | resultat | alterne_3 | La balise affichera alternativement 1,2 ou 3. |
521
+ | resultat | alterne_4 | La balise affichera alternativement 1,2,3 ou 4. |
522
+ | resultat | alterne_5 | La balise affichera alternativement 1,2,3,4 ou 5. |
523
+ | resultat | marque | Affiche la marque du produit |
524
+ | illustrations | illustration | Numéro de fichier dans la médiathèque de l'illustration principale du produit. |
525
+ | illustrations | url_illustration | Url complète de l'illustration principale |
526
+ | illustrations | url_illustration_miniature | Url complète de la miniature de l'illustration principale |
527
+ | illustrations | url_illustration_vignette | Url complète de la vignette de l'illustration principale |
528
+ | illustrations | url_illustration_g_miniature | Url complète de la grande miniature de l'illustration principale |
529
+ | illustrations | url_illustration_g_vignette | Url complète de la grande vignette de l'illustration principale |
530
+ | illustrations | ext_illustration | Extension de fichier de l'illustration principale du produit |
531
+ | categorie | categorie_id | Id de la catégorie. |
532
+ | categorie | intitule_categorie | Intitulé de la catégorie. |
533
+ | categorie | selected | Affiche "selected" pour la catégorie recherchée en cours dans le moteur de recherche avancée. Utilisé pour les listes déroulantes. |
534
+ | mois_debut | num_mois | Affiche le numéro du mois (01 - 12). |
535
+ | mois_debut | mois | Affiche le mois (janvier - décembre). |
536
+ | mois_debut | selected | Affiche selected="selected" pour le mois recherché en cours dans le moteur de recherche avancée. Utilisé pour les listes déroulantes. |
537
+ | mois_fin | num_mois | Affiche le numéro du mois (01 - 12). |
538
+ | mois_fin | mois | Affiche le mois (janvier - décembre). |
539
+ | mois_fin | selected | Affiche "selected" pour le mois recherché en cours dans le moteur de recherche avancée. Utilisé pour les listes déroulantes. |
540
+ | tag | tag | Liste de tous les tags du catalogue |
541
+ | tag | selected | Affiche "selected" pour le ou les tags recherchés en cours dans le moteur de recherche avancée. Utilisé pour les listes déroulantes. |
542
+
@@ -0,0 +1,43 @@
1
+ ### Wrappers visuels
2
+
3
+ **RÈGLE :** L'habillage visuel d'un élément est défini dans le template de l'élément lui-même (billet, composant, widget), jamais dans le template principal.
4
+
5
+ | Règle | Contrainte |
6
+ | :--- | :--- |
7
+ | Balise par défaut | `<section>`. Déroger uniquement si sémantiquement incorrect : `<aside>` pour contenu secondaire, `<div>` en dernier recours |
8
+ | Billet | Le wrapper `<section>` doit contenir un `<article>` à l'intérieur |
9
+ | Classes CSS | Analyser les wrappers existants dans le projet pour reproduire les classes habituellement appliquées selon le type de template |
10
+ | Nommage des classes CSS | Analyser en priorité les conventions du thème et les reproduire. En l'absence de convention établie, utiliser le tiret `-` comme séparateur (ex : `mon-element`, `bloc-titre`). L'underscore `_` est **interdit** comme séparateur |
11
+ | Identification | Le wrapper doit posséder un attribut `id` normalisé (voir ci-dessous) |
12
+
13
+ **Attribut `id` normalisé :**
14
+
15
+ | Type d'élément | Attribut `id` |
16
+ | :--- | :--- |
17
+ | Billet ou composant | `id="kiubi-section-{serial}"` |
18
+ | Widget | `id="kiubi-widget-{serial}"` |
19
+
20
+
21
+
22
+ ### Ordre de déclaration dans `config.xml` (et `desc.xml` pour les symboles)
23
+
24
+ | Position | Billet | Billet du blog / Produit | Composant / Symbole |
25
+ | :--- | :--- | :--- | :--- |
26
+ | 1re position | `titre` | — | `title` |
27
+ | 2e position | `sstitre` (si présent) | — | `subtitle` (si présent) |
28
+ | Suite | Autres champs dans l'ordre logique | Autres champs dans l'ordre logique | Autres champs dans l'ordre logique |
29
+ | Dernière position | Champs de type `wysiwyg` | Champs de type `wysiwyg` | Champs de type `wysiwyg` |
30
+
31
+ Ces règles s'appliquent aussi bien au niveau composant qu'au niveau item.
32
+
33
+
34
+ ### Attribut `tri` dans `config.xml`
35
+
36
+ Le `config.xml` contient un attribut `tri` sur l'élément racine qui détermine la position de l'élément dans le menu de sélection du back-office. Un `tri` de `1` place l'élément en tête de liste.
37
+
38
+ **Règle :** Le `tri` du nouveau template doit toujours être `max + 1` par rapport aux templates existants du même type. Des outils sont disponibles pour obtenir le prochain `tri` disponible automatiquement.
39
+
40
+
41
+ ### Répertoire de travail `temp/`
42
+
43
+ Le répertoire `temp/`, situé au même niveau que `theme/`, est un dossier de travail dédié à l'intégration. Il est exclu fonctionnellement du thème : il ne fait pas partie du thème livrable, ne doit jamais être pris comme référence ou exemple pour toute autre action, et son contenu est géré manuellement.