Personnalisation de l'interface publique » History » Version 25
Simon, 07/04/2012 04:50 PM
| 1 | 18 | Simon | {{>toc}} |
|---|---|---|---|
| 2 | 1 | Simon | |
| 3 | 22 | Simon | h1. Personnalisation de l'interface publique |
| 4 | 1 | Simon | |
| 5 | |||
| 6 | 17 | Simon | |
| 7 | |||
| 8 | 24 | Simon | h2. Personnalisation graphique - |
| 9 | 1 | Simon | |
| 10 | 24 | Simon | h3. Les thèmes |
| 11 | 1 | Simon | |
| 12 | 24 | Simon | |
| 13 | 20 | Simon | Pour ajouter un thème, procéder en 3 étapes : |
| 14 | * Dupliquer le dossier _/templates/public/default/_ et renommer le (par exemple en _/templates/public/montheme/_ ). |
||
| 15 | 23 | Simon | * Rendez-vous sur l'interface d'administration, menu _configuration_. Dépliez l'onglet _Thèmes des interfaces_. Votre nouveau thème apparaît et vous pouvez désormais le sélectionner. |
| 16 | 17 | Simon | * Modifiez les fichiers contenus dans _/templates/public/montheme/_ à votre convenance. |
| 17 | |||
| 18 | 1 | Simon | |
| 19 | 24 | Simon | h3. Les templates publics - mise en page |
| 20 | 17 | Simon | |
| 21 | Vous souhaitez modifier une page ou ajouter dynamiquement du contenu en créant vos propres fonctions, c'est possible. Tous les fichiers contenus dans _/public/dist/_ peuvent être réécris. |
||
| 22 | 1 | Simon | |
| 23 | 24 | Simon | La logique de l'application est simple : si l'utilisateur a défini son fichier alors celui-ci est prioritaire sur le fichier par défaut. |
| 24 | 1 | Simon | |
| 25 | Par exemple, pour la page d'accueil, linea21 charge par défaut le fichier _/public/dist/tpl_home.php_. Si vous souhaitez modifier ce fichier, copiez _tpl_home.php_ dans _/templates/public/montheme/_ et faites vos modifications. Rafraîchissez la page depuis votre navigateur, vous constaterez que les changements ont étés pris en compte. |
||
| 26 | |||
| 27 | 24 | Simon | Les templates publics sont pris en charge par la fonction *distInclude()*. |
| 28 | 1 | Simon | |
| 29 | |||
| 30 | 24 | Simon | h2. Personnalisation fonctionnelle |
| 31 | 1 | Simon | |
| 32 | |||
| 33 | |||
| 34 | 24 | Simon | h3. L'override |
| 35 | |||
| 36 | L'override s'applique aussi bien à l'interface publique qu'à l'interface d'administration. Une [[Override|page dédiée]] expliquant le principe est disponible sur ce wiki. |
||
| 37 | |||
| 38 | Attention, le dossier _override_ doit contenir la même arborescence que le fichier d'origine. Par exemple : _/templates/public/montheme/override/news/display.php_. |
||
| 39 | |||
| 40 | |||
| 41 | |||
| 42 | h3. Le fichier _display.php_ |
||
| 43 | |||
| 44 | |||
| 45 | 8 | Simon | Il est possible d'implémenter vos propres fonctions d'affichage, définir des traitements ou même re-définir les fonctions livrées avec l'application. |
| 46 | |||
| 47 | Prenons un exemple concret : |
||
| 48 | |||
| 49 | 24 | Simon | Je souhaite pouvoir utiliser ma propre fonction hello_world() dans le module d'actualités. Comme précédemment expliqué, je crée donc le fichier _/templates/public/montheme/override/news/display.php_ avec le code suivant : |
| 50 | 1 | Simon | |
| 51 | 17 | Simon | <pre> |
| 52 | <code class="php"> |
||
| 53 | 1 | Simon | include_once('../news/display.php'); |
| 54 | |||
| 55 | // no need if the default module file is included |
||
| 56 | 8 | Simon | // include_once(themePath('../news/' . SQL . '.inc.php')); |
| 57 | |||
| 58 | |||
| 59 | 1 | Simon | function hello_world() { |
| 60 | return 'hello World !'; |
||
| 61 | 17 | Simon | } |
| 62 | 8 | Simon | |
| 63 | 17 | Simon | function DisplayOneNews($news_id) [ |
| 64 | 8 | Simon | echo hello_world(); |
| 65 | 17 | Simon | // la suite de mon traitement |
| 66 | 8 | Simon | } |
| 67 | </code></pre> |
||
| 68 | |||
| 69 | La première ligne de code me permet d'inclure les méthodes de base (sans avoir à les redéfinir - *version >= 1.4* ). |
||
| 70 | |||
| 71 | J'inclue le fichier SQL si je choisis de ne pas faire appel au fichier de référence du module. Dans le cas contraire (comme dans cet exemple), il est appelé automatiquement. |
||
| 72 | 1 | Simon | |
| 73 | 8 | Simon | Je définis ma fonction hello_world() jusqu'alors inexistante. |
| 74 | 1 | Simon | |
| 75 | 7 | Simon | Enfin, je re-définis la fonction DisplayOneNews() afin qu'elle réalise l'appel à ma fonction précédemment définie. Le "comportement de PHP concernant les fonctions conditionnelles":http://www.php.net/manual/fr/functions.user-defined.php va donner la priorité à la fonction définie par l'utilisateur. |