Manuel pour Contao 3.2

Table des matières

1. Introduction 2. Installation i. Installer Contao ii. Utilisation du Safe Mode Hack iii. Mise à jour manuelle iv. Live Update Service v. Déplacer une installation vi. Configuration du serveur en ligne 3. Panneau d'administration i. Liste d'enregistrements ii. Édition des enregistrements iii. Raccourcis clavier 4. Gestion des pages i. Composants ii. Thèmes iii. Feuilles de style iv. Modules v. Présentations de page vi. Types de page 5. Gestion du contenu i. Articles ii. Actualités iii. Événements iv. Flux RSS/Atom v. Bulletins d'information vi. Formulaires vii. Commentaires viii. Modèles ix. Balises d'insertion 6. Administration du système i. Utilisateurs et groupes d'utilisateurs ii. Extensions iii. Maintenance 7. Tableaux conteneurs de données i. Référence ii. Palettes iii. Callbacks 8. Personnaliser Contao i. Contourner le cache interne ii. Configurations personnalisées iii. Ajouter des champs personnalisés iv. Personnaliser l'éditeur de texte riche (TinyMCE) v. Surcharger les méthodes de classes vi. Contao hooks 9. Référentiel d'extensions i. Ajout d'une extension ii. Ajouter une release iii. Ajouter des fichiers iv. Ajout de fichiers à partir d'un référentiel GitHub

1 Manuel pour Contao 3.2

v. Ajouter des traductions vi. Ajouter des dépendances vii. Publier une extension 10. Développement de Contao i. Création d'un nouveau ticket

2 Manuel pour Contao 3.2

Manuel pour Contao 3.2

Ceci est le manuel officiel pour les utilisateurs et les développeurs. Vous pouvez toujours trouver la dernière version sur docs.contao.org.

Table des matières

Introduction Installation Installer Contao Utilisation du Safe Mode Hack Mise à jour manuelle Live Update Service Déplacer une installation Configuration du serveur en ligne Panneau d'administration Liste d'enregistrements Édition des enregistrements Raccourcis clavier Gestion des pages Composants Thèmes Feuilles de style Modules Présentations de page Types de page Gestion du contenu Articles Actualités Événements Flux RSS/Atom Bulletins d'information Formulaires Commentaires Modèles Balises d'insertion Administration du système Utilisateurs et groupes d'utilisateurs Extensions Maintenance Tableaux conteneurs de données Référence Palettes Callbacks Personnaliser Contao Contourner le cache interne Configurations personnalisées Ajouter des champs personnalisés Personnaliser l'éditeur de texte riche (TinyMCE) Surcharger les méthodes de classes

Introduction 3 Manuel pour Contao 3.2

Contao hooks Référentiel d'extensions Ajout d'une extension Ajouter une release Ajouter des fichiers Ajout de fichiers à partir d'un référentiel GitHub Ajouter des traductions Ajouter des dépendances Publier une extension Développement de Contao Création d'un nouveau ticket

Licence

The Contao documentation is licensed under a Creative Commons Attribution 3.0 License license (CC BY-NC-SA 3.0). If you want to redistribute a modified or unmodified version of the documentation, you can do so under the license terms.

If you contribute to the documentation, e.g. by creating pull requests, you grant us full usage rights of any content you create or upload. You also ensure that your content does not violate any third-party rights.

We are not claiming exclusive usage rights, therefore you are free to use your contributed content (e.g. texts or images) in any other project as well.

Introduction 4 Manuel pour Contao 3.2

Installation

Les chapitres suivants expliquent comment installer et mettre à jour Contao. Vous apprendrez à utiliser l'outil d'installation de Contao, comment synchroniser une installation existante via FTP, comment configurer le "Safe Mode Hack" ainsi qu'un serveur pour Contao.

Installation 5 Manuel pour Contao 3.2

Installer Contao

Premièrement, veuillez télécharger la dernière archive de Contao et l'extraire sur votre ordinateur. Déplacez les fichiers dans le répertoire htdocs de votre installation locale (par exemple XAMPP) ou les téléverser sur votre serveur avec un logiciel FTP (nous vous recommandons d'utiliser WinSCP). Selon la configuration de votre serveur, le dossier public est probablement nommé htdocs , httpdocs , html ou public_html .

Si vous avez un accès SSH, vous pouvez télécharger et extraire l'archive avec les commandes suivantes:

curl -L http://download.contao.org | tar -xzp

L'outil d'installation de Contao

Pour ouvrir l'outil d'installation de Contao, il suffit d'ajouter /contao/install. à l'URL de votre installation de Contao. Notez que l'outil d'installation est protégé contre les attaques par force brute et sera bloqué si un mauvais mot de passe a été inséré trois fois de suite. Pour enlever le verrou, ouvrez le fichier system/config/localconfig.php dans un éditeur de texte, trouvez la ligne ci-dessous et définissez-là à 0 .

$GLOBALS['TL_CONFIG']['installCount'] = 0; // Ceci enlèvera le verrouillage automatique

Connexion à la base de données

Connectez-vous au panneau d'administration de votre serveur (par exemple "Plesk" ou "cPanel") et créez une nouvelle base de données pour Contao. Ensuite, entrez les identifiants de connexion dans l'outil d'installation de Contao. Notez que le jeu de caractères par défaut de Contao UTF-8 s'écrit UTF8 dans MySQL !

Mise à jour des tables de la base de données

Lorsque que vous êtes connecté à la base de données, Contao vérifie automatiquement ses tables et affiche une liste de changements recommandés dans le cas où ils ne seraient pas à jour. Assurez-vous de lire attentivement ces recommandations, car Contao ne connaît que ses propres tables et tentera de supprimer celles d'autres applications en partage avec la base de données. Confirmez les modifications et cliquez sur le bouton "Mettre à jour la base de données".

Importer un modèle

Un modèle est un site internet pré-configuré qui comprend un exemple de structure de site et plusieurs feuilles de style pour formater les modules de base de Contao ainsi que les éléments de contenu.

A partir de la version 3.2.11, le site internet de démonstration n'est plus inclus dans le package de téléchargement. Selon la version utilisée, la nouvelle et officielle démonstration de Contao ou l'ancienne Music Academy peuvent être installées en tant qu'extension. Les informations concernant la compatibilité sont disponibles dans le référentiel d'extensions.

Comment installer le modèle de démonstration :

1. Créer une nouvelle installation de Contao avec un compte administrateur 2. S'identifier en tant qu'administrateur dans le back office 3. Installer l'extension correspondante en utilisant le référentiel d'extensions 4. Se déconnecter du back office 5. Ouvrir de nouveau l'outil d'installation

Installer Contao 6 Manuel pour Contao 3.2

Pour importer un modèle, sélectionnez l'entrée dans le menu déroulant et cliquez sur le bouton "Importer un modèle".

Les données existantes seront remplacées lors de l'importation d'un modèle !

Création d'un utilisateur administrateur

Si vous n'avez pas importé un modèle, vous devez créer un utilisateur administrateur pour se connecter au back office de Contao. Après avoir créé le compte, le processus d'installation est terminé. Le lien dans le coin inférieur droit vous amènera vers le panneau d'administration. Si vous avez importé le site internet d'exemple, vous pouvez vous connecter en tant qu'utilisateur "k.jones" avec le mot de passe "kevinjones".

Installation du modèle de démonstration de Contao

Voir Comment installer le modèle de démonstration dans la section Importer un modèle

Utiliser des URLs conviviales pour les moteurs de recherche

Si vous utilisez un serveur Apache et êtes autorisé à utiliser mod_rewrite, vous pouvez faire en sorte que Contao génère des URLs conviviales pour les moteurs de recherche qui ressemblent à des documents HTML statiques. Un ensemble de règles de réécriture par défaut est stocké dans le fichier .htaccess.default situé dans le répertoire de Contao. Renommez ce fichier en .htaccess afin que le serveur Apache puisse le traiter, puis connectez-vous au back office et accédez à la configuration du système. Sélectionnez "Ré-écrire les URLs" dans la section "Configuration du front office" et enregistrez vos modifications. Maintenant, Contao génère des URLs statiques comme home.html au lieu de index.php?id=12 .

Installer Contao 7 Manuel pour Contao 3.2

Utilisation du Safe Mode Hack

En essayant d'installer Contao avec l'outil d'installation, vous pourriez voir un avertissement que le fichier de configuration local n'est pas accessible en écriture.

Problèmes d'autorisation de fichiers

Le terme "Safe Mode Hack" peut prêter à confusion, car il implique que le problème a été causé par le safe_mode de PHP. Cependant, il est causé par des permissions de fichiers insuffisantes et peut se produire même si le safe_mode est désactivé, il devrait donc être appelé "File Permission Hack" à la place. PHP en tant que module Apache est généralement exécuté comme wwwrun , www-data ou nobody , alors que les fichiers que vous téléverser via FTP vous appartiennent (par exemple web4 ou ab5678 ). Le serveur refuse donc, au script PHP de Contao, l'accès à ces fichiers.

Utilisation du FTP pour les opérations sur les fichiers

Pour contourner le problème des permissions, Contao établit une connexion FTP pour modifier les fichiers et les répertoires. Tout ce que vous avez à faire est d'entrer vos identifiants de connexion FTP. Faites attention lorsque vous entrez le chemin relatif à partir de votre répertoire racine FTP vers le répertoire de Contao (par exemple html/ , public_html/ ou httpdocs/ ).

Quelques répertoires nécessitent encore des autorisations d'écriture, car PHP va y accéder directement :

assets/images

assets/images/*

system/logs

system/tmp

Utilisation du Safe Mode Hack 8 Manuel pour Contao 3.2

Les permissions (CHMOD 777) sont fixées automatiquement par l'outil d'installation et n'ont normalement pas à être ajustées manuellement. Si cela est nécessaire, veuillez, s'il vous plaît, seulement n'ajuster que les trois répertoires mentionnés ci-dessus - et cela en dépit de ce que vous pourriez avoir lu dans un tutoriel ou dans les forums de Contao !

Utilisation du Safe Mode Hack 9 Manuel pour Contao 3.2

Mise à jour manuelle

Pour mettre à jour manuellement une installation de Contao, vous pouvez soit téléverser l'archive complète de Contao sur le serveur (remplacement des fichiers) ou vous pouvez téléverser uniquement les fichiers qui ont été modifiés depuis la dernière mise à jour (synchronisation des fichiers). De toute façon, vous devriez toujours sauvegarder les fichiers et dossiers ci-dessous juste au cas où il y aurait une erreur ou lors d'un remplacement accidentel :

files/*

system/config/dcaconfig.php

system/config/initconfig.php

system/config/langconfig.php

system/config/localconfig.php

templates/*

Cela permettra de sauvegarder votre configuration locale, vos modèles personnalisés et vos fichiers.

Remplacement de fichiers

Le remplacement des fichiers d'une installation de Contao est assez simple. Il suffit de décompresser l'archive de Contao sur le serveur ou de l'extraire sur votre ordinateur et de téléverser les fichiers avec un client FTP. Puis, restaurer les fichiers que vous avez sauvegardés et enlever les éventuels fichiers inutilisés des versions antérieures de Contao.

Attention: Si vous avez installé des extensions tierces, assurez-vous de les sauvegarder et de les restaurer eux aussi, ou ne les effacer pas du tout. Sinon, vous devrez réinstaller les modules et, en fonction de l'extension, vous pourriez finir par perdre des données !

Synchronisation de fichiers

Pour synchroniser une installation de Contao, vous pouvez soit utiliser l'utilitaire Unix diff ou un logiciel FTP. Les utilitaires Unix sont généralement utilisés par les administrateurs de serveurs uniquement et, par conséquent, ils ne seront pas expliqués ici. Pour synchroniser des fichiers via FTP, ouvrez WinSCP et connectez-vous au serveur. Sauvegardez les fichiers mentionnés ci-dessus, puis accédez au répertoire de Contao et cliquez sur le bouton "Synchroniser les fichiers".

Mise à jour manuelle 10 Manuel pour Contao 3.2

Contrôlez les options attentivement et assurez-vous de choisir "Preview changes" pour que vous puissiez contrôler quels fichiers seront mis à jour. Ensuite confirmez chaque fichier dans la fenêtre d'aperçu et contrôlez spécialement les fichiers qui vont être effacés ! Cliquez sur OK pour démarrer le processus de synchronisation.

Mise à jour de la base de données

Après avoir mis à jour les fichiers de Contao, vous devez également mettre à jour la base de données. Heureusement, l'outil d'installation de Contao effectuera le gros du travail pour vous. Il suffit de l'ouvrir et de saisir votre mot de passe, puis faites défiler la page vers le bas jusqu'à la section base de données et confirmez les modifications.

Purger le cache interne

Finalement, vous devez également reconstruire le cache interne (pour les DCA et les fichiers de langue). Dans le back office, allez à "Maintenance du système" et cochez "Purger le cache interne" dans la section "Nettoyer les données". Confirmez l'action en cliquant sur "Nettoyer les données".

Vous recevrez un message dans l'en-tête demandant de reconstruire le cache interne. Cliquez sur "Construire le cache" pour mettre en cache les fichiers internes.

Mise à jour manuelle 11 Manuel pour Contao 3.2

Live Update Service

Le "Contao Live Update Service" est un service commercial proposé par iNet Robots, la compagnie du fondateur de Contao et développeur principal, Leo Feyer. Il vous permet de mettre à jour votre installation en quelques clics à partir du panneau d'administration, sans avoir à télécharger une archive de Contao ou en utilisant un logiciel FTP pour remplacer ou synchroniser des fichiers.

S'inscrire pour obtenir un ID Live Update

Le Live Update comprend les fonctionnalités suivantes:

Mise à jour et retour à une version antérieure vers n'importe quelle version de Contao Sauvegarde automatique de la base de données avant la mise à jour Validation personnalisée et achèvement de l'installation de Contao Comparaison des modèles personnalisés et des fichiers originaux

Sélection d'une version

Différences entre les modèles

Live Update Service 12 Manuel pour Contao 3.2

Résolution de problèmes

99% de tous les problèmes de mise à jour du Live Update sont causés par des permissions de fichiers erronés. Contao requiert des autorisations d'écriture pour gérer les fichiers et les dossiers, en conséquence si le Live Update ne fonctionne pas correctement, vérifiez la configuration de votre serveur et assurez-vous de mettre en place le Safe Mode Hack tel que décrit dans ce mode d'emploi !

Comment obtenir de l'aide

Si vous rencontrez des problèmes pour activer votre ID Live Update ou pour recevoir l'archive de mise à jour, veuillez s'il vous plaît contacter le support de iNet Robots. Si vous rencontrez des problèmes pour configurer le "Safe Mode Hack" ou pour utiliser Contao, choisissez s'il vous plaît une option de support sur la page de support.

Live Update Service 13 Manuel pour Contao 3.2

Déplacer une installation

Déplacer une installation de Contao à partir d'un serveur local vers un serveur en ligne n'est pas très différent de l'installation d'une nouvelle version de Contao, à l'exception que vous utilisez les fichiers de votre installation locale au lieu d'une archive de Contao et une sauvegarde SQL de votre base de données locale.

Téléverser les fichiers

Ouvrez votre logiciel FTP, connectez-vous au serveur cible et téléverser tous les fichiers de votre installation locale de Contao.

Exportation de la base de données

La façon la plus simple de créer une sauvegarde MySQL est d'utiliser l'outil d'administration de bases de données "phpMyAdmin". Si vous êtes un administrateur du serveur, vous pouvez également utiliser l'utilitaire mysqldump bien sûr. Connectez-vous à "phpMyAdmin", choisissez la base de données que vous souhaitez exporter et cliquez sur l'onglet "Exporter" dans le menu supérieur. Il est important d'ajuster les paramètres d'exportation conformément à la capture d'écran ci-dessous afin de restreindre les problèmes de compatibilité de versions de MySQL.

Importation de la base de données

Ouvrez "phpMyAdmin" sur le serveur cible et créez une nouvelle base de données pour Contao. En fonction de la

Déplacer une installation 14 Manuel pour Contao 3.2

configuration du serveur, vous devrez probablement utiliser le panneau d'administration du serveur (par exemple, "Plesk" ou "cPanel") pour créer de nouvelles bases de données. Sélectionnez la base de données vide et cliquez sur l'onglet "Importer" dans le menu supérieur. Puis télécharger la sauvegarde SQL de votre base de données locale et lancez l'importation.

Ajustement de la configuration de la base de données

Enfin, ouvrez l'outil d'installation de Contao de la nouvelle installation (le mot de passe doit être le même que pour votre installation locale) et ajustez la configuration de la base de données si nécessaire. Ensuite, allez au panneau d'administration et connectez-vous avec votre nom d'utilisateur et votre mot de passe.

Déplacer une installation 15 Manuel pour Contao 3.2

Configuration du serveur en ligne

Ce chapitre ne traite pas sur la configuration d'un serveur en termes d'installation d'Apache ou de compilation de PHP, que vous ne pouvez pas faire sur un compte d'hébergement mutualisé de toute façon. Il explique comment vérifier si les exigences du système de Contao sont remplies et comment activer PHP 5.

Configurations du système requises de Contao

Contao requiert un serveur web comme Apache ou IIS avec PHP et le support de MySQL. La version minimum de PHP est 5.3.2 et la version minimale de MySQL est 5.0. Vous avez également besoin des extensions PHP "GDlib" (redimensionnement d'image), "DOM" (fichiers XML), "SOAP" (référentiel d'extensions) et éventuellement "mbstring" (gestion des caractères multi-octets) ainsi que "mcrypt" (cryptage des données). Contao a été testé avec succès avec tous les principaux navigateurs comme (à partir de la version 2) ou (à partir de la version 8).

Contao Check

Télécharger "Contao Check" afin de savoir si votre serveur répond aux exigences du système de Contao. Le script va vérifier si vous pouvez utiliser le référentiel d'extensions ainsi que le "Live Update" et si vous devez utiliser le "Safe Mode Hack" ou non. Selon la configuration de votre système, vous pouvez mettre en place une nouvelle installation de Contao avec l'installateur web ou valider une installation existante.

Extrayez le fichier Zip, téléversez le dossier check dans votre répertoire d'installation de Contao et ouvrez-le dans un navigateur Web.

Télécharger Contao Check | Ouvrir le projet sur GitHub

Paramètres FAI spécifiques

Il y a quelques grands fournisseurs d'accès à internet qui requièrent un peu de configurations supplémentaires afin que Contao puisse fonctionner. Heureusement, ils ne sont que l'exception qui confirme la règle. Les paramètres FAI spécifiques sont décrites dans le forum de Contao. Si vous cherchez un hébergement sans tracas pour Contao, consultez la liste des hébergements partenaires de Contao.

Configuration du serveur en ligne 16 Manuel pour Contao 3.2

Panneau d'administration

Pour accéder au panneau d'administration de Contao (back office), ajouter simplement /contao à l'URL de votre site internet. Le formulaire d'identification du back office est protégé contre les attaques par force brute, donc si vous entrez un mot de passe erroné plus de trois fois de suite, votre compte sera bloqué durant 5 minutes.

Panneau d'administration 17 Manuel pour Contao 3.2

Liste d'enregistrements

Contao supporte trois vues: une simple liste ("vue en liste"), une liste qui est regroupée par sa table parente ("vue parente") et une liste hiérarchique ("vue arborescente"). Ces trois vues peuvent être utilisées pour lister des enregistrements de n'importe quelle table ou de tables liées entre elles.

Vue en liste

La "vue en liste" répertorie les enregistrements d'une table unique dans un ordre particulier. Les résultats sont généralement regroupés par leur première lettre.

Vue parente

La "vue parente" répertorie les enregistrements d'une table enfant qui sont liés à un enregistrement particulier d'une table parente. Les relations de type parent-enfant sont beaucoup utilisées dans Contao. Par exemple, pour les articles et les éléments de contenu, les archives d'actualités et les actualités ou les feuilles de style et les définitions de formatage.

Liste d'enregistrements 18 Manuel pour Contao 3.2

Vue arborescente

La "vue arborescente" liste des enregistrements et d'autres ressources tels que des fichiers et des répertoires qui sont organisés dans une structure hiérarchique. Contao prend en charge les relations hiérarchiques au sein d'une table (par exemple, la structure de site) ainsi que des tables enfants qui se rapportent aux tables hiérarchiques parentes (par exemple, les articles et les pages).

Liste d'enregistrements 19 Manuel pour Contao 3.2

Tri et filtrage des données

Contao supporte différentes façons d'affiner les résultats de sorte que vous ne lâchiez pas le fil même si une table possède plusieurs milliers de lignes. Un grand nombre d'entrées peuvent être filtrées par un ou plusieurs champs de sorte qu'ils ne montrent que les enregistrements correspondant aux critères de filtrage. La plupart des entrées offrent de plus une recherche en texte intégral qui prend même en charge les expressions régulières. Afin de réduire le temps de chargement de la page au minimum, Contao affiche seulement trente enregistrements à la fois.

Liste d'enregistrements 20 Manuel pour Contao 3.2

Édition des enregistrements

L'édition des données est l'une des fonctions centrales d'un système de gestion de contenu. Contao offre beaucoup de fonctionnalités professionnelles qui rendent le processus d'édition aussi facile et confortable que possible. Vous pouvez revenir à des versions antérieures d'un enregistrement, restaurer des enregistrements supprimés, déplacer des enregistrements via le presse-papiers et même éditer plusieurs enregistrements à la fois. La plupart de ces fonctions sont accessibles en utilisant les icônes de navigation.

Icônes de la vue en liste

La "vue en liste", étant la plus simple, ne propose que quatre actions de base : éditer, dupliquer, supprimer et afficher les détails.

Icônes de la vue parente

La "vue parente" propose deux icônes de navigation supplémentaires pour contrôler l'ordre des enregistrements. L'ordre peut être modifié par glisser-déposer. Pour ce faire, cliquez simplement sur l'icône de navigation "Glisser-déposer" et faites-le glisser vers sa nouvelle position.

Édition des enregistrements 21 Manuel pour Contao 3.2

Icônes de la vue arborescente

La "vue arborescente" nécessite des icônes supplémentaires pour gérer la structure hiérarchique. Outre la duplication d'un enregistrement unique, il prend en charge la duplication d'un enregistrement avec tous ses sous-enregistrements ainsi que la fonction "coller après" ou "coller dedans" un autre enregistrement, vous pouvez donc créer une structure imbriquée.

Édition des enregistrements 22 Manuel pour Contao 3.2

Restaurer les versions précédentes

Contao crée automatiquement les nouvelles versions d'un enregistrement chaque fois que vous le sauvegarder. Dès qu'il existe plus d'une version, un menu déroulant, qui vous permet de revenir à une version antérieure, apparaît en haut du formulaire. Choisissez simplement une version et cliquez sur le bouton "Restaurer".

L'icône située à droite du bouton "Restaurer" vous permet de voir les différences entre deux versions.

Édition des enregistrements 23 Manuel pour Contao 3.2

Édition de plusieurs enregistrements

La possibilité de modifier plusieurs enregistrements à la fois permet à Contao de clairement se démarquer de la variété des systèmes de gestion de contenu. Cliquez sur le bouton "Édition multiple" afin de changer le mode d'édition, puis sélectionnez un ou plusieurs enregistrements et choisissez les champs que vous souhaitez modifier.

Édition des enregistrements 24 Manuel pour Contao 3.2

Édition des enregistrements 25 Manuel pour Contao 3.2

Édition des enregistrements 26 Manuel pour Contao 3.2

Raccourcis clavier

Afin d'accélérer le flux de travail lorsque vous travaillez avec Contao, il existe plusieurs raccourcis associés au back office qui vous permettent d'exécuter certaines commandes. Vous pouvez par exemple déclencher le bouton "Enregistrer" à la fin d'un formulaire en cliquant avec votre souris ou en utilisant le raccourci clavier [Alt]+[s] .

Raccourcis clavier généraux

Raccourci Bouton Explication

[Alt]+[h] Accueil Aller à la page d'accueil du back office.

[Alt]+[q] Quitter Quitter la session en cours du back office (Déconnexion).

[Alt]+[t] Haut de la page Aller en haut de la page.

[Alt]+[b] Retour Retour à la page précédente.

[Alt]+[n] Nouvel enregistrement Créer un nouvel enregistrement.

[Alt]+[e] Édition multiple Passe en mode d'édition multiple.

[Alt]+[f] Aperçu du Front office Ouvrir l'aperçu du front office dans une nouvelle fenêtre du navigateur.

Raccourcis clavier en mode d'édition

Raccourci Bouton Explication

[Alt]+[s] Sauvegarder Sauvegarde le formulaire courant

Sauvegarder [Alt]+[c] Sauvegarde le formulaire courant et redirige vers la page précédente. et fermer

[Alt]+[g] Sauvegarder Sauvegarde le formulaire courant et redirige vers la page parente, par exemple, à et retour partir d'un élément de contenu vers la vue arborescente des articles.

[Alt]+[e] Sauvegarder Sauvegarde le formulaire courant et redirige vers la vue des enregistrements et éditer enfants. Par exemple, lors de la création de feuilles de style.

Sauvegarder [Alt]+[n] Sauvegarde le formulaire courant et crée un nouvel enregistrement. et nouveau

Raccourcis clavier en mode d'édition multiple

Raccourci Bouton Explication

Supprime tous les enregistrements sélectionnés en mode d'édition [Alt]+[d] Suppression multiple multiple.

Déplace tous les enregistrements sélectionnés en mode d'édition [Alt]+[x] Coupe multiple multiple.

Duplique tous les enregistrements sélectionnés en mode d'édition [Alt]+[c] Copie multiple multiple.

[Alt]+[v] Remplacement Remplace tous les enregistrements sélectionnés en mode d'édition multiple multiple.

Les raccourcis clavier ci-dessus ne fonctionnent que sous Windows sous cette forme. Les utilisateurs de Mac doivent utiliser [Ctrl]+[⌥ Opt] au lieu de la touche [Alt] avec le raccourci clavier. En outre, Firefox sur Windows fait exception à la norme : vous devez appuyer sur le raccourci clavier [Alt]+[Shift] .

Raccourcis clavier 27 Manuel pour Contao 3.2

Raccourcis clavier 28 Manuel pour Contao 3.2

Gestion des pages

Les chapitres suivants expliquent comment gérer les pages dans Contao. Depuis que Contao est un système de gestion de contenu basé sur les pages, ces dernières et la structure de site sont les éléments centraux de votre site internet et tout contenu qui n'est pas associé à une page ne pourra jamais être vu.

Gestion des pages 29 Manuel pour Contao 3.2

Composants

Comprendre comment les pages, les articles, les éléments de contenu et les modules sont liés entre eux est la clé de l'apprentissage de Contao. Comme mentionné précédemment, la structure de site est l'élément central de votre site. Les visiteurs de votre site internet demandent toujours des pages et non des articles comme dans un CMS basé sur des nœuds.

Le diagramme montre que les articles et les présentations de page sont les deux éléments les plus importantes d'une page. Alors que les articles stockent le contenu d'une page, la présentation de page définit la façon dont il est affiché sur le site. Les présentations de page de Contao sont basées sur les CSS et bien sûr elles n'utilisent pas de mise en page avec des tables. Les chapitres suivants expliquent comment créer des feuilles de style et des modules, comment les combiner dans une présentation de page et comment créer des pages qui l'utilisent.

Composants 30 Manuel pour Contao 3.2

Thèmes

Une design de site internet se compose généralement de feuilles de style, de modules front office, de présentations de page, de fichiers et de modèles que vous pouvez gérer dans le back office de Contao. Le gestionnaire de thème ne change pas cette approche du tout, il ajoute juste une option pour exporter et importer ces ressources.

Thèmes par opposition aux modèles du front office

La principale différence entre les thèmes et les modèles du front office est qu'un modèle du front office contient un exemple de site internet entièrement préconfiguré, y compris un exemple de structure de site, d'articles, d'éléments de contenu et même d'utilisateurs et de groupes d'utilisateurs. Un thème, en revanche, ne contient que le design du site internet et peut donc être importé sans risque de perdre toutes les données existantes.

Composants d'un thème

Un thème est un groupe de feuilles de style, de modules front office et de présentations de page, qui sont tous stockés dans la base de données et automatiquement reconnus par l'exportateur de thème. Vous en apprendrez plus sur ces éléments dans les chapitres suivants. Un thème inclut habituellement des images et d'autres fichiers à partir du répertoire des fichiers et des modèles personnalisés en option à partir du répertoire des modèles. Toutefois, ces ressources ne sont pas automatiquement liées avec le thème et doivent donc être ajoutées dans la configuration du thème pour y être inclues dans l'exportation.

Thèmes 31 Manuel pour Contao 3.2

Exportation et importation d'un thème

Pour exporter un thème, cliquez simplement sur le bouton d'exportation et télécharger le fichier .cto en local sur votre ordinateur. Bien que .cto est une extension de fichier propriétaire pour les thèmes de Contao, le fichier est en fait une archive ZIP qui peut être extraite avec chaque programme qui traite les fichiers .zip. Pour réimporter un thème, téléversez le fichier .cto dans votre installation de Contao, ouvrez le gestionnaire de thèmes et cliquez sur "Import de thème". Vous pouvez importer plusieurs thèmes à la fois. Une fois l'importation terminée, vous pouvez associer une ou plusieurs présentations de page du nouveau thème dans la structure de site.

Thèmes 32 Manuel pour Contao 3.2

Feuilles de style

Les sites internet accessibles doivent toujours être formatés à l'aide des CSS, c'est pourquoi Contao inclut un module "feuilles de style" qui vous permet de gérer les définitions de formatage dans le back office. Pour référencer les différents éléments de Contao, vous devez connaître leurs noms de classe. Les classes des éléments de contenu commencent par "ce_" (par exemple "ce_text") et les classes des modules avec "mod_" (par exemple "mod_search"). Si vous n'êtes pas sûr, il suffit de regarder dans le code source de la page.

Chaque feuille de style peut être limitée par un ou plusieurs types de média et/ou par une version particulière d'Internet Explorer, dans le cas où vous avez besoin de fixer un de ses nombreux bogues. Faites attention à l'ordre des définitions de formatage, car celles qui suivent, remplacent les précédentes.

/* Définir la valeur générale d'abord */ .mod_search { margin:24px; }

/* Puis la remplacer pour IE7 */ *:first-child+html .mod_search { margin:18px; }

Feuilles de style 33 Manuel pour Contao 3.2

Si l'ordre est inversé, la valeur générale l'emporterait sur la marge spécifique à Internet Explorer.

Feuilles de style 34 Manuel pour Contao 3.2

Modules

Les modules front office vous permettent d'ajouter presque n'importe quel type de fonctionnalités à votre site internet. Le cœur de Contao comprend des modules pour générer différents menus de navigation, gérer l'enregistrement et l'authentification d'un membre, rechercher sur le site, l'importation de flux RSS et bien plus encore. Pour créer un module, connectez-vous au back office et choisissez "Thèmes" -> "modules front office" dans le menu de navigation.

Module Classe CSS Description

Menu de navigation mod_navigation Génère un menu de navigation à partir de la structure de site.

Navigation mod_customnav Génère un menu personnalisé. personnalisée

Navigation "fil d'Ariane" mod_breadcrumb Génère un menu de type "fil d'Ariane".

Génère un menu de type liste déroulante à partir de la Navigation rapide mod_quicknav structure de site.

Lien rapide mod_quicklink Génère un menu de type liste déroulante.

Navigation "Livre" mod_booknav Génère un menu de type "Livre".

Pagination d'articles mod_article_nav Génère une pagination pour naviguer dans les articles.

Plan du site mod_sitemap Génère une liste de toutes les pages de la structure de site.

Formulaire de connexion mod_login Génère un formulaire de connexion.

Déconnexion - Déconnecte automatiquement un membre. automatique

Génère un formulaire permettant de modifier les données Données personnelles mod_personalData personnelles d'un membre.

Formulaire d'inscription mod_registration Crée un formulaire d'inscription.

Mot de passe perdu mod_password Crée un formulaire de demande de nouveau mot de passe.

Fermer le compte mod_closeAccount Crée un formulaire pour supprimer le compte d'un membre.

Liste d'actualités mod_newslist Ajoute une liste d'actualités à la page.

Lecteur d'actualités mod_newsreader Affiche les détails d'une actualité.

Archive d'actualités mod_newsarchive Ajoute une archive d'actualités à la page.

Menu archive mod_newsmenu Génère un menu de navigation pour une archive d'actualités. d'actualités

Calendrier mod_calendar Ajoute un calendrier dans une page.

Lecteur d'événement mod_eventreader Affiche les détails d'un événement.

Liste d'événements mod_eventlist Ajoute une liste d'événements dans une page.

Génère un menu de navigation pour parcourir la liste Menu liste d'événements mod_eventmenu d'événements.

Génère un formulaire pour s'abonner à une ou plusieurs listes S'abonner mod_subscribe de diffusion.

Génère un formulaire pour se désabonner à une ou plusieurs Se désabonner mod_unsubscribe listes de diffusion.

Liste de bulletins mod_nl_list Ajoute une liste de bulletins d'information à une page. d'information

Modules 35 Manuel pour Contao 3.2

d'information mod_nl_reader Affiche les détails d'un bulletin d'information.

Ajoute une liste de questions fréquemment posées dans la Liste de FAQ mod_faqlist page.

Lecteur de FAQ mod_faqreader Affiche la réponse à une question fréquemment posée.

Afficher la liste de FAQ et le lecteur de FAQ sur la même Page de FAQ mod_faqpage page.

Formulaire mod_form Ajoute un formulaire dans la page.

Moteur de recherche mod_search Ajoute un formulaire de recherche dans la page.

Commentaires mod_comments Gérer les commentaires ou les entrées d'un livre d'or.

Liste d'enregistrements mod_listing Lister les enregistrements d'une table de la base de données.

Animation Flash mod_flash Permet d'inclure une animation Flash dans une page.

Génère une liste d'articles contenu dans une zone Liste d'articles mod_article_list particulière.

Image aléatoire mod_random_image Ajoute une image aléatoire dans une page.

Code HTML - Permet d'inclure du code HTML personnalisé. personnalisé

Lecteur de flux RSS mod_rss_reader Ajoute un flux RSS à la page.

Contrôle d'accès

Chaque module front office peut être protégé de sorte que seuls les invités ou les membres d'un groupe en particulier puissent le voir sur le site internet.

Modules 36 Manuel pour Contao 3.2

Présentations de page

Les présentations de page déterminent l'agencement basique d'une page, par ex. le nombre de colonnes ou la largeur générale, et elle définissent quels modules de front office vont être affichés dans quelles colonnes. Elles permettent aussi d'inclure des feuilles de style, de lier la page à un flux RSS ou Atom, d'associer un ID Google Analytics et d'ajouter du code JavaScript qui pourrait être requis pour contrôler des éléments interactifs ou des plugins. Le framework CSS de Contao divise automatiquement la fenêtre du navigateur en plusieurs sections et affiche les modules qui ont été assignés à ces sections les uns à la suite des autres.

Cela implique que lorsque vous allez créer une présentation de page, vous devriez déjà avoir créé toutes les feuilles de style et les modules front office que vous voulez inclure. C'est pourquoi, il est recommandé de créer les ressources dans l'ordre suivant :

Créer les modules front office nécessaires Créer les feuilles de style nécessaires

Présentations de page 37 Manuel pour Contao 3.2

Optionnellement, créer des archives d'actualités ou des calendriers Créer une présentation de page et combiner tous les composants

Présentations de page 38 Manuel pour Contao 3.2

Types de page

Le type de page détermine si la page va afficher du contenu, rediriger vers une autre page ou définir le point de départ d'un nouveau site internet dans la structure de page. Contao supporte six types de pages différents qui sont expliqués ci- dessous.

Type de page Description

Une page simple contient des articles et des éléments de contenu. C'est le type de page par Page simple défaut.

Rediriger vers Ce type de page réoriente automatiquement les visiteurs vers une URL externe. Cela fonctionne une URL comme un lien hypertexte. externe

Rediriger vers Ce type de page réoriente automatiquement les visiteurs vers une autre page de la structure de une autre page site. du site

Racine d'un Ce type de page est le point de départ pour créer un site internet dans la structure de site. nouveau site

Si un utilisateur sans permission essaye d'accéder à une page protégée, une page d'erreur 403 Erreur 403 sera retournée. Cette page doit être ajoutée au premier niveau dans votre page racine d'un (accès interdit) nouveau site.

Erreur 404 Si un utilisateur essaye d'accéder à une page qui n'existe pas, une page d'erreur 404 sera (page non retournée. Cette page doit être ajoutée au premier niveau dans votre page racine d'un nouveau trouvée) site.

Mode multi-domaines

Contao supporte plusieurs sites internet à l'intérieur de la structure de site et redirige automatiquement les visiteurs vers une racine de site particulière en fonction du nom de domaine ou des réglages de langues. Imaginons par exemple que vous deviez créer un site d'entreprise bilingue qui utilise le nom de domaine "www.example.com" et un petit site personnel qui utilise le nom de domaine "www.personal.example.org". Vous aurez besoin de trois pages racines d'un nouveau site pour cela :

Type DNS Code de langue Langue de secours

Site internet d'entreprise en Allemand aucun de non

Site internet d'entreprise en Anglais aucun en oui

Site internet personnel www.personal.example.org de oui

Le tableau suivant montre vers quelle page un visiteur va être redirigé en fonction du nom de domaine et de la langue de son navigateur.

Domaine Langue du navigateur Cible de redirection

www.example.com Anglais Site internet d'entreprise en Anglais

www.example.com Allemand Site internet d'entreprise en Allemand

www.example.com Espagnol Site internet d'entreprise en Anglais

www.personal.example.org Non pertinent Site internet personnel

Notez que si nous n'utilisions pas l'option "langue de secours", le site internet personnel ne serait disponible que pour les utilisateurs dont la langue du navigateur est l'Allemand !

Types de page 39 Manuel pour Contao 3.2

Droits d'accès

Les droits d'accès déterminent ce que les utilisateurs du back office sont autorisés à faire avec une page et ses articles. Ils n'ont rien à voir avec les pages protégées qui ne sont accessibles que par certains utilisateurs front office ! Similaire au système de permissions des fichiers Unix, il existe trois niveaux d'autorisation :

Accès en tant que propriétaire d'une page Accès en tant que membre d'un groupe propriétaire de la page Accès en tant qu'utilisateur sans privilège

Chaque niveau peut avoir différentes permissions. Par défaut, le propriétaire de la page est autorisé à éditer la page elle- même ainsi que les articles de la page, tandis qu'un utilisateur d'un groupe qui possède une page est autorisé à éditer les articles seulement. Les utilisateurs sans privilège n'ont aucun droits en écriture.

Types de page 40 Manuel pour Contao 3.2

Gestion du contenu

Les chapitres suivants expliquent comment gérer le contenu dans Contao. Le cœur de Contao supporte de nombreux types de contenu comme des articles, des actualités, des événements, des bulletins d'information, des formulaires ou des définitions. D'autres types de contenu comme des bannières, des billets, des produits ou des recommandations sont disponibles dans le référentiel d'extensions. Pour créer du contenu, se connecter au back office et choisir un des modules dans la section "Contenu" du menu de navigation.

Gestion du contenu 41 Manuel pour Contao 3.2

Articles

Les articles sont des conteneurs pour les éléments de contenu. Regrouper les éléments de contenu par article rend le travail plus facile pour déplacer, publier, copier, éditer ou exporter ces éléments ensemble au lieu d'un par un. Chaque article est associé à une page particulière et à une section particulière de cette page, il a ainsi une position fixe dans la structure de site et sur le site internet. Contao peut optionnellement n'afficher qu'une accroche d'article avec un lien "En savoir plus...".

Éléments de contenu

Les éléments de contenu sont un moyen simple et intuitif pour créer du contenu. Au lieu d'utiliser un éditeur de texte riche, Contao fournit un élément distinct pour chaque type de contenu comme les textes, les listes, les tableaux, les liens hypertextes, les images ou les téléchargements. Voici un aperçu des éléments de contenu de base de Contao :

Nom Classe CSS Description

Titre ce_headline Génère un titre (h1 - h6).

Génère un texte enrichi qui peut être formaté à l'aide de Texte ce_text TinyMCE.

HTML - Vous permet d'ajouter du code HTML personnalisé.

Liste ce_list Génère une liste ordonné ou non ordonnée.

Tableau ce_table Génère un tableau qui peut-être trié.

Ajoute la coloration syntaxique sur des extraits de code et Code ce_code les imprime sur l'écran.

Accordéon (élément seul) ce_accordion Génère un seul élément accordéon (avec MooTools).

Accordéon (début de ce_accordionStart Génère l'ouverture du conteneur de l'accordéon. l'enveloppe)

Accordéon (fin de l'enveloppe) - Génère la fermeture du conteneur de l'accordéon.

Slider de contenu (début de ce_sliderStart Génère l'ouverture du conteneur du slider. l'enveloppe)

Slider de contenu (fin de - Génère la fermeture du conteneur du slider. l'enveloppe)

Lien hypertexte ce_hyperlink Génère un lien hypertexte vers un autre site internet.

Lien vers le haut de page ce_toplink Génère un lien pour retourner en haut de page.

Image ce_image Génère une image.

Galerie d'images ce_gallery Génère une galerie d'images avec effet lightbox.

Vidéo/audio ce_player Génère un lecteur vidéo ou audio.

YouTube ce_youtube Ajoute une vidéo YouTube.

Téléchargement ce_download Génère un lien hypertexte vers un fichier à télécharger.

Génère des liens hypertextes multiples vers des fichiers à Téléchargements ce_downloads télécharger.

Contenu d'un article - Insère un autre article.

Élément de contenu (classe parente) Insère un autre élément de contenu.

Formulaire ce_form Insère un formulaire.

Articles 42 Manuel pour Contao 3.2

Module (classe parente) Insère un module front office.

Accroche d'un article ce_teaser Affiche l'accroche d'un article.

Ajouter un formulaire de saisie de commentaires à la Commentaires ce_comments page.

Contrôle d'accès

Chaque élément de contenu peut être protégé de sorte que seuls les invités ou les membres d'un groupe en particulier puissent le voir sur le site internet.

Contenu Flash

Le contenu Flash est un type particulier de contenu qui n'est pas affiché dans un article sur le site internet mais chargé dans un film Flash dynamique en utilisant "loadVars()". Pour permettre la communication entre Contao et Flash, vous devez ajouter la fonction suivante au frame principal de votre film :

TextField.prototype._loadArticle = function(flashID) { tf = this;

// Autoriser le mode HTML et supprimer le contenu tf.html = true; tf.htmlText = "";

// Instancier un nouvel objet LoadVars lv = new LoadVars(); lv["flashID"] = flashID; lv.sendAndLoad(URL + "flash.php", lv, "POST");

lv.onLoad = function(success) { if (success) { tf.htmlText = lv["content"]; } } }

// Charger le contenu Flash "myArticle" dans le champ texte "myTextBox" myTextBox._loadArticle("myArticle");

Importer une feuille de style

Articles 43 Manuel pour Contao 3.2

Le code ActionScript suivant vous permet d'importer une feuille de style pour formater un champ de texte dynamique :

TextField.prototype._addCSS = function(style_sheet) { tf= this; tf.styleSheet = null;

// Instancier un nouvel objet StyleSheet st = new TextField.StyleSheet(); st.load(URL + style_sheet);

st.onLoad = function(success) { if (success) { tf.styleSheet = st; } } }

// Ajouter la feuille de style "basic." au champ texte "myTextBox" myTextBox._addCSS("basic.css");

Notez que Flash ne prend en charge qu'un petit sous-ensemble de balises HTML, de sorte que certains de vos styles puissent ne pas s'afficher correctement.

Articles 44 Manuel pour Contao 3.2

Actualités

L'extension actualités/blog vous permet de gérer des actualités ou des billets d'un blog et de les afficher dans le front office. Contrairement aux articles qui sont associés à une page en particulier, les actualités sont organisées dans des archives d'actualités, qui vous permet de facilement les regrouper, de les catégoriser ou de les exporter.

Archives d'actualités

Les archives d'actualité sont utilisées pour regrouper et/ou catégoriser les actualités. Chaque archive peut se rapporter à une certaine langue ou un sujet particulier.

Modules front office

Les modules front office sont utilisés pour afficher les actualités sur le site internet. Ils peuvent être configurés avec le module "Modules" dans le back office et doivent être ajoutés à un article ou à une présentation de page pour pouvoir apparaître sur le site internet. L'extension actualités/blog comprend quatre modules front office :

Module Classe CSS Description

Liste d'actualités mod_newslist Ajoute une liste d'actualités à la page.

Lecteur d'actualités mod_newsreader Affiche les détails d'une actualité.

Archive d'actualités mod_newsarchive Ajoute une archive d'actualités à la page.

Menu archive Génère un menu de navigation pour une archive mod_newsarchiveMenu d'actualités d'actualités.

Permaliens

Chaque actualité a une URL unique (permalien) qui peut être utilisée pour la référencer :

http://www.example.com/news/items/james-wilson-returns.html

L'URL ci-dessus sollicite l'actualité "james-Wilson-retours" via la page "actualités". Rappelez-vous que Contao est un CMS basé sur les pages, donc si la page "actualités" n'existait pas ou si elle ne comprenait pas le module lecteur d'actualités, alors l'actualité ne serait pas affichée.

Actualités 45 Manuel pour Contao 3.2

Événements

L'extension calendrier vous permet de gérer des événements et de les afficher dans un calendrier ou une liste d'événements sur le site internet. Contrairement aux articles qui sont associés à une page en particulier, les événements sont organisés dans des calendriers, qui vous permet de les regrouper, de les classer ou de les exporter.

Calendriers

Les calendriers sont utilisés pour regrouper et/ou catégoriser des événements. Chaque calendrier peut se rapporter à une certaine langue ou un sujet particulier.

Modules front office

Les modules front office sont utilisés pour afficher des événements sur le site internet. Ils peuvent être configurés avec le module "Modules" dans le back office et doivent être ajoutés à un article ou à une présentation de page pour pouvoir apparaître sur le site internet. L'extension calendrier comprend quatre modules front office :

Module Classe CSS Description

Calendrier mod_calendar Ajoute un calendrier dans une page.

Lecteur d'événements mod_eventreader Affiche les détails d'un événement.

Liste d'événements mod_eventlist Ajoute une liste d'événements dans une page.

Menu liste Génère un menu de navigation pour parcourir la liste mod_eventmenu d'événements d'événements.

Permaliens

Chaque événement a une URL unique (permalien) qui peut être utilisée pour le référencer :

http://www.example.com/event-reader/events/final-exams.html

L'URL ci-dessus sollicite l'événement "final-exams" via la page "events". Rappelez-vous que Contao est un CMS basé sur les pages, donc si la page "events" n'existait pas ou si elle n'incluait pas le module lecteur d'événements, alors l'événement ne serait pas affiché.

Événements 46 Manuel pour Contao 3.2

Flux RSS/Atom

Cette fonctionnalité peut être utilisée pour les archives d'actualités et les calendriers. Voici un exemple avec la liste des calendriers.

Paramètres

Un ou plusieurs calendriers peuvent être regroupés et exportés en tant que flux RSS ou Atom. Il en va de même pour les archives d'actualités. Dans un même temps, vous pouvez choisir d'exporter uniquement les accroches ou les articles complets de chaque événement ou actualité.

Flux RSS/Atom 47 Manuel pour Contao 3.2

Fichiers XML

Les fichiers XML sont générés automatiquement dans le répertoire share de votre installation de Contao. Dans cet exemple : share/evenements.xml .

Flux RSS/Atom 48 Manuel pour Contao 3.2

Bulletins d'information

L'extension bulletins d'information vous permet de gérer et d'envoyer des bulletins d'information et optionnellement de les afficher sur le site internet. Contrairement aux articles qui sont associés à une page particulière, les bulletins d'information sont organisés en listes de diffusion, ce qui vous permet de facilement les regrouper ou de les catégoriser.

Destinataires

Les inscriptions à un bulletin d'information sont traitées par les modules front office créés à cet effet, donc vous n'avez pas à gérer les destinataires manuellement. Pour des raisons de protection des données privées, Contao utilise l'inscription par Double Opt In et ne stocke que l'adresse e-mail de l'abonné.

Au cas où vous auriez déjà une liste de destinataires, vous pouvez l'importer dans Contao à partir d'un fichier CSV.

Bulletins d'information personnalisés

Dans la mesure où vous envoyez des bulletins d'information à des membres inscrits, vous pouvez personnaliser ces bulletins avec des "Simple Tokens". Les "Simple Tokens" fonctionnent d'une manière similaire à celle des balises d'insertion et peuvent être utilisés aussi bien dans la version HTML que dans la version texte de votre bulletin d'information.

Cher ##firstname## ##lastname##,

Veuillez mettre à jour vos données personnelles :

Rue: ##street## Code postal: ##postal## Ville: ##city## Téléphone: ##phone## E-mail: ##email##

L'administrateur

Cependant, contrairement aux balises d'insertion, les "Simple Tokens" ne permettent pas seulement d'ajouter des données de la table tl_member , mais aussi de faire des déclarations if-else simples, par ex. de spécifier une salutation :

{if gender=="male"}

Bulletins d'information 49 Manuel pour Contao 3.2

Monsieur ##lastname##, {elseif gender=="female"} Madame ##lastname##, {else} Madame, Monsieur, {endif}

[contenu du bulletin]

{if phone==""} Veuillez s'il vous plaît mettre à jour vos informations de contact et entrer votre numéro de téléphone. {endif}

L'administrateur

Envoyer des bulletins d'information

En particulier sur les hébergements mutualisés, il y a des limites concernant le temps d'exécution d'un script et/ou le nombre d'e-mails qui peuvent être envoyés par minute. Contao essaie de contourner ces deux problèmes en divisant le processus d'envoi en plusieurs cycles pour éviter le dépassement du temps d'exécution du script et en ajoutant une pause entre chaque cycle pour contrôler le nombre d'e-mails par minute.

Modules front office

Les modules front office sont utilisés pour gérer les inscriptions aux bulletins d'information et optionnellement les afficher sur le site internet. Ils peuvent être configurés avec le module "Modules" dans le back office et doivent être ajoutés à un article ou à une présentation de page pour être affichés sur le site internet.

Bulletins d'information 50 Manuel pour Contao 3.2

Module Classe CSS Description

Génère un formulaire pour s'abonner à une ou plusieurs listes S'abonner mod_subscribe de diffusion.

Génère un formulaire pour se désabonner à une ou plusieurs Se désabonner mod_unsubscribe listes de diffusion.

Liste de bulletins mod_nl_list Ajoute une liste de bulletins d'information à une page. d'information

Lecteur de bulletins mod_nl_reader Affiche les détails d'un bulletin d'information. d'information

Permaliens

Chaque bulletin d'information a une URL unique (permalien) qui peut être utilisée pour le référencer :

http://www.example.com/newsletters/items/james-wilson-returns.html

L'URL ci-dessus sollicite le bulletin d'information "james-wilson-returns" via la page "newsletters". Rappelez-vous que Contao est un CMS basé sur les pages, donc si la page "newsletters" n'existait pas ou si elle n'incluait pas le module lecteur de bulletins d'information, alors le bulletin d'information ne serait pas affiché.

Bulletins d'information 51 Manuel pour Contao 3.2

Formulaires

Le générateur de formulaire intégré peut être utilisé pour créer des formulaires interactifs qui sont envoyées via e-mail ou stockés dans la base de données de Contao. Les fichiers téléversés peuvent être envoyés en tant que pièces jointes par e- mail ou stockés dans le répertoire des fichiers de Contao. Le générateur de formulaire prend en charge quatre formats de données différents :

Format Description

Raw Les données du formulaire sont envoyées comme du simple texte avec une nouvelle ligne pour chaque data champ.

XML Les données du formulaire sont envoyées en pièce jointe sous la forme d'un fichier XML. file

CSV Les données du formulaire sont envoyées en pièce jointe sous la forme d'un fichier CSV. file

Tous les champs sont ignorés à part email, subject, message et cc (copie carbone) et les données sont E-mail envoyées comme si l'e-mail avait été envoyé depuis un client de messagerie. Les envois de fichiers sont autorisés.

Les champs du formulaire

Semblable aux éléments de contenu, Contao propose un élément séparé pour chaque type de champ de formulaire tels que les champs de textes, les champs de mots de passe, les menus déroulants, les téléchargements de fichiers, les champs cachés ou boutons de soumission. Voici un aperçu des champs disponibles de Contao :

Champ Classe CSS Description

Titre headline Champ personnalisé pour insérer un titre de section.

Explication explanation Champ personnalisé pour insérer un texte d'explication.

Code HTML - Champ personnalisé pour insérer du code HTML.

Un conteneur pour les champs avec une légende en option (uniquement Fieldset - disponible pour les formulaires sans tableau).

Champ texte text Champ d'une ligne pour la saisie d'un texte court ou moyen.

Champ mot Champ d'une ligne pour la saisie d'un mot de passe. Contao ajoute password de passe automatiquement un champ de confirmation.

Zone de textarea Champ comportant plusieurs lignes pour la saisie d'un texte moyen ou long. texte

Liste select/multiselect Liste déroulante pour la sélection d'un ou plusieurs choix. déroulante

Bouton radio radio Liste de plusieurs options dont une seule peut être sélectionnée.

Case à checkbox Liste de plusieurs options dont chacune peut être sélectionnée. cocher

Envoi de upload Champ d'une ligne pour l'envoi d'un fichier local vers le serveur. fichier

Champ - Champ d'une ligne non visible dans le formulaire. caché

Question de Question simple d'arithmétique pour vérifier que le formulaire est bien captcha sécurité soumis par un individu (CAPTCHA).

Bouton submit Bouton d'envoi du formulaire.

Formulaires 52 Manuel pour Contao 3.2

d'envoi submit Bouton d'envoi du formulaire.

Module front office

Le module front office est utilisé pour afficher des formulaires sur le site internet. Il peut être configuré avec le module "Modules" dans le back office et doit être ajouté à un article ou à une présentation de page pour pouvoir apparaître sur le site internet. L'extension générateur de formulaire comprend un module front office :

Module Classe CSS Description

Formulaire mod_form Ajoute un formulaire dans la page.

Élément de contenu

L'élément de contenu est utilisé pour afficher des formulaires sur le site internet. Il peut être configuré avec l'élément de contenu "Formulaire" dans le back office et doit être ajouté à un article pour pouvoir apparaître sur le site internet. L'extension générateur de formulaire comprend un élément de contenu :

Élément de contenu Classe CSS Description

Formulaire ce_form Insère un formulaire.

Formulaires 53 Manuel pour Contao 3.2

Commentaires

Les commentaires sont une autre forme de contenu que vous pouvez gérer à partir du back office. Les commentaires doivent être activés dans les préférences des calendriers et des archives d'actualités.

Module front office

Le module front office est utilisé pour afficher des commentaires sur le site internet. Il peut être configuré avec le module "Modules" dans le back office et doit être ajouté à un article ou à une présentation de page pour pouvoir apparaître sur le site internet. L'extension commentaires comprend un module front office :

Module Classe CSS Description

Commentaires mod_comments Gérer les commentaires ou les entrées d'un livre d'or.

Élément de contenu

L'élément de contenu est utilisé pour afficher des commentaires sur le site internet. Il peut être configuré avec l'élément de contenu "Commentaires" dans le back office et doit être ajouté à un article pour pouvoir apparaître sur le site internet. L'extension commentaires comprend un élément de contenu :

Élément de contenu Classe CSS Description

Commentaires ce_comments Ajouter un formulaire de saisie de commentaires à la page.

BBCode

Vous pouvez permettre aux utilisateurs du front office d'utiliser le langage de balisage BBCode.

Contao prend en charge les balises suivantes :

BBCode Définition

[b][/b] Remplace la balise avec un texte en gras.

[i][/i] Remplace la balise avec un texte en italique.

[u][/u] Remplace la balise avec un texte souligné.

[img][/img] Remplace la balise avec une image (Ajouter une URL entre les balises).

[code][/code] Remplace la balise avec un texte à espacement fixe.

[color=#ff0000][/color] Remplace la balise avec un texte en couleur.

[quote][/quote] Remplace la balise avec un texte cité.

Remplace la balise avec un texte cité et le nom de l'auteur (par exemple, John a [quote=John]Bonjour[/quote] écrit: Bonjour).

[url][/url] Remplace la balise avec un lien.

[url=http://][/url] Remplace la balise avec un lien (insérer l'URL en tant que paramètre)

[email][/email] Remplace la balise avec un lien mailto.

[[email protected]] Remplace la balise avec un lien mailto (insérer l'adresse e-mail en tant que [/email] paramètre).

Commentaires 54 Manuel pour Contao 3.2

Modèles

Un modèle est principalement composé de codes HTML et PHP. Il est utilisé pour structurer une partie du contenu d'un module ou d'un élément de contenu, etc. Par exemple, le modèle news_full. affiche le contenu complet d'une actualité alors que le modèle news_short.html5 affiche seulement une partie de ce contenu.

Les modèles se trouvent dans leurs propres modules. Par exemple, news_full.html5 se trouve sous system/modules/news/templates/news .

Si vous modifiez ce fichier directement dans ce dossier, il sera remplacé la prochaine fois que vous mettrez à jour Contao et vous perdrez toutes vos modifications. Pour éviter cela, Contao vous permet de modifier les modèles directement à partir du back office. Dans ce cas, le fichier est dupliqué et vos modifications seront conservées lors de chaque mise à jour.

Créez un nouveau dossier et ajoutez-y un ou plusieurs modèles que vous souhaitez modifier. Par la suite, n'oubliez pas de joindre le dossier au thème comme expliqué dans le paragraphe Composants d'un thème.

Un modèle peut être une partie de la structure d'un module, d'un élément de contenu, d'un formulaire, etc. et c'est pourquoi ils sont préfixés. Ils peuvent être facilement groupés, classés et reconnus. Par exemple : le préfixe j_ signifie "jQuery" et nl_ signifie "newsletter".

Modèles 55 Manuel pour Contao 3.2

Balises d'insertion

Les balises d'insertion sont des jokers qui sont remplacés par du contenu dynamique quand une page est affichée à l'écran. Elles vous permettent, par exemple, d'afficher la date courante, l'adresse d'un membre en fonction de son nom ou bien d'inclure un fichier. Les balises d'insertion peuvent être utilisées presque partout dans Contao, même dans les pages en cache.

Les éléments de lien

Les balises d'insertion suivantes vous permettent de faire un lien vers une autre page ou vers un article en utilisant son ID ou son alias.

Balise d'insertion Description

{{link::*}} Cette balise sera remplacée par un lien vers une page interne (remplacez * par un ID ou un alias de page).

Cette balise sera remplacée par un lien qui pointe vers la dernière page visitée. Elle peut {{link::back}} aussi être utilisée comme {{link_open::back}} , {{link_url::back}} ou {{link_title::back}} (voir ci-dessous).

{{link::login}} Cette balise sera remplacée par un lien vers la page de connexion du membre actuellement connecté (s'il y en a un).

{{link_open::*}} Cette balise sera remplacée par la balise d'ouverture d'un lien vers une page interne : {{link_open::12}}Cliquez ici{{link_close}} .

Cliquez ici .

Cliquez ici .

{{link_close}} Cette balise sera remplacée par la balise de fermeture d'un lien vers une page interne : {{link_open::12}}Cliquez ici{{link_close}} .

{{article::*}} Cette balise sera remplacée par un lien vers un article (remplacez * par un ID ou un alias d'article).

{{article_open::*}} Cette balise sera remplacé par la balise d'ouverture du lien vers un article : {{article_open::12}}Cliquez ici{{link_close}} .

Cliquez {{article_url::*}} Cette balise sera remplacée par l'URL d'un article : ici .

Cliquez ici .

{{news::*}} Cette balise sera remplacée par un lien vers une actualité (remplacez * par un ID ou un alias d'actualité).

{{news_open::*}} Cette balise sera remplacé par la balise d'ouverture du lien vers une actualité : {{news_open::12}}Cliquez ici{{link_close}} .

Cliquez {{news_url::*}} Cette balise sera remplacée par l'URL d'une actualité : ici .

Cliquez ici .

{{news_feed::*}} Cette balise sera remplacée par l'URL d'un flux d'un événement (remplacez * par un ID du flux d'un événement).

{{event::*}} Cette balise sera remplacée par un lien vers un événement (remplacez * par un ID ou un alias d'événement).

Balises d'insertion 56 Manuel pour Contao 3.2

{{event_open::*}} Cette balise sera remplacé par la balise d'ouverture du lien vers un événement : {{event_open::12}}Cliquez ici{{link_close}} .

Cliquez ici .

Cliquez ici .

{{calendar_feed::*}} Cette balise sera remplacée par l'URL d'un flux d'un calendrier (remplacez * par un ID du flux d'un calendrier).

{{faq::*}} Cette balise sera remplacée par un lien vers une question fréquemment posée (remplacez * par un ID ou un alias de FAQ).

{{faq_open::*}} Cette balise sera remplacé par la balise d'ouverture du lien d'une question : {{faq_open::12}}Cliquez ici{{link_close}} .

Cliquez {{faq_url::*}} Cette balise sera remplacée par l'URL d'une question : ici .

Cliquez ici .

Propriétés de l'utilisateur

Les balises d'insertion suivantes vous permettent d'afficher n'importe quelle propriété du membre actuellement connecté.

Balise d'insertion Description

{{user::firstname}} Cette balise sera remplacée par le prénom du membre actuellement connecté.

{{user::lastname}} Cette balise sera remplacée par le nom de famille du membre actuellement connecté.

{{user::company}} Cette balise sera remplacée par le nom de la société du membre actuellement connecté.

{{user::phone}} Cette balise sera remplacée par le n° de téléphone du membre actuellement connecté.

{{user::mobile}} Cette balise sera remplacée par le n° de téléphone portable du membre actuellement connecté.

{{user::fax}} Cette balise sera remplacée par le n° de fax du membre actuellement connecté.

{{user::email}} Cette balise sera remplacée par l'adresse e-mail du membre actuellement connecté.

{{user::website}} Cette balise sera remplacée par l'adresse du site internet du membre actuellement connecté.

{{user::street}} Cette balise sera remplacée par le nom de la rue du membre actuellement connecté.

{{user::postal}} Cette balise sera remplacée par le code postal du membre actuellement connecté.

{{user::city}} Cette balise sera remplacée par le nom de la ville du membre actuellement connecté.

{{user::country}} Sera remplacée par le nom du pays du membre actuellement connecté.

{{user::username}} Cette balise sera remplacée par le nom d'utilisateur du membre actuellement connecté.

Propriétés de page

Les balises d'insertion suivantes vous permettent d'afficher n'importe quelle propriété de la page courante.

Balise d'insertion Description

{{page::id}} Cette balise sera remplacée par l'ID de la page courante.

{{page::alias}} Cette balise sera remplacée par l'alias de la page courante.

{{page::title}} Cette balise sera remplacée par le nom de la page courante.

Balises d'insertion 57 Manuel pour Contao 3.2

{{page::pageTitle}} Cette balise sera remplacée par le titre de la page courante.

{{page::language}} Cette balise sera remplacée par la langue de la page courante.

{{page::parentAlias}} Cette balise sera remplacée par l'alias de la page parente.

{{page::parentTitle}} Cette balise sera remplacée par le nom de la page parente.

{{page::parentPageTitle}} Cette balise sera remplacée par le titre de la page parente.

{{page::mainAlias}} Cette balise sera remplacée par l'alias de la page parente principale.

{{page::mainTitle}} Cette balise sera remplacée par le nom de la page parente principale.

{{page::mainPageTitle}} Cette balise sera remplacée par le titre de la page parente principale.

{{page::rootTitle}} Cette balise sera remplacée par le nom du site internet.

{{page::rootPageTitle}} Cette balise sera remplacée par le titre du site internet.

Variables d'environnement

Les balises d'insertion suivantes vous permettent d'afficher les variables d'environnement comme le nom de la page ou la chaîne de requête.

Balise d'insertion Description

{{env::host}} Cette balise sera remplacée par le nom d'hôte actuel.

{{env::url}} Cette balise sera remplacée par le nom d'hôte et le protocole.

{{env::path}} Cette balise sera remplacée par la base de l'URL actuelle incluant le chemin vers le dossier Contao.

{{env::request}} Cette balise sera remplacée par la chaîne de requête actuelle.

{{env::ip}} Cette balise sera remplacée par l'adresse IP du visiteur actuel.

{{env::referer}} Cette balise sera remplacée par l'URL de la dernière page visitée.

{{env::files_url}} Cette balise sera remplacée par l'URL statique du répertoire files.

{{env::assets_url}} Cette balise sera remplacée par l'URL statique du répertoire assets.

Éléments inclus

Les balises d'insertion suivantes vous permettent d'inclure différentes ressources comme des articles, des modules ou des fichiers qui se trouvent dans le répertoire "templates".

Balise d'insertion Description

{{insert_article::*}} Cette balise sera remplacée par l'article référencé (remplacez * par l'ID ou l'alias de l'article).

{{insert_content::*}} Cette balise sera remplacée par l'élément de contenu référencé (remplacez * par l'ID de l'élément).

{{insert_module::*}} Cette balise sera remplacée par le module référencé (remplacez * par l'ID du module).

{{insert_form::*}} Cette balise sera remplacée par le formulaire référencé (remplacez * par l'ID du formulaire).

{{article_teaser::*}} Cette balise sera remplacée par une accroche d'article (remplacez * par l'ID de l'article).

{{news_teaser::*}} Cette balise sera remplacée par une accroche d'actualité (remplacez * par l'ID de l'actualité).

Balises d'insertion 58 Manuel pour Contao 3.2

{{event_teaser::*}} Cette balise sera remplacée par une accroche d'évènement (remplacez * par l'ID de l'évènement).

Cette balise sera remplacée par le contenu d'un fichier se trouvant dans le dossier "templates" (remplacez * par le nom du fichier). Vous pouvez aussi fournir des arguments {{file::*}} : {{file::file.php?arg1=val&arg2=val}} . Vous pouvez également récupérer le chemin d'un fichier à partir de la base de données avec son UUID : {{file::6939a448-9b30-11e4-bcba- 079af1e9baea}} .

Divers

Les balises d'insertion suivantes vous permettent d'effectuer différentes tâches comme ajouter la date courante ou ajouter des images lightbox.

Balise d'insertion Description

{{date}} Cette balise sera remplacée par la date courante dans le format de date global.

{{date::*}} Cette balise sera remplacée par la date courante dans un format de date personnalisé.

{{last_update}} Cette balise sera remplacée par la date de la dernière mise à jour dans le format de date global.

{{last_update::*}} Cette balise sera remplacée par la date de la dernière mise à jour dans un format de date personnalisé.

{{email::*}} Cette balise sera remplacée un lien cliquable et encodé vers une adresse e-mail.

{{email_open::*}} Cette balise sera remplacée par un lien cliquable et encodé vers une adresse e-mail. Toutefois, la balise de fermeture ne sera pas ajoutée.

{{email_url::*}} Cette balise sera remplacée par l'adresse e-mail encodée seulement.

Cette balise peut être utilisée pour marquer les mots étrangers à l'intérieur d'un texte : {{lang::*}} {{lang::en}}Goodbye{{lang}} sera remplacé par Goodbye et ajoute l'attribut xml:lang="en" si le doctype est XHTML.

{{abbr::World Wide Web}}WWW {{abbr}} {{abbr::*}} Marque les abréviations dans un texte : sera remplacé par WWW .

Marque les acronymes dans un texte : {{acronym::Multipurpose Internet Mail {{acronym::*}} Extensions}}MIME{{acronym}} sera remplacé par < acronym title="Multipurpose Internet Mail Extensions">MIME .

{{ua::browser}} {{ua::*}} Propriétés de sortie de l'agent utilisateur : . Elle sera, par exemple, remplacée par "chrome".

Cette balise sera complètement supprimée si la langue de la page ne correspond pas à la {{iflng::*}} langue de la balise. Vous pouvez l'utiliser pour définir des labels spécifiques à une langue : {{iflng::en}}Your name{{iflng}}{{iflng::de}}Ihr Name{{iflng}} .

Cette balise sera complètement supprimée si la langue de la page correspond à la langue de {{ifnlng::*}} la balise. Vous pouvez l'utiliser pour définir des labels spécifiques à une langue : {{ifnlng::de}}Your name{{ifnlng}}{{iflng::de}}Ihr Name{{iflng}} .

Cette balise sera remplacée par une vignette d'image (remplacer * avec l'ID de base de données, UUID ou un chemin de fichier système) : {{image::58ca4a90-2d30-11e4-8c21- 0800200c9a66?width=200&height=150}} . width: Largeur de la vignette, {{image::*}} height: Hauteur de la vignette, alt: Texte alternatif, class: Classe CSS, rel: Attribut rel (par ex. "lightbox"), mode: Mode ("proportional", "crop" ou "box").

Cette balise sera remplacée par un libellé traduit. Le premier paramètre est un nom de fichier CNT LNG {{label::*}} de langue ou un acronyme tels que (pays) ou (langues). Exemples: {{label::CNT:au}} affiche "Australie" et {{label::tl_article:title:0}} affiche "Titre". Notez que seul le premier deux-points est doublé.

Balises d'insertion 59 Manuel pour Contao 3.2

{{version}} Cette balise sera remplacée par la version actuelle de Contao (par exemple 3.2.7).

{{request_token}} Cette balise sera remplacée par la demande de jeton de la session en cours.

{{toggle_view}} Ajoute le lien qui vous permet de basculer entre le modèle pour mobile et celui d'un ordinateur de bureau.

{{br}} Cette balise sera remplacée par la balise HTML
(saut de ligne).

Drapeaux des balises d'insertion

En utilisant des drapeaux, les balises d'insertion peuvent être traitées de manière plus approfondie. Par exemple, la valeur peut être transmise aux méthodes PHP spécifiques. Plusieurs drapeaux peuvent être appliqués :

{{ua::browser|uncached}} {{page::title|decodeEntities|strtoupper}}

Drapeaux disponibles :

Drapeau Description Plus d'information

uncached Ne pas remplacer une balise d'insertion lorsque la page est mise en cache

refresh Ne pas mettre en cache la balise d'insertion, même si elle est utilisée plusieurs fois sur la même page

addslashes Ajoute des barres obliques inversées dans une chaîne Fonction PHP

stripslashes Supprime les barres obliques inversées d'une chaîne Fonction PHP

standardize Normalise la sortie (par exemple pour un alias de page ou une classe CSS)

ampersand Convertit les esperluettes en entités de caractère HTML

specialchars Convertit les caractères spéciaux en entités de caractère HTML

Insère des retours à la ligne HTML à chaque nouvelle ligne nl2br Fonction PHP dans une chaîne

nl2br nl2br_pre Identique à , mais conserve les retours à la ligne dans la balise

 

strtolower Renvoie une chaîne en minuscules Fonction PHP

utf8_strtolower Conversion Unicode en minuscules

strtoupper Renvoie une chaîne en majuscules Fonction PHP

utf8_strtoupper Conversion Unicode en majuscules

ucfirst Met le premier caractère d'une chaîne en majuscule Fonction PHP

lcfirst Met le premier caractère d'une chaîne en minuscule Fonction PHP

Met en majuscule la première lettre de tous les mots dans ucwords Fonction PHP une chaîne

trim Supprime les espaces en début et fin de chaîne Fonction PHP

rtrim Supprime les espaces de fin de chaîne Fonction PHP

ltrim Supprime les espaces de début de chaîne Fonction PHP

utf8_romanize Romanise la sortie

Balises d'insertion 60 Manuel pour Contao 3.2

strrev Inverse une chaîne Fonction PHP

encodeEmail Encode les adresses e-mail dans la sortie Voir String::encodeEmail

decodeEntities Décode les entités de caractère HTML dans la sortie Voir String::decodeEntities()

number_format Formate un numéro (sans décimale) Voir System::getFormattedNumber()

currency_format Formate une devise (deux décimales) Voir System::getFormattedNumber()

readable_size Convertit des tailles de fichiers dans un format lisible par un Voir humain System::getReadableSize()

Balises d'insertion 61 Manuel pour Contao 3.2

Administration du système

Les chapitres suivants expliquent comment administrer Contao. Outre l'installation et la mise à jour de l'application, un administrateur est responsable de la création des utilisateurs et des groupes d'utilisateurs, de gérer les modules additionnels et de la maintenance du système.

Administration du système 62 Manuel pour Contao 3.2

Utilisateurs et groupes d'utilisateurs

Contao fait une distinction entre les utilisateurs du back office ("utilisateurs"), qui peuvent se connecter au panneau d'administration, et les utilisateurs front office ("membres"), qui peuvent se connecter au site internet. Contrairement aux administrateurs, qui ont accès à toutes les pages et à tous les éléments par défaut ("allow all"), les utilisateurs ne peuvent pas accéder à une ressource qui n'a pas été explicitement autorisée dans leur profil ou dans le profil de l'un des groupes d'utilisateurs auxquels ils appartiennent ("deny all").

Utilisateurs

Chaque utilisateur peut être associé à plusieurs groupes d'utilisateurs et hérite automatiquement de leurs autorisations. Toutes les autorisations sont cumulatives, ce qui signifie que l'utilisateur hérite de la somme des permissions de tous les groupes auxquels il appartient. Si le groupe A accorde un certain droit, vous ne pouvez pas la révoquer dans le groupe B.

Pages autorisées

L'option "Pages autorisées" permet de définir quelles pages de la structure de site, l'utilisateur est autorisé à voir. La capture d'écran ci-dessous montre la structure de site telle qu'elle est perçue par Helen Lewis. Bien que le site internet contient beaucoup plus de pages, elle ne peut en voir que trois, parce que seul l'accès à la page "Courses" a été autorisé dans les paramètres du groupe "Editors". Notez que même si Helen Lewis est autorisée à voir trois pages, elle ne peut modifier que l'une d'elles !

Être capable de voir une page n'inclut pas le droit de la modifier (ou de modifier ses articles). Rappelez-vous que les permissions d'une page sont définies dans la structure de site, donc pour permettre l'accès à une page à un utilisateur, vous devez la sélectionner dans son profil et accorder son accès dans la structure de site.

Répertoires autorisés

Semblable à l'option "Pages autorisées", l'option "Répertoires autorisés" définie quels répertoires un utilisateur est autorisé à voir. La capture d'écran ci-dessous montre le gestionnaire de fichiers tel qu'il est perçu par Helen Lewis. Elle n'est autorisée de voir que le répertoire "campus", alors que les administrateurs peuvent voir le répertoire complet des fichiers ( files ).

Utilisateurs et groupes d'utilisateurs 63 Manuel pour Contao 3.2

Champs autorisés

Comme mentionné au début, les utilisateurs n'ont pas du tout de permissions par défaut ("deny all"), ce qui implique aussi qu'ils ne peuvent pas accéder aux champs d'un formulaire. Même s'ils sont par exemple autorisés à accéder au module d'actualités, le formulaire pour créer une nouvelle entrée sera vide jusqu'à ce que l'administrateur sélectionne un ou plusieurs champs de la table tl_news dans les paramètres du groupe.

Membres

Utilisateurs et groupes d'utilisateurs 64 Manuel pour Contao 3.2

La gestion des membres (utilisateurs front office) est beaucoup plus facile à gérer que celle des utilisateurs back office, car il n'y a pas de pages ou de champs à autoriser. La gestion des membres est principalement requise pour contrôler l'accès aux pages protégées, qui est mis en œuvre au niveau du groupe. En fonction de la configuration du site internet, les membres inscrits pourront voir des pages protégées ou accéder à des téléchargements protégés qui ne sont pas disponibles pour les invités.

Utilisateurs et groupes d'utilisateurs 65 Manuel pour Contao 3.2

Extensions

Les extensions sont une partie essentielle de Contao, car ils vous permettent d'ajouter des fonctionnalités supplémentaires. Il existe plus de 1400 extensions disponibles dans le référentiel d'extensions de Contao, que vous pouvez parcourir directement à partir du back office. La communication avec le serveur du référentiel s'effectue via SOAP, donc vous devez activer l'extension SOAP de PHP pour utiliser le service (si elle n'est pas activée par défaut).

Catalogue d'extensions

Le module "Catalogue d'extensions" vous permet de parcourir la liste des extensions et d'installer des extensions par simple pression d'un bouton. Utilisez les options de filtrage et de tri pour trouver une extension particulière et cliquez sur l'icône d'information ou le titre de l'extension pour ouvrir la page de détails et installer le module.

La page de détails contient une description de l'extension et des informations importantes concernant les configurations du système requises ainsi que les versions et les dépendances d'autres modules. Cliquez sur le bouton "Installer" pour télécharger et installer l'extension.

Extensions 66 Manuel pour Contao 3.2

Contao téléchargera et installera automatiquement l'extension et mettra à jour la base de données si nécessaire.

Extensions 67 Manuel pour Contao 3.2

Gestionnaire d'extensions

Le module "Gestionnaire d'extensions" vous permet de mettre à jour et de désinstaller des extensions. Il vérifie automatiquement les mises à jour et vous avertit si une nouvelle version est disponible. De nombreuses extensions incluent également des liens vers un manuel en ligne et/ou un fil de discussion dans un forum où vous pouvez obtenir de l'aide.

Pour désinstaller une extension, cliquez simplement sur l'icône de désinstallation et suivez les instructions. Le gestionnaire d'extensions va supprimer tous les fichiers et répertoires et mettre à jour la base de données si nécessaire. Notez que cette action ne peut pas être annulée et les tables ne peuvent pas être restaurées !

Extensions 68 Manuel pour Contao 3.2

Installation manuelle

Dans le cas où l'extension SOAP de PHP n'est pas disponible sur votre serveur, vous pouvez également installer des extensions de Contao manuellement. Trouvez le module correspondant dans la liste des extensions et téléchargez l'archive .zip de la dernière version. Ensuite, décompressez les fichiers et copiez-les dans votre répertoire local ou distant de Contao. Enfin, vérifiez la base de données avec l'outil d'installation de Contao.

Extensions 69 Manuel pour Contao 3.2

Maintenance

La plupart des travaux d'entretien dans Contao sont exécutés automatiquement par le "Periodic Command Scheduler", vous pouvez donc vous concentrer sur votre travail. Même les tâches dans le module de maintenance sont effectuées automatiquement, mais parfois il est nécessaire de les déclencher manuellement.

Purger des données

Outre le contenu généré par l'utilisateur, Contao stocke beaucoup de données du système qui sont utilisées pour restaurer les enregistrements supprimés, revenir à des versions antérieures, créer l'index de recherche du site internet ou réduire le temps de chargement d'une page. Vous pouvez purger ces données manuellement par exemple pour supprimer les anciennes vignettes à partir du cache d'images ou pour recréer les fichiers XML du plan du site après que vous ayez modifié la structure de site.

Reconstruire l'index de recherche

Les pages sont généralement ajoutées automatiquement à l'index de recherche quand elles sont vues dans le front office (sauf si vous êtes connecté au back office en même temps), vous n'avez donc pas besoin de vous inquiéter au sujet de l'index de recherche. Cependant, si vous avez modifié un grand nombre de pages, il est plus commode de les mettre à jour toutes à la fois au lieu de les ouvrir une par une dans le navigateur. Dans ce cas, vous pouvez reconstruire l'index de

Maintenance 70 Manuel pour Contao 3.2

recherche manuellement.

Maintenance 71 Manuel pour Contao 3.2

Tableaux conteneurs de données

Les tableaux conteneurs de données ("Data Container Arrays" en Anglais, ou DCA) sont utilisés pour stocker les métadonnées des tables. Chaque DCA décrit une table particulière du point de vue de sa configuration, de ses relations avec les autres tables et de ses champs. Le noyau de Contao détermine grâce à ces métadonnées comment lister les enregistrements, comment générer les formulaires dans le back office et comment sauvegarder les données. Les fichiers DCA de tous les modules actifs sont chargés les uns après les autres (en commençant par "backend", puis "frontend" et ensuite dans l'ordre alphabétique) afin que chaque module puisse surcharger la configuration existante. Le fichier system/config/dcaconfig.php est inclus à la fin.

Tableaux conteneurs de données 72 Manuel pour Contao 3.2

Référence

Un tableau conteneur de données est divisé en six sections. La première section contient les configurations générales de la table, comme les relations avec d'autres tables. Les deuxième et troisième sections déterminent la manière dont les enregistrements sont listés, et quelles opérations un utilisateur est en droit d'exécuter. La quatrième section définit différents groupes de champs de formulaires, appelés "palettes", et les deux dernières sections décrivent les champs en détail.

Configuration de la table

La configuration de la table décrit la table elle-même, par exemple quel type de conteneurs de données est utilisé pour stocker les données ou comment elle est en relation avec d'autres tables. Vous pouvez également activer le suivi des versions ou définir ce qui arrive aux enregistrements enfants lorsque les données sont éditées ou supprimées.

Clé Valeur Description

&$GLOBALS['TL_LANG'] Le libellé utilisé dans l'arborescence des pages ou des fichiers, label ( string ) et inclut typiquement une référence au tableau de langues.

Table parente ptable Le nom de la table parente (table.pid = ptable.id). ( string )

Tables enfants ctable Les noms des tables enfants (table.id = ctable.pid). ( array )

Conteneur de Table (table de la base de données), File (fichier de configuration dataContainer données ( string ) local) ou Folder (gestionnaire de fichiers).

Si true, vous ne pouvez plus rajouter d'enregistrement dans cette closed true/false ( boolean ) table.

notEditable true/false ( boolean ) Si true, la table ne peut pas être modifiée.

Si true, les enregistrements de la table ne peuvent pas être notDeletable true/false ( boolean ) supprimés.

Active le bouton "Sauvegarder et éditer" lorsqu'un nouvel switchToEdit true/false ( boolean ) enregistrement est ajouté (mode de tri 4 uniquement).

Si true, Contao enregistre l'ancienne version de l'enregistrement enableVersioning true/false ( boolean ) lorsqu'une nouvelle version est créée.

Si true, Contao ne dupliquera pas les enregistrements de la table doNotCopyRecords true/false ( boolean ) courante lorsqu'un enregistrement de sa table parente est dupliqué.

Si true, Contao n'effacera pas les enregistrements de la table doNotDeleteRecords true/false ( boolean ) courante lorsqu'un enregistrement de sa table parente est effacé.

Fonction callback Appelle une fonction personnalisée lorsqu'un DataContainer est onload_callback ( array ) initialisé, et passe l'objet DataContainer en argument.

Fonction callback Appelle une fonction personnalisée après la mise à jour d'un onsubmit_callback ( array ) enregistrement, et passe l'objet DataContainer en argument.

Fonction callback Appelle une fonction personnalisée après la suppression d'un ondelete_callback ( array ) enregistrement, et passe l'objet DataContainer en argument.

Appelle une fonction personnalisée lorsqu'un enregistrement est Fonction callback oncut_callback déplacé, et passe l'objet DataContainer en argument. Ajoutée à ( array ) partir de la version 2.8.2 de Contao.

Appelle une fonction personnalisée lorsqu'un enregistrement est Fonction callback oncopy_callback dupliqué, et passe l'objet DataContainer en argument. Ajoutée à

Référence 73 Manuel pour Contao 3.2

partir de la version 2.8.2 de Contao.

Appelle une fonction personnalisée lorsqu'une nouvelle version Fonction callback onversion_callback d'un enregistrement est créée et passe la table, l'ID d'insertion et ( array ) l'objet DataContainer en arguments.

Appelle une fonction personnalisée lorsqu'une version d'un Fonction callback onrestore_callback enregistrement est restaurée et passe l'ID d'insertion, la table, le ( array ) tableau de données et la version en arguments.

Configuration de la sql Décrit la configuration de la table, par exemple 'keys' => array ( table ( array ) 'id' => 'primary', 'pid' => 'index' )

Liste des enregistrements

Le tableau "list" définit comment les enregistrements sont listés. Contao fournit trois vues différentes : la vue en liste, la vue parente et la vue arborescente. Vous pouvez configurer différentes options de tri, tels que des filtres ou un ordre de tri par défaut et ajouter des libellés personnalisés.

Tri

Clé Valeur Description

0 Les enregistrements ne sont pas triés 1 Les enregistrements sont triés selon un champ déterminé 2 Les enregistrements sont triés selon un champ sélectionnable 3 Les enregistrements sont triés par la table parente Mode de tri 4 Affiche les enregistrements enfants d'une table parente (voir le mode ( integer ) module feuilles de style) 5 Les enregistrements sont présentés en arborescence (voir la structure de site) 6 Affiche les enregistrements enfants dans une structure en arborescence (voir le module articles)

1 Tri ascendant sur la première lettre 2 Tri descendant sur la première lettre 3 Tri ascendant sur les deux premières lettres 4 Tri descendant sur les deux premières lettres 5 Tri ascendant par jour Tri "flag" 6 Tri descendant par jour flag ( integer ) 7 Tri ascendant par mois 8 Tri descendant par mois 9 Tri ascendant par année 10 Tri descendant par année 11 Tri ascendant 12 Tri descendant

search affiche le menu de recherche des enregistrements sort affiche le menu de tri des enregistrements Présentation filter affiche le menu de filtrage des enregistrements panelLayout du panneau limit affiche le menu de limitation du nombre des enregistrements ( string ) Les options doivent être séparées par des virgules (= espace) et des points-virgules (= nouvelle ligne) comme sort,filter;search,limit .

Valeurs de tri fields par défaut Un ou plusieurs champs utilisés pour trier la table. ( array )

Champs d'en- Un ou plusieurs champs affichés dans l'élément en-tête (mode de tri headerFields tête ( array ) 4 uniquement).

Icône Chemin de l'icône qui sera affichée au dessus de l'arborescence icon d'arborescence (mode de tri 5 et 6 uniquement). ( string )

Nœuds racines ID des enregistrements racines (pages autorisées). En général, cette root ( array ) valeur se gère toute seule.

Référence 74 Manuel pour Contao 3.2

( array ) valeur se gère toute seule.

Filtre de Vous permet d'ajouter des filtres personnalisés sous forme de filter requête tableaux, par exemple array('status=?', 'active') . ( array )

true/false Vous permet de désactiver les en-têtes de groupe dans les vues en disableGrouping ( boolean ) liste et dans les vues parentes.

Fonction Cette fonction sera appelée au lieu d'afficher les boutons de collage paste_button_callback callback par défaut. A spécifier en tant que array('Class', 'Method') . ( array )

Fonction Cette fonction sera appelée pour restituer les éléments enfants child_record_callback callback (mode de tri 4 uniquement). A spécifier en tant que array('Class', ( array ) 'Method') .

Class CSS Vous permet d'ajouter une classe CSS aux éléments de la vue child_record_class ( string ) parente.

Libellés

Clé Valeur Description

Un ou plusieurs champs qui seront affichés dans la liste. (par exemple fields Champs ( array ) array('title', 'user_id:tl_user.name') ).

true/false Si true, un en-tête de tableau sera généré avec les noms de colonnes (par showColumns ( boolean ) exemple, la liste des membres dans le back office)

Chaîne de Une chaîne de caractères HTML utilisée pour formater les champs qui format formatage seront affichés (par exemple %s ). ( string )

Nombre de maxCharacters caractères Nombre maximum de caractères du libellé. ( integer )

Fonction callback Appelle une fonction personnalisée plutôt que la fonction par défaut pour group_callback ( array ) l'en-tête de groupe.

Fonction callback label_callback Appelle une fonction personnalisée plutôt que la fonction libellé par défaut. ( array )

Opérations

Le tableau des opérations est divisé en deux sections : les opérations globales, qui concernent tous les enregistrements à la fois (par exemple, modification de plusieurs enregistrements), et les opérations unitaires, qui concernent qu'un enregistrement spécifique (par exemple, modification ou suppression d'un enregistrement).

Opérations globales

Clé Valeur Description

&$GLOBALS['TL_LANG'] Label du bouton. Typiquement une référence au tableau global de label ( string ) langues.

Fragment d'URL Un fragment d'URL ajouté à la chaîne de l'URI lors du clic sur un href ( string ) bouton (par exemple, act=editAll ).

Classe CSS class Attribut de classe CSS du bouton. ( string )

Attributs Attributs supplémentaires comme un gestionnaire d'événements ou attributes supplémentaires de définitions de style. ( string )

Référence 75 Manuel pour Contao 3.2

Opérations unitaires

Clé Valeur Description

&$GLOBALS['TL_LANG'] Intitulé du bouton. Typiquement une référence au tableau global de label ( string ) langues.

Fragment d'URL Fragment d'URL ajouté à la chaîne de l'URI lors du clic sur le bouton href ( string ) (par exemple, act=edit ).

icon Icône ( string ) Chemin et nom de fichier de l'icône.

Attributs Attributs supplémentaires comme un gestionnaire d'événements ou attributes supplémentaires de définitions de style. ( string )

Fonction callback Appelle une fonction personnalisée à la place de la fonction de bouton button_callback ( array ) par défaut. A spécifier en tant que array('Class', 'Method') .

Champs

Le tableau des champs définit les colonnes d'une table. En fonction de ces paramétrages, Contao détermine quel type de champs de formulaire à charger, si un utilisateur est autorisé ou non à accéder à certain champ et si un champ peut être utilisé comme critère de tri ou de filtre.

Clé Valeur Description

&$GLOBALS['TL_LANG'] Intitulé du champ. Typiquement, une référence au tableau global label ( string ) de langues.

Valeur par défaut Valeur par défaut attribuée quand un nouvel enregistrement est default ( mixed ) créé.

Si true, le champ sera exclu pour les non-administrateurs. Il peut exclude true/false ( boolean ) être activé dans le module groupes d'utilisateurs (champs exclus acceptés).

Si true, le champ sera inclus dans le menu de recherche (voir "tri search true/false ( boolean ) des enregistrements" -> "panelLayout").

Si true, le champ sera inclus dans le menu de tri (voir "tri des sorting true/false ( boolean ) enregistrements" -> "panelLayout").

Si true, le champ sera inclus dans le menu de filtrage (voir "tri des filter true/false ( boolean ) enregistrements" -> "panelLayout").

1 Tri ascendant sur la première lettre 2 Tri descendant sur la première lettre 3 Tri ascendant sur les X premières lettres (voir length) 4 Tri descendant sur les X premières lettres (voir length) 5 Tri ascendant par jour Mode de tri 6 Tri descendant par jour flag ( integer ) 7 Tri ascendant par mois 8 Tri descendant par mois 9 Tri ascendant par année 10 Tri descendant par année 11 Tri ascendant 12 Tri descendant

Longueur du critère Permet de spécifier le nombre de caractères utilisés pour les length de tri ( integer ) groupes de tri (flags 3 et 4).

text Champ texte password Champ mot de passe textarea Textarea select Menu déroulant checkbox Case à cocher

Référence 76 Manuel pour Contao 3.2

select Menu déroulant checkbox Case à cocher radio Bouton radio radioTable Tableau avec images et boutons radio imageSize Deux champs de texte avec un menu déroulant inputUnit Champ texte avec un petit menu déroulant d'éléments Type de champs inputType trbl Quatre champs textes avec un petit menu déroulant ( string ) d'éléments chmod Tableau CHMOD pageTree Arborescence des pages fileTree Arborescence des fichiers tableWizard Assistant de tables timePeriod Champ de texte avec un menu déroulant listWizard Assistant de listes optionWizard Assistant d'options moduleWizard Assistant de modules checkboxWizard Assistant de cases à cocher

options Options ( array ) Options d'un menu déroulant ou de boutons radio.

Fonction callback Fonction callback retournant un tableau d'options. A spécifier en options_callback ( array ) tant que array('Class', 'Method') .

Table.champ Récupère les options depuis une table de la base de données. foreignKey ( string ) Renvoie l'ID comme clé et le champ spécifié comme valeur.

&$GLOBALS['TL_LANG'] Tableau contenant les intitulés des options. Typiquement, une reference ( string ) référence au tableau global de langues.

&$GLOBALS['TL_LANG'] Tableau contenant les descriptions. Typiquement, une référence explanation ( string ) au tableau global de langues.

Exécute une fonction personnalisée à la saisie du champ, à la Fonction callback input_field_callback place de la routine par défaut, et passe l'objet DataContainer et le ( array ) libellé en arguments.

Configuration du eval Diverses options de configuration. Voir le paragraphe suivant. champ ( array )

Appelle une fonction personnalisée et ajoute sa valeur de retour Fonction callback wizard dans le champ de saisie. A spécifier en tant que array('Class', ( array ) 'Method') .

Définition d'un champ Décrit le type de données et sa configuration de base de données, sql de base de données par exemple varchar(255) NOT NULL default '' ( string )

Configuration des relation Décrit la relation à la table parente (voir le paragraphe "relations"). relations ( array )

Ces fonctions seront appelées au chargement du champ. Fonctions callback Spécifiez chaque fonction de callback en tant que array('Class', load_callback ( array ) 'Method') . Passe la valeur du champ et le conteneur de données en arguments. Attend la valeur du champ comme valeur de retour.

Ces fonctions seront appelées à la sauvegarde du champ. Spécifiez chaque fonction de callback en tant que array('Class', Fonctions callback save_callback 'Method') . Passe la valeur du champ et le conteneur de données ( array ) en arguments. Attend la valeur du champ comme valeur de retour. Renvoie une exception pour afficher un message d'erreur.

Évaluation

Le tableau d'évaluation configure en détail un champ particulier. Vous pouvez, par exemple, créer des champs obligatoires, ajouter un sélecteur de dates ou définir le nombre de lignes et de colonnes d'un bloc de texte (textarea). Vous pouvez aussi modifier l'apparence d'un champ ou activer l'encryptage des données. Chaque champ peut être validé par une expression régulière.

Clé Valeur Description

Référence 77 Manuel pour Contao 3.2

helpwizard ( boolean ) Si true, l'icône de l'assistant sera affichée à côté du libellé du champ.

true/false mandatory Si true, le champ ne peut pas être vide. ( boolean )

Longueur maxlength maximale Nombre maximum de caractères autorisés dans le champ courant. ( integer )

Longueur minlength minimale Nombre minimum de caractères qui doivent être saisis. ( integer )

true/false fallback Si true, le champ ne peut être assigné qu'une fois par table. ( boolean )

alias exige un alias valide

n'autorise que des caractères alphanumériques (y alnum compris le point [.], le trait d’union [-], le tiret bas [_] et l'espace [ ])

n'autorise que des caractères alphabétiques (y alpha compris le point [.], le trait d’union [-] et l'espace [ ])

date exige une date valide

datim exige une date et une heure valide

n'autorise que des caractères numériques (y digit compris le point [.] et le trait d’union [-])

email exige une adresse e-mail valide

emails exige une liste d'adresses e-mail valide Expression rgxp régulière extnd interdit #&()/<=> ( string ) folderalias exige une URL d'alias de dossier valide

exige une adresse e-mail valide au format "nom friendly convivial" (friendly name format)

language exige un code de langues valide

locale exige une "locale" valide (par exemple "fr-CH")

exige un numéro de téléphone valide (caractères phone numériques, espace [ ], plus [+], trait d’union [-], parenthèses [()] et barre oblique [/])

prcnt autorise des nombres entre 0 et 100

url exige une URL valide

time exige une heure valide

Colonnes cols Nombre de colonnes (champs textarea seulement). ( integer )

Lignes rows Nombre de lignes (champs textarea seulement). ( integer )

Autorise les valeurs multiples. S'applique aux champs textes, listes true/false multiple déroulantes, boutons radios et cases à cocher. Requis pour l'assistant de ( boolean ) cases à cocher.

Taille Taille d'une liste déroulante à choix multiples, ou nombre de champs de size ( integer ) saisie.

Attributs de

Référence 78 Manuel pour Contao 3.2

style style Attributs de style (par exemple border:2px ) ( string )

Éditeur de tinyMCE utilise le fichier config/tinyMCE.php rte texte riche tinyFlash utilise le fichier config/tinyFlash.php ( string ) Vous pouvez également ajouter vos propres fichiers de configuration.

true/false submitOnChange Si true, le formulaire sera soumis lorsque la valeur du champ est modifiée. ( boolean )

true/false nospace Si true, les caractères d'espacement ne seront pas autorisés. ( boolean )

true/false allowHtml Si true, le champ courant acceptera le code HTML. ( boolean )

true/false preserveTags Si true, les balises HTML ne seront pas supprimées. ( boolean )

true/false Si true, les éléments HTML seront décodés. Notez que les éléments decodeEntities ( boolean ) HTML sont toujours décodés si allowHtml vaut true.

true/false doNotSaveEmpty Si true, le champ ne sera pas enregistré s'il est vide. ( boolean )

true/false Si true, le champ sera toujours enregistré, même si sa valeur n'a pas alwaysSave ( boolean ) changé. Cela peut être utile en conjonction d'un load_callback.

true/false Si true, tous les caractères d'espacement seront remplacés par un tiret spaceToUnderscore ( boolean ) bas.

true/false unique Si true, la valeur du champ ne peut être enregistrée si elle existe déjà. ( boolean )

true/false encrypt Si true, la valeur du champ sera stockée sous forme cryptée. ( boolean )

Si true, une barre oblique sera ajoutée à la fin de la valeur du champ. Si true/false trailingSlash false, la barre oblique, si existante, qui termine la valeur du champ sera ( boolean ) supprimée.

Si true, les fichiers et les dossiers seront affichés. Si false, seuls les true/false files répertoires seront affichés. Ne s'applique qu'aux arborescences de ( boolean ) fichiers.

true/false Supprime les boutons radio ou les cases à cocher à côté des noms des filesOnly ( boolean ) répertoires. Ne s'applique qu'aux arborescences de fichiers.

Extensions N'autorise que certaines extensions dans l'arborescence de fichiers (liste extensions de fichiers séparée par des virgules). Ne s'applique qu'aux arborescences de fichiers. ( string )

Chemin Répertoire racine personnalisé pour l'arborescence de fichiers. Ne path ( string ) s'applique qu'aux arborescences de fichiers.

Type de checkbox autorise les sélections multiples champ fieldType radio n'autorise qu'une seule sélection d'entrée Ne s'applique qu'aux arborescences de fichiers et de pages. ( string )

true/false Si true, une option vide sera ajoutée au tableau des options. Ne s'applique includeBlankOption ( boolean ) qu'aux listes déroulantes.

Libellé blankOptionLabel Libellé pour l'option vide (par défaut - ). ( string )

true/false chosen Balises "select" natives améliorées avec Chosen. ( boolean )

true/false findInSet Tri sur les valeurs actuelles des options plutôt que sur leurs libellés. ( boolean )

true/false datepicker Si true, le champ actuel a un sélecteur de dates.

Référence 79 Manuel pour Contao 3.2

datepicker ( boolean ) Si true, le champ actuel a un sélecteur de dates.

true/false colorpicker Si true, le champ actuel a un sélecteur de couleurs ( boolean )

true/false Si true, le champ courant peut être modifié dans le front office. Ne feEditable ( boolean ) s'applique qu'à la table tl_member .

personal données personnelles address détails de l'adresse Group name feGroup contact détails de contact ( string ) login détails d'identification (uniquement la table tl_member ) Vous pouvez également définir vos propres groupes.

true/false Si true, le champ courant est affiché dans le module de listes des feViewable ( boolean ) membres.

true/false Si true, le champ courant ne sera pas dupliqué lorsque l'enregistrement doNotCopy ( boolean ) est dupliqué.

true/false Si true, la valeur du champ sera cachée (elle sera cependant visible dans hideInput ( boolean ) la source de la page !).

true/false Si true, le champ courant ne sera pas affiché dans les modes "modifier doNotShow ( boolean ) tous" et "voir les détails".

true/false isBoolean Indique qu'un champ particulier est de type booléen. ( boolean )

true/false disabled Désactive le champ (n'est pas supporté par tous les types de champs). ( boolean )

true/false Rend le champ en lecture seule (n'est pas supporté par tous les types de readonly ( boolean ) champs).

Délimiteur Le choix de ce champ ne sera pas sauvegardé comme une chaîne csv sérialisée mais comme une liste séparée par des virgules. Exemple: ( string ) 'eval' => array('csv'=>',')

Relations

Les relations décrivent, comment les champs de base de données sont liés à d'autres tables. Définit la table référencée dans la clé foreignKey . Les relations fournissent des classes de modèles pour charger des ensembles de données référencées de manière efficace et conviviale pour le développeur. (voir Model::getRelated() ).

Clé Valeur Description

hasOne La valeur référence un ensemble de données enfants hasMany La valeur référence certains ensembles de données enfants (sérialisé) Type de relation type belongsTo La valeur référence un ensemble de données parentes (z.B. pid ) ( string ) belongsToMany La valeur référence certains ensembles de données parentes (sérialisé)

lazy Charge les enregistrements référencés uniquement lorsque cela est Comportement au nécessaire. (par défaut, économise de la RAM) load chargement eager Charge automatiquement les enregistrements référencés (économise les ( string ) appels à la base de données)

Référence 80 Manuel pour Contao 3.2

Palettes

Une palette est un groupe de champs de formulaire qui sont nécessaires pour modifier un enregistrement. Une palette ne contient typiquement pas toutes les colonnes d'une table, mais seulement celles qui appartiennent à un certain module ou un certain élément de contenu. Les palettes peuvent changer dynamiquement suivant les droits de l'utilisateur ou le type de l'élément et certains sous-ensembles du formulaire (appelés des subpalettes) peuvent être chargés interactivement avec Ajax.

Définir des groupes

Une palette est une chaîne de caractères composée de noms de champs concaténés et séparés soit par des points- virgules (;), soit par des virgules (,). Alors que la virgule est utilisée simplement pour séparer des noms de champs, le point- virgule indique le commencement d'un nouveau fieldset, qui peut être déroulé ou enroulé.

Palettes 81 Manuel pour Contao 3.2

L'exemple ci-dessus se définit par le code suivant :

{title_legend},headline,alias,author;{date_legend},date,time;{teaser_legend:hide},subheadline,teaser

Les éléments de substitution title_legend et date_legend seront remplacés par leur libellé correspondant dans le tableau "TL_LANG".

$GLOBALS['TL_LANG']['tl_news']['title_legend'] = 'Title and author'; $GLOBALS['TL_LANG']['tl_news']['date_legend'] = 'Date and time';

Disposer les champs

Le back office de Contao utilise un système simple de grille en deux colonnes pour disposer les champs d'entrées dans leurs groupes. Vous pouvez utiliser les classes CSS suivantes dans la section évaluation du tableau conteneur de données en tant que tl_class (exemple 'tl_class'=>'w50 wizard' ).

tl_class Description

w50 Définit la largeur du champs à 50% et le rend flottant ( float:left ).

clr Libère tous les éléments flottants ( clear:both ).

Raccourcit le champ de saisie de sorte qu'il y ait assez de place pour le bouton "Assistant" (par exemple wizard les champs avec un sélecteur de dates).

long Le champ de saisie de texte s'étend sur deux colonnes.

m12 Ajoute une marge supérieure de 12 pixels à l'élément (utilisé pour les cases à cocher uniques).

Palettes 82 Manuel pour Contao 3.2

Callbacks

Les fonctions callback sont fondées sur un pattern de répartition d'événements. Vous pouvez inscrire une ou plusieurs callbacks pour un certain événement et lorsque l'événement est déclenché, les fonctions callback sont exécutées. Les callbacks vous permettent de personnaliser le cours de l'exécution du cœur de Contao.

Callbacks globaux

Callback Description

Est exécutée quand l'objet DataContainer est initialisé. Cela vous permet, par exemple, de onload_callback vérifier les permissions ou de modifier le tableau conteneur de données dynamiquement à l'exécution.

Est exécutée lorsqu'un formulaire du back office est soumis. Cela vous permet, par exemple, onsubmit_callback de modifier les données du formulaire avant qu'elles ne soient écrites dans la base de données (utilisée pour calculer les intervalles dans l'extension calendrier).

ondelete_callback Est exécutée avant qu'un enregistrement soit supprimé de la base de données.

oncut_callback Est exécutée après qu'un enregistrement ait été déplacé vers une nouvelle position.

oncopy_callback Est exécutée après qu'un enregistrement ait été dupliqué.

Callbacks de listing

Callback Description

Permet d'avoir des boutons de collage individuels et est, par exemple, utilisée dans la paste_button_callback structure de site pour désactiver les boutons en fonction des permissions de l'utilisateur (nécessite un contrôle de commande additionnel via load_callback).

child_record_callback Définit comment les éléments enfants sont rendus dans la "vue parente".

group_callback Permet d'avoir des en-têtes de groupes individuels dans le listing.

Permet d'avoir des libellés individuels dans le listing et est, par exemple, utilisée dans le label_callback module utilisateurs pour ajouter des icônes de statut.

Callbacks d'opérations

Callback Description

Permet d'avoir des icônes de navigation individuels et est, par exemple, utilisée dans la structure button_callback de site pour désactiver des boutons en fonction des permissions de l'utilisateur (nécessite un contrôle de commande additionnel via load_callback).

Callbacks de champs

Callback Description

Vous permet de définir une fonction individuelle pour charger des données dans un menu options_callback déroulant ou une liste de cases à cocher. Utile, par exemple, pour des relations avec clés étrangères conditionnelles.

Permet la création de champs de formulaire individuels et est, par exemple, utilisée dans le input_field_callback module back office "données personnelles" pour générer le widget "nettoyer les données". Attention : le champs n'est pas sauvegardé automatiquement !

Est exécutée lorsque un champs de formulaire est initialisé et peut, par exemple, être utilisée load_callback pour charger une valeur par défaut.

Callbacks 83 Manuel pour Contao 3.2

Est exécutée quand un champs est soumis et peut, par exemple, être utilisée pour ajouter save_callback une routine de validation individuelle.

Callbacks 84 Manuel pour Contao 3.2

Personnaliser Contao

La personnalisation est une des fonctionnalités les plus importantes de n'importe quelle application et particulièrement des systèmes de gestion de contenu. Contao fournit de nombreuses options pour ajuster la configuration, personnaliser les champs et les libellés, ajouter ses propres morceaux de code ou même créer de nouvelles extensions. Vous pouvez contrôler presque n'importe quel comportement du cœur de Contao sans même toucher ses fichiers, ainsi vous n'avez pas à réappliquer vos changements à chaque mise à jour.

Personnaliser Contao 85 Manuel pour Contao 3.2

Contourner le cache interne

Avant de développer des extensions pour Contao, vous devez contourner le cache interne. Si vous voulez contourner le cache interne, Suivez les liens "Système" -> "Configuration" et cochez la case "Contourner le cache interne" sous "Configuration globale".

Dès que le site internet sera en production, vous devrez décocher la case "Contourner le cache interne", afin de réduire au maximum le temps de réponse.

Contourner le cache interne 86 Manuel pour Contao 3.2

Configurations personnalisées

La configuration de Contao est définie dans un grand tableau divisé en trois sections : la configuration du système, la configuration du conteneur de données et la configuration de la langue. Le tableau de configuration est construit au moment de l'exécution et ne contient que les parties nécessaires à la génération d'une page donnée. Contao ne perd pas de temps et de mémoire à "parser" de nombreux fichiers de configurations redondants.

Personnaliser la configuration du système

La configuration du système est enregistrée dans les fichiers config.php des différents modules de Contao. Si vous voulez la personnaliser, ajoutez vos modifications dans le fichier system/config/localconfig.php , afin qu'elles ne soient pas écrasées à la prochaine mise à jour. La plupart des paramètres peuvent être configurés dans le module Configuration du back office et seront écrits automatiquement dans le fichier de configuration; vous aurez donc rarement besoin de le modifier manuellement.

// Désactive le créateur d'extension unset($GLOBALS['BE_MOD']['devtools']['extension']);

### INSTALL SCRIPT START ### $GLOBALS['TL_CONFIG']['debugMode'] = false; $GLOBALS['TL_CONFIG']['displayErrors'] = false;

Pensez à mettre vos modifications au-dessus de la ligne INSTALL SCRIPT START ; À défaut, elles seront supprimées par le module de configuration. Et n'utilisez jamais le fichier config.php pour stocker des paramètres de configuration, car ce fichier peut être écrasé lors des mises à jour !

Personnaliser la configuration du conteneur de données

Contao utilise le tableau conteneur de données (DCA) pour stocker les métadonnées relatives aux tables. La configuration du conteneur de données est enregistrée dans les dossiers dca des divers modules de Contao. Faites vos modifications dans le fichier system/config/dcaconfig.php afin qu'elles ne soient pas écrasées à la prochaine mise à jour.

// Rend obligatoire le champ company dans la table des membres $GLOBALS['TL_DCA']['tl_member']['fields']['company']['eval']['mandatory'] = true;

// Vérifie que les noms de company ne comprennent que des caractères alphanumériques $GLOBALS['TL_DCA']['tl_member']['fields']['company']['eval']['rgxp'] = 'alnum';

// N'autorise que les administrateurs à utiliser les éléments de contenu de type "includes" if (!BackendUser::getInstance()->isAdmin) { unset($GLOBALS['TL_CTE']['includes']); }

Comme vous pouvez le voir, le fichier dcaconfig.php est un bon endroit pour enregistrer de petites modifications concernant la configuration de Contao. Pour faire de nombreux changements, pensez plutôt à les inclure dans une extension personnalisée, afin de ne pas en perdre la trace.

Personnaliser les libellés et les traductions

Les libellés et les traductions sont enregistrés dans les dossiers languages des différents modules de Contao. Chaque langue est identifiée par son code ISO-639-1. Appliquez vos modifications dans le fichier system/config/langconfig.php afin

Configurations personnalisées 87 Manuel pour Contao 3.2

qu'elles ne soient pas écrasées à la prochaine mise à jour.

// Modifie un libellé pour toutes les langues $GLOBALS['TL_LANG']['MSC']['goBack'] = '«';

// Modifie un libellé pour une seule langue if ($GLOBALS['TL_LANGUAGE'] == 'de') { $GLOBALS['TL_LANG']['tl_layout']['column'] = 'Bereich'; } elseif ($GLOBALS['TL_LANGUAGE'] == 'fr') { $GLOBALS['TL_LANG']['tl_layout']['column'] = 'Section'; }

Bien entendu, les modifications du tableau de langues peuvent aussi être incluses dans un module personnalisé, ce qui est recommandé lorsqu'il y en a beaucoup.

Configurations personnalisées 88 Manuel pour Contao 3.2

Ajouter des champs personnalisés

Imaginons que vous souhaitiez ajouter un numéro de client à la table des membres. L'ajout d'un champ personnalisé à une table de Contao nécessite de modifier plus d'un fichier, il est donc préférable d'ajouter un module personnalisé dans le répertoire system/modules . Gardez en mémoire que les modules sont chargés en suivant l'ordre alphabétique, n'appelez donc pas votre extension custom si vous souhaitez redéfinir les configurations de l'extension news .

Étendre le DCA (tableau conteneur de données)

Créez le fichier dca/tl_member.php dans le répertoire de votre module et ajoutez-y les métadonnées pour le nouveau champ, afin que Contao sache comment le gérer.

À partir de la version 3 de Contao, vous pouvez également spécifier directement les champs correspondants et leur configuration pour la base de données dans le tableau conteneur de données sous sql . Les détails SQL ne sont pas envoyés à la base de données, mais sont utilisés pour calculer la différence entre les spécifications de Contao et les tables existantes.

// Modification de la palette $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace ( 'company', 'customer_number,company', $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] );

// Ajoute les métadonnées du champ $GLOBALS['TL_DCA']['tl_member']['fields']['customer_number'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_member']['customer_number'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('mandatory'=>true, 'rgxp'=>'digit', 'maxlength'=>8), 'sql' => "varchar(8) NOT NULL default ''" );

Si vous ne comprenez pas le code ci-dessus, il peut être utile de relire le chapitre sur les tableaux conteneurs de données.

Après l'ajout ou la modification d'un champ dans le tableau conteneur de données, vous devriez utiliser l'outil d'installation de Contao afin de mettre à jour les tables de votre base de données.

Ajouter une traduction

Créez le fichier languages/en/tl_member.php dans le répertoire de votre module, et ajoutez-y les libellés anglais pour votre nouveau champ :

$GLOBALS['TL_LANG']['tl_member']['customer_number'] = array ( 'Customer number', 'Please enter the 8-digit customer number.' );

Dans le module membres, vous pouvez désormais saisir un numéro de client qui peut contenir jusqu'à 8 caractères numériques. Si le champ n'est pas saisi, ou contient un caractère non numérique, Contao refusera d'enregistrer la valeur et affichera un message d'erreur à la place.

Ajouter des champs personnalisés 89 Manuel pour Contao 3.2

Personnaliser l'éditeur de texte riche (TinyMCE)

Cette page explique comment personnaliser TinyMCE et sauvegarder les modifications afin qu'elles ne soient pas écrasées par la prochaine mise à jour de Contao. Notez que, par défaut, Contao n'inclut pas tous les plugins de TinyMCE; si vous souhaitez utiliser un plugin particulier qui ne fait pas partie de la distribution de Contao, il vous faut donc le télécharger à partir du site du projet TinyMCE, et le mettre dans le répertoire assets/tinymce/plugins .

L'image ci-dessus montre le fichier de configuration de l'éditeur de texte riche system/config/tinyMCE.php . Pour créer un fichier de configuration personnalisé, copiez simplement ce fichier et renommez-le, par exemple en tinyCustom.php . Faites ensuite vos modifications et sauvegardez le nouveau fichier. Il reste encore à adapter la configuration du conteneur de données dans le fichier system/config/dcaconfig.php et indiquer à Contao à quels champs le fichier personnalisé de configuration s'applique.

// Utilisation d'une configuration personnalisée de l'éditeur de texte riche pour les éléments textes $GLOBALS['TL_DCA']['tl_content']['fields']['text']['eval']['rte'] = 'tinyCustom';

Personnaliser l'éditeur de texte riche (TinyMCE) 90 Manuel pour Contao 3.2

Surcharger les méthodes de classes

Imaginons que vous vouliez modifier le comportement du module de navigation pour qu'il soit toujours visible, même en l'absence de sous-pages, alors que le module ne serait normalement pas affiché. Dans ce cas, une note doit informer l'utilisateur qu'il n'y a pas de sous-pages. Bien entendu, nous allons faire en sorte de conserver au maximum la classe originale de navigation, afin que les futures mises à jour ne nécessitent pas de maintenance. Les classes de modules et d'éléments de contenu peuvent être assignées dynamiquement dans la configuration du système de Contao, ce qui vous permet de les remplacer facilement par vos propres versions.

Créer une classe personnalisée

Le comportement de la classe de navigation par défaut correspond assez bien à ce que nous voulons, sauf que la méthode generate() cache le module lorsqu'il n'y a pas de sous-pages. Il suffit donc de modifier cette méthode particulière, et la meilleure façon de le faire est d'étendre la classe originale en la supplantant. Pour ce faire, créez un nouveau fichier xcustom/ModuleMyNavigation.php et définissez la classe personnalisée ModuleMyNavigation :

// xcustom/ModuleMyNavigation.php class ModuleMyNavigation extends ModuleNavigation { public function generate() { // Exécute la méthode originale $buffer = parent::generate();

if (empty($buffer)) { $buffer = 'There are no subpages'; }

return $buffer; } }

Enregistrer une classe personnalisée

Les classes de modules et d'éléments de contenu peuvent être assignées dynamiquement dans la configuration du système de Contao, ce qui vous permet de les remplacer facilement par vos propres versions. Les noms des classes de modules sont enregistrés dans le tableau global FE_MOD .

// xcustom/config/config.php $GLOBALS['FE_MOD']['navigationMenu']['navigation'] = 'ModuleMyNavigation';

Grâce à la configuration dynamique, Contao charge automatiquement la nouvelle classe à la requête suivante, et le module de navigation affichera le message "There are no subpages" au lieu de ne rien afficher du tout. La modification supporte les mises à jour sans nécessiter de maintenance.

Surcharger les méthodes de classes 91 Manuel pour Contao 3.2

Contao hooks

Les hooks fonctionnent de la même manière que les fonctions callback du tableau conteneur de données (DCA). Vous pouvez enregistrer une ou plusieurs fonctions pour un événement donné, et lorsque l'événement est déclenché, les fonctions callback sont exécutées. Les hooks vous permettent d'ajouter des fonctionnalités personnalisées au cœur de Contao. activateAccount

Le hook activateAccount est déclenché lorsqu'un nouveau compte en front office est activé. Il passe l'objet User en argument et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.4.3.

// config.php $GLOBALS['TL_HOOKS']['activateAccount'][] = array('MyClass', 'myActivateAccount');

// MyClass.php public function myActivateAccount(Database_Result $objUser) { // Faire quelque chose } activateRecipient

Le hook activateRecipient est déclenché lorsqu'un nouveau destinataire d'une newsletter est ajouté. Il passe l'adresse e- mail, les ID du destinataire et de la liste de diffusion en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.8.RC1.

// config.php $GLOBALS['TL_HOOKS']['activateRecipient'][] = array('MyClass', 'myActivateRecipient');

// MyClass.php public function myActivateRecipient($strEmail, $arrRecipients, $arrChannels) { // Faire quelque chose } addComment

Le hook addComment est déclenché lorsqu'un commentaire est ajouté. Il passe l'ID de l'enregistrement et le tableau de données en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.8.2.

// config.php $GLOBALS['TL_HOOKS']['addComment'][] = array('MyClass', 'myAddComment');

// MyClass.php public function myAddComment($intId, $arrSet) { // Faire quelque chose } addCustomRegexp

Le hook addCustomRegexp est déclenché lorsqu'une expression régulière inconnue est trouvée. Il passe le nom de

Contao hooks 92 Manuel pour Contao 3.2

l'expression régulière, la valeur courante et l'objet Widget en arguments et attend une valeur de retour de type booléen. Il est disponible à partir de la version 2.6.2.

// config.php $GLOBALS['TL_HOOKS']['addCustomRegexp'][] = array('MyClass', 'myAddCustomRegexp');

// MyClass.php public function myAddCustomRegexp($strRegexp, $varValue, Widget $objWidget) { if ($strRegexp == 'postal') { if (!preg_match('/^0-9{4,6}$/', $varValue)) { $objWidget->addError('Field ' . $objWidget->label . ' should be a postal code.'); }

return true; }

return false; } addLogEntry

Le hook addLogEntry est déclenché lorsqu'une nouvelle entrée est ajoutée au journal (log). Il passe le message, la fonction et l'action en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.8.RC1.

// config.php $GLOBALS['TL_HOOKS']['addLogEntry'][] = array('MyClass', 'myAddLogEntry');

// MyClass.php public function myAddLogEntry($strText, $strFunction, $strAction) { // Faire quelque chose } checkCredentials

Le hook checkCredentials est déclenché lorsqu'une tentative d'identification échoue à cause d'un mot de passe incorrect. Il passe le nom de l'utilisateur, le mot de passe et l'objet User en arguments et attend une valeur de retour de type booléen. Il est disponible à partir de la version 2.6.0.

// config.php $GLOBALS['TL_HOOKS']['checkCredentials'][] = array('MyClass', 'myCheckCredentials');

// MyClass.php public function myCheckCredentials($strUsername, $strPassword, User $objUser) { // Check against a global database if ($this->checkGlobalDbFor($strUsername, $strPassword)) { return true; }

return false; } closeAccount

Le hook closeAccount est déclenché lorsqu'un utilisateur clôture son compte. Il passe l'ID de l'utilisateur, le mode

Contao hooks 93 Manuel pour Contao 3.2

opérationnel et le module en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.8.0.

// config.php $GLOBALS['TL_HOOKS']['closeAccount'][] = array('MyClass', 'myCloseAccount');

// MyClass.php public function myCloseAccount($intId, $strMode, $objModule) { if ($strMode == 'close_delete') { // Faire quelque chose } } compileDefinition

Le hook compileDefinition est déclenché quand une définition de formatage d'une feuille de style est écrite. Il passe le tableau de configuration en argument et attend une chaîne de caractères comme valeur de retour. Il est disponible à partir de la version 2.9.4.

// config.php $GLOBALS['TL_HOOKS']['compileDefinition'][] = array('MyClass', 'myCompileDefinition');

// MyClass.php public function myCompileDefinition($arrRow) { if (isset($arrRow['border-radius'])) { return "\nborder-radius:" . $arrRow['border-radius'] . ";"; }

return ''; } compileFormFields

Le hook compileFormFields est déclenché avant qu'un champ de formulaire soit chargé. Il passe un tableau d'objets FormFieldModel ainsi que l'ID et l'objet du formulaire en arguments et attend le tableau d'objets FormFieldModel comme valeur de retour. Avec ce hook, les champs de formulaire peuvent être ajustés dynamiquement avant l'affichage. Il est disponible à partir de la version 3.2.

// config.php $GLOBALS['TL_HOOKS']['compileFormFields'][] = array('MyClass', 'myCompileFormFields');

// MyClass.php public function myCompileFormFields($arrFields, $formId, $this) { if ($formId == 'my_form_id') { foreach ($arrFields AS $objFields) { if($objFields->name == 'my_form_field_1') { // Faire quelque chose } } }

return $arrFields; }

Contao hooks 94 Manuel pour Contao 3.2

createDefinition

Le hook createDefinition est déclenché quand une définition de formatage d'une feuille de style est importée. Il passe la clé et la valeur, la définition de formatage d'origine et le tableau de données en arguments et attend un tableau ou false comme valeur de retour. Il est disponible à partir de la version 2.9.4.

// config.php $GLOBALS['TL_HOOKS']['createDefinition'][] = array('MyClass', 'myCreateDefinition');

// MyClass.php public function myCreateDefinition($strKey, $strValue, $strDefinition, $arrSet) { if ($strKey == 'border-radius') { return array('border-radius'=>$strValue); }

return false; } createNewUser

Le hook createNewUser est déclenché lorsqu'un nouvel utilisateur front office s'enregistre sur le site internet. Il passe le nouvel utilisateur et le tableau de données en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.2.0.

// config.php $GLOBALS['TL_HOOKS']['createNewUser'][] = array('MyClass', 'myCreateNewUser');

// MyClass.php public function myCreateNewUser($intId, $arrData) { // Modification de l'enregistrement } executePreActions

Le hook executePreActions est déclenché par les requêtes Ajax qui ne nécessitent pas un objet DCA. Il passe le nom de l'action en argument et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.6.1.

// config.php $GLOBALS['TL_HOOKS']['executePreActions'][] = array('MyClass', 'myExecutePreActions');

// MyClass.php public function myExecutePreActions($strAction) { if ($strAction == 'update') { // Faire quelque chose } } executePostActions

Le hook executePostActions est déclenché par les requêtes Ajax qui nécessitent un objet DCA. Il passe le nom de l'action et l'objet DataContainer en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.6.1.

Contao hooks 95 Manuel pour Contao 3.2

// config.php $GLOBALS['TL_HOOKS']['executePostActions'][] = array('MyClass', 'myExecutePostActions');

// MyClass.php public function myExecutePostActions($strAction, DataContainer $dc) { if ($strAction == 'update') { // Faire quelque chose } } generateBreadcrumb

Le hook generateBreadcrumb permet de modifier la navigation fil d'Ariane. Il passe les éléments de navigation et le module front office en arguments et attend des éléments comme valeur de retour. Il est disponible à partir de la version 2.10.0.

// config.php $GLOBALS['TL_HOOKS']['generateBreadcrumb'][] = array('MyClass', 'myGenerateBreadcrumb');

// MyClass.php public function myGenerateBreadcrumb($arrItems, \Module $objModule) { return $arrItems; } generateFrontendUrl

Le hook generateFrontendUrl est déclenché lors de la re-création d'une URL de front office. Il passe l'objet Page, la chaîne de paramètres et l'URL par défaut en arguments et attend une chaîne de caractères comme valeur de retour. Il est disponible à partir de la version 2.5.8.

// config.php $GLOBALS['TL_HOOKS']['generateFrontendUrl'][] = array('MyClass', 'myGenerateFrontendUrl');

// MyClass.php public function myGenerateFrontendUrl($arrRow, $strParams, $strUrl) { return str_replace('.html', '.xml', $strUrl); } generatePage

Le hook generatePage est déclenché avant la compilation du modèle de présentation principale ("fe_page"). Il passe l'objet Page, l'objet Model et une référence qui lui est propre en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.8.RC1.

// config.php $GLOBALS['TL_HOOKS']['generatePage'][] = array('MyClass', 'myGeneratePage');

// MyClass.php public function myGeneratePage(\PageModel $objPage, \LayoutModel $objLayout, \PageRegular $objPageRegular) { // Faire quelque chose } getAllEvents

Contao hooks 96 Manuel pour Contao 3.2

Le hook getAllEvents vous permet de modifier les jeux de résultats produits par les modules calendrier et événements. Il passe le jeu de résultats courant, les ID des éléments parents et l'heure de début et de fin en arguments et attend un jeu de résultats (tableau) comme valeur de retour. Il est disponible à partir de la version 2.6.4.

// config.php $GLOBALS['TL_HOOKS']['getAllEvents'][] = array('MyClass', 'myGetAllEvents');

// MyClass.php public function myGetAllEvents($arrEvents, $arrCalendars, $intStart, $intEnd, Module $objModule) { ksort($arrEvents); return $arrEvents; } getAttributesFromDca

Le hook getAttributesFromDca vous permet de modifier les attributs de champs d'un formulaire. Il passe les attributs widget courants et un objet DataContainer en arguments et attend un tableau d'arguments comme valeur de retour. Il est disponible à partir de la version 3.2.RC1.

// config.php $GLOBALS['TL_HOOKS']['getAttributesFromDca'][] = array('MyClass', 'myGetAttributesFromDca');

// MyClass.php public function myGetAttributesFromDca($arrAttributes, $objDca) { // Faire quelque chose

return $arrAttributes; } getContentElement

Le hook getContentElement est déclenché lorsqu'un élément de contenu est rendu. Il passe l'objet Database et une chaîne- tampon (buffer string) en arguments et attend une chaîne-tampon comme valeur de retour. Il est disponible à partir de la version 2.9.0.

// config.php $GLOBALS['TL_HOOKS']['getContentElement'][] = array('MyClass', 'myGetContentElement');

// MyClass.php public function myGetContentElement(Database_Result $objElement, $strBuffer) { return $strBuffer; } getImage

Le hook getImage est déclenché quand une vignette est générée et vous permet d'ajouter une routine personnalisée. Il passe le chemin d'accès, la largeur et la hauteur, la mode, le nom du cache et l'objet File en arguments et attend un chemin d'accès comme valeur de retour. Il est disponible à partir de la version 2.8.RC1.

// config.php $GLOBALS['TL_HOOKS']['getImage'][] = array('MyClass', 'myGetImage');

// MyClass.php public function myGetImage($image, $width, $height, $mode, $strCacheName, $objFile) {

Contao hooks 97 Manuel pour Contao 3.2

return MyImage::generateThumbnail($image, $widht, $height, $mode); } getPageIdFromUrl

Le hook getPageIdFromUrl est déclenché lors de l'évaluation des parties d'une URL. Il passe les fragments d'URL en argument et attend un tableau de fragments d'une URL en valeur de retour. Il est disponible depuis la version 2.5.4.

// config.php $GLOBALS['TL_HOOKS']['getPageIdFromUrl'][] = array('MyClass', 'myGetPageIdFromUrl');

// MyClass.php public function myGetPageIdFromUrl($arrFragments) { return array_unique($arrFragments); } getPageLayout

Le hook getPageLayout est exécutée avant d'initialiser le modèle front office. Il passe le modèle de la page, l'objet Model et une référence à l'objet Page en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 3.1.0.

// config.php $GLOBALS['TL_HOOKS']['getPageLayout'][] = array('MyClass', 'mygetPageLayout');

// MyClass.php public function mygetPageLayout(\PageModel $objPage, \LayoutModel $objLayout, \PageRegular $objPageRegular) { // Faire quelque chose } getSearchablePages

Le hook getSearchablePages est déclenché lors de la reconstruction de l'index de recherche. Il passe le tableau des pages et l'ID de la page racine en arguments et attend un tableau d'URLs absolues (!) comme valeur de retour. Il est disponible à partir de la version 2.2.0.

// config.php $GLOBALS['TL_HOOKS']['getSearchablePages'][] = array('MyClass', 'myGetSearchablePages');

// MyClass.php public function myGetSearchablePages($arrPages, $intRoot) { return array_merge($arrPages, array('Additional pages')); } initializeSystem

Le hook initializeSystem est déclenché lorsque le système est initialisé. Il est disponible à partir de la version 3.1.RC1.

// config.php $GLOBALS['TL_HOOKS']['initializeSystem'][] = array('MyClass', 'myInitializeSystem');

// MyClass.php public function myInitializeSystem() { // Faire quelque chose }

Contao hooks 98 Manuel pour Contao 3.2

importUser

Le hook importUser est déclenché lorsqu'un nom d'utilisateur ne peut être trouvé dans la base de données. Il passe le nom d'utilisateur, le mot de passe et le nom de la table en arguments et attend une valeur de retour de type booléen. Il est disponible à partir de la version 2.7.RC1.

// config.php $GLOBALS['TL_HOOKS']['importUser'][] = array('MyClass', 'myImportUser');

// MyClass.php public function myImportUser($strUsername, $strPassword, $strTable) { if ($strTable == 'tl_member') { // Importe l'utilisateur à partir d'un serveur LDAP if ($this->importUserFromLdap($strUsername, $strPassword)) { return true; } }

return false; } isVisibleElement

Le hook isVisibleElement est déclenché lors de la vérification si un élément doit être visible dans le front office ou non. Un "élément" dans ce cas signifie soit un article, soit un module de front office ou soit un élément de contenu. A la différence des trois autres hooks getArticle , getFrontendModule et getContentElement , on peut prévenir la création du balisage complet. Le hook passe le modèle de l'instance et l'état de visibilité courant en arguments et attend le nouvel état de visibilité comme valeur de retour. Il est disponible à partir de la version 3.2.RC1.

// config.php $GLOBALS['TL_HOOKS']['isVisibleElement'][] = array('MyClass', 'myIsVisibleElement');

// MyClass.php public function myIsVisibleElement($objElement, $blnIsVisible) { if ($objElement instanceof ContentElement) { // Vérifiez si cet élément de contenu peut être affiché if ($this->myElementCanBeShownInFrontend($objElement)) { return true; } }

// Sinon, nous ne voulons pas changer l'état de visibilité return $blnIsVisible; } listComments

Le hook listComments est déclenché lorsque des commentaires sont listés dans le back office. Il passe l'enregistrement courant en argument et attend une chaîne de caractères comme valeur de retour. Il est disponible à partir de la version 2.8.RC2.

// config.php $GLOBALS['TL_HOOKS']['listComments'][] = array('MyClass', 'myListComments');

Contao hooks 99 Manuel pour Contao 3.2

// MyClass.php public function myListComments($arrRow) { return '' . $arrRow['title'] . ''; } loadFormField

Le hook loadFormField est déclenché lorsqu'un champ de formulaire est chargé. Il passe l'objet Widget, l'ID et les données du formulaire en arguments et attend un objet Widget comme valeur de retour. Il est disponible à partir de la version 2.5.0.

// config.php $GLOBALS['TL_HOOKS']['loadFormField'][] = array('MyClass', 'myLoadFormField');

// MyClass.php public function myLoadFormField(Widget $objWidget, $strForm, $arrForm) { $objWidget->class = 'myclass'; return $objWidget; } loadDataContainer

Le hook loadDataContainer est déclenché lorsqu'un fichier DCA est chargé. Il passe le nom de fichier en argument et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.8.2.

// config.php $GLOBALS['TL_HOOKS']['loadDataContainer'][] = array('MyClass', 'myLoadDataContainer');

// MyClass.php public function myLoadDataContainer($strName) { // Faire quelque chose } loadLanguageFile

Le hook loadLanguageFile est déclenché au chargement d'un fichier de langues. Il passe le nom du fichier et la langue en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.8.RC1.

// config.php $GLOBALS['TL_HOOKS']['loadLanguageFile'][] = array('MyClass', 'myLoadLanguageFile');

// MyClass.php public function myLoadLanguageFile($strName, $strLanguage) { // Faire quelque chose } outputBackendTemplate

Le hook outputBackendTemplate est déclenché lors de l'affichage à l'écran d'un modèle du back office. Il passe le contenu et le nom du modèle en arguments et attend le contenu du modèle comme valeur de retour. Il est disponible à partir de la version 2.6.0.

// config.php

Contao hooks 100 Manuel pour Contao 3.2

$GLOBALS['TL_HOOKS']['outputBackendTemplate'][] = array('MyClass', 'myOutputBackendTemplate');

// MyClass.php public function myOutputBackendTemplate($strContent, $strTemplate) { if ($strTemplate == 'be_main') { // Modification de la sortie }

return $strContent; } outputFrontendTemplate

Le hook outputFrontendTemplate est déclenché lors de l'affichage à l'écran d'un modèle du front office. Il passe le contenu et le nom du modèle en arguments et attend le contenu du modèle comme valeur de retour. Il est disponible à partir de la version 2.6.0.

// config.php $GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = array('MyClass', 'myOutputFrontendTemplate');

// MyClass.php public function myOutputFrontendTemplate($strContent, $strTemplate) { if ($strTemplate == 'fe_page') { // Modification de la sortie }

return $strContent; } parseBackendTemplate

Le hook parseBackendTemplate est déclenché lorsqu'un modèle de back office est analysé ("parsé"). Il passe le contenu et le nom du modèle en arguments et attend le contenu du modèle comme valeur de retour. Il est disponible à partir de la version 2.6.0.

// config.php $GLOBALS['TL_HOOKS']['parseBackendTemplate'][] = array('MyClass', 'myParseBackendTemplate');

// MyClass.php public function myParseBackendTemplate($strContent, $strTemplate) { if ($strTemplate == 'be_main') { // Modification de la sortie }

return $strContent; } parseFrontendTemplate

Le hook parseFrontendTemplate est déclenché lors de l'analyse ("parsing") d'un modèle de front office. Il passe le contenu et le nom du modèle en arguments et attend le contenu du modèle comme valeur de retour. Il est disponible à partir de la version 2.6.0.

// config.php $GLOBALS['TL_HOOKS']['parseFrontendTemplate'][] = array('MyClass', 'myParseFrontendTemplate');

Contao hooks 101 Manuel pour Contao 3.2

// MyClass.php public function myParseFrontendTemplate($strContent, $strTemplate) { if ($strTemplate == 'ce_text') { // Modification de la sortie }

return $strContent; } parseTemplate

Le hook parseTemplate est déclenché avant le processus d'analyse d'un modèle. Il reçoit une instance Template (qui peut être FrontendTemplate ou BackendTemplate ) en argument et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.10.0.

// config.php $GLOBALS['TL_HOOKS']['parseTemplate'][] = array('MyClass', 'myParseTemplate');

// MyClass.php public function myParseTemplate($objTemplate) { if ($objTemplate->getName() == 'mod_html') { // Modifier l'objet } } postDownload

Le hook postDownload est déclenché après qu'un fichier ait été téléchargé avec l'élément téléchargement(s). Il passe le nom du fichier en argument et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.4.6.

// config.php $GLOBALS['TL_HOOKS']['postDownload'][] = array('MyClass', 'myPostDownload');

// MyClass.php public function myPostDownload($strFile) { // Faire quelque chose } postLogin

Le hook postLogin est déclenché après qu'un membre front office ou un utilisateur back office se soit identifié. Il passe l'objet User en argument et n'attend pas de valeur de retour.

// config.php $GLOBALS['TL_HOOKS']['postLogin'][] = array('MyClass', 'myPostLogin');

// MyClass.php public function myPostLogin(User $objUser) { // Faire quelque chose } postLogout

Contao hooks 102 Manuel pour Contao 3.2

Le hook postLogout est déclenché après qu'un membre front office ou un utilisateur back office se soit déconnecté. Il passe l'objet User en argument et n'attend pas de valeur de retour.

// config.php $GLOBALS['TL_HOOKS']['postLogout'][] = array('MyClass', 'myPostLogout');

// MyClass.php public function myPostLogout(User $objUser) { // Faire quelque chose } postUpload

Le hook postUpload est déclenché après qu'un utilisateur ait envoyé un ou plusieurs fichiers dans le back office. Il passe un tableau de noms de fichiers en argument et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.6.4.

// config.php $GLOBALS['TL_HOOKS']['postUpload'][] = array('MyClass', 'myPostUpload');

// MyClass.php public function myPostUpload($arrFiles) { // Faire quelque chose } prepareFormData

Le hook prepareFormData est déclenché après qu'un formulaire a été soumis. Il passe le tableau des données, le tableau des labels et l'objet du formulaire comme arguments et n'attend pas de valeur de retour. De cette façon, les données peuvent être modifiées ou étendues, avant l'exécution des actions comme l'envoi de messagerie ou le stockage de données. Il est disponible à partir de la version 3.0.0.

// config.php $GLOBALS['TL_HOOKS']['prepareFormData'][] = array('MyClass', 'myPrepareFormData');

// MyClass.php public function myPrepareFormData(&$arrSubmitted, $arrLabels, $objForm) { // Faire quelque chose } printArticleAsPdf

Le hook printArticleAsPdf est déclenché lorsqu'un article est exporté au format PDF. Il passe le texte de l'article et l'objet Article en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.8.RC1.

// config.php $GLOBALS['TL_HOOKS']['printArticleAsPdf'][] = array('MyClass', 'myPrintArticleAsPdf');

// MyClass.php public function myPrintArticleAsPdf($strArticle, Database_Result $objArticle) { // Faire quelque chose exit; }

Contao hooks 103 Manuel pour Contao 3.2

processFormData

Le hook processFormData est déclenché après la soumission d'un formulaire. Il passe le tableau des données du formulaire, le tableau conteneur de données et le tableau de fichiers en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.4.4.

// config.php $GLOBALS['TL_HOOKS']['processFormData'][] = array('MyClass', 'myProcessFormData');

// MyClass.php public function myProcessFormData($arrPost, $arrForm, $arrFiles) { // Faire quelque chose } removeOldFeeds

Le hook removeOldFeeds est déclenché lors de la suppression des vieux fichiers XML du répertoire de Contao. Il ne passe pas d'arguments et attend un tableau de noms de fichiers à conserver comme valeur de retour. Il est disponible à partir de la version 2.5.8.

// config.php $GLOBALS['TL_HOOKS']['removeOldFeeds'][] = array('MyClass', 'myRemoveOldFeeds');

// MyClass.php public function myRemoveOldFeeds() { return array('custom.xml'); } removeRecipient

Le hook removeRecipient est déclenché à la suppression d'un destinataire de newsletter. Il passe l'adresse e-mail et les ID de la liste de diffusion en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.8.RC1.

// config.php $GLOBALS['TL_HOOKS']['removeRecipient'][] = array('MyClass', 'myRemoveRecipient');

// MyClass.php public function myRemoveRecipient($strEmail, $arrChannels) { // Faire quelque chose } replaceInsertTags

Le hook replaceInsertTags est déclenché lorsqu'une balise d'insertion inconnue est trouvée. Il passe la balise d'insertion en argument et attend la valeur de remplacement ou false comme valeur de retour. Il est disponible à partir de la version 2.6.0.

// config.php $GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('MyClass', 'myReplaceInsertTags');

// MyClass.php public function myReplaceInsertTags($strTag) { if ($strTag == 'mytag') {

Contao hooks 104 Manuel pour Contao 3.2

return 'mytag replacement'; }

return false; } reviseTable

Le hook reviseTable est déclenché lorsque Contao supprime d'une table des enregistrements orphelins. Il passe le nom de la table courante, les ID de tous les nouveaux enregistrements, le nom de la table parente, et les noms de toutes les tables enfants en arguments et attend un booléen comme valeur de retour (le retour de la valeur true provoque le rechargement de la page courante). Il est disponible à partir de la version 2.6.4.

// config.php $GLOBALS['TL_HOOKS']['reviseTable'][] = array('MyClass', 'myReviseTable');

// MyClass.php public function myReviseTable($table, $new_records, $parent_table, $child_tables) { // Faire quelque chose } setNewPassword

Le hook setNewPassword est déclenché après la saisie d'un nouveau mot de passe. Il passe l'objet User et le mot de passe crypté en arguments et n'attend pas de valeur de retour. Il est disponible à partir de la version 2.2.3.

// config.php $GLOBALS['TL_HOOKS']['setNewPassword'][] = array('MyClass', 'mySetNewPassword');

// MyClass.php public function mySetNewPassword($objUser, $strPassword) { // Faire quelque chose } validateFormField

Le hook validateFormField est déclenché à la soumission d'un champ de formulaire. Il passe l'objet Widget et l'ID du formulaire en arguments et attend un objet Widget comme valeur de retour. Il est disponible à partir de la version 2.5.0.

// config.php $GLOBALS['TL_HOOKS']['validateFormField'][] = array('MyClass', 'myValidateFormField');

// MyClass.php public function myValidateFormField(Widget $objWidget, $intId) { if ($objWidget instanceof FormPassword) { // Faire quelque chose }

return $objWidget; }

Contao hooks 105 Manuel pour Contao 3.2

Référentiel d'extensions

Pour publier votre propre extension dans le référentiel d'extensions, vous avez besoin d'un compte de contributeur. Une fois que vous êtes connecté, vous pouvez accéder à l'interface du développeur du référentiel d'extensions par l'intermédiaire des liens "Manage extensions" et "Manage translations".

Référentiel d'extensions 106 Manuel pour Contao 3.2

Ajout d'une extension

Pour ajouter une nouvelle extension, suivez le lien "Manage extensions" et cliquez sur le bouton "Add extension". Vous serez redirigé vers un formulaire où vous pouvez entrer les détails de l'extension. La boîte jaune au-dessus contient des informations importantes sur les conventions de nommage, que vous devriez lire attentivement.

Les catégories suivantes sont actuellement disponibles :

Catégorie Description

Application L'extension est une application autonome.

Plugin L'extension est une librairie PHP ou JavaScript.

Theme L'extension est un thème pour le back office.

Utility L'extension est un programme utilitaire pour le back office.

Widget L'extension est un widget de formulaire.

Translation L'extension est une traduction d'une version de Contao.

Bundle Un ensemble d'extensions qui peuvent être installées simultanément.

Other L'extension n'entre dans aucune des catégories précédentes.

Ajout d'une extension 107 Manuel pour Contao 3.2

Ajouter une release

Après avoir créé une extension, vous pouvez ajouter une première release. Chaque nouvelle version d'une extension sera enregistrée comme une release séparée. Ouvrez les gestionnaire de releases grâce à l'icône de navigation correspondante et cliquez sur le bouton "Add release".

Les numéros de versions dans le référentiel d'extensions sont formés de trois blocs de chiffres qui indiquent s'il s'agit d'une version majeure, mineure ou de maintenance (par exemple 1.0.0 ) ainsi qu'un statut de développement sous forme de texte (par exemple beta1 ).

Status Description

alpha1 - alpha3 Indique qu'il s'agit d'une version alpha.

beta1 - beta3 Indique qu'il s'agit d'une version bêta.

rc1 - rc3 Indique qu'il s'agit d'une version release candidate.

stable Indique qu'il s'agit d'une version stable pour des systèmes en production.

Ajouter une release 108 Manuel pour Contao 3.2

Ajouter des fichiers

Vous devez ensuite ajouter des fichiers à la nouvelle release. Ouvrez le gestionnaire de fichiers, et cliquez sur le bouton "Add/update files". Vous pouvez téléverser des fichiers individuellement ou des archives .zip complètes. Assurez-vous de choisir le bon répertoire cible, afin que les chemins d'accès soient corrects à l'issue de l'envoi.

Ajouter des fichiers 109 Manuel pour Contao 3.2

Ajout de fichiers à partir d'un référentiel GitHub

Les fichiers peuvent également être importés à partir d'un référentiel GitHub, si vous avez tagué la release et poussé le tag vers le référentiel central de GitHub.

Entrez l'URL HTTPS du référentiel GitHub dans les paramètres.

Vous pouvez également spécifier le nom du répertoire racine de votre référentiel. Dans ce cas, les fichiers et les répertoires en dehors de ce répertoire racine seront ignorés lors de l'importation.

Si vous sélectionnez un tag, ses fichiers seront téléchargés automatiquement et seront alors disponibles comme lors d'un téléversement manuel.

Ajout de fichiers à partir d'un référentiel GitHub 110 Manuel pour Contao 3.2

Ajouter des traductions

Avant de pouvoir publier une extension, vous devez créer au moins une traduction. Ouvrez le gestionnaire de traductions et cliquez sur le bouton "Add language". Il est recommandé de toujours créer une traduction anglaise, car les utilisateurs de back office ne voient généralement, dans le gestionnaire d'extensions, que les extensions disponibles dans leur propre langue ou en anglais (langue par défaut).

Les traductions complétées peuvent être publiées en cliquant sur l'icône de navigation correspondante.

Ajouter des traductions 111 Manuel pour Contao 3.2

Ajouter des dépendances

Peut-être que l'une de vos extensions utilise les fonctionalités d'une autre extension comme par exemple les tâches planifiées (cron jobs). Pour faire fonctionner votre extension, l'installation de l'extension cron constitue donc un pré-requis, généralement appelé dépendance. Ces dépendances peuvent être enregistrées dans le référentiel d'extensions, de telle sorte que les modules nécessaires soient automatiquement installés lorsque vous installez une extension particulière.

Choisissez d'abord l'extension que vous souhaitez ajouter en tant que dépendance et confirmez votre choix en cliquant sur le bouton "Continue". Puis sélectionnez la version minimale et maximale dont le fonctionnement avec votre extension est reconnu.

Ajouter des dépendances 112 Manuel pour Contao 3.2

Publier une extension

Après avoir créé au minimum une release, téléversé au minimum un fichier, publié au minimum une traduction et ajouté les dépendances nécessaires, vous pouvez publier l'extension grâce à l'icône de navigation correspondante. Notez que vous ne pouvez plus supprimer l'extension une fois qu'elle est publiée. Pour vérifier si tout fonctionne comme prévu, connectez- vous dans le back office et faites un test d'installation avec le gestionnaire d'extensions.

Publier une extension 113 Manuel pour Contao 3.2

Développement de Contao

Le site internet de développement de Contao, qui est la base du développement continu de Contao, est disponible sur github.com/contao. Il contient par exemple un journal des modifications passées et des futures fonctionnalités (milestones) ainsi qu'un système de tickets pour signaler des problèmes ou demander de nouvelles fonctionnalités. Il prend également en charge la navigation dans le référentiel du code de Contao, où vous pouvez voir exactement quels fichiers ont changés.

Développement de Contao 114 Manuel pour Contao 3.2

Création d'un nouveau ticket

Tout d'abord, veuillez noter que vous devez être connecté pour créer de nouveaux tickets. L'inscription sur GitHub est gratuite. Ensuite, connectez-vous à votre compte et cliquez sur "New Issue" dans le menu principal.

Toujours décrire les éventuels problèmes en détail et faites-nous savoir comment les reproduire à partir de la démonstration en ligne ou dans notre environnement de développement. Si un problème se produit uniquement dans votre installation, mais pas dans la démonstration en ligne, veuillez s'il vous plaît consulter le forums.

Création d'un nouveau ticket 115