Mise en page
Créez site21 en copiant site20.
- /cms
- ...
- site20
- site21
Dans ce chapitre, nous allons créer un accès direct à un nœud d'un fil par défaut avec une mise en page spécifique.
Pour tester le résultat en ligne, entrez http://www.frasq.org/cms/site21 dans la barre d'adresse de votre navigateur. Cliquez sur le lien Informations légales dans le pied de page de la page d'accueil. Le site affiche le nœud 1 du fil 1 avec une mise en page simple.
Créez l'action page
en ajoutant le fichier page.php dans le dossier actions avec le contenu suivant :
- /cms/site21
- actions
- page.php
- actions
- require_once 'models/thread.inc';
- function page($lang, $arglist=false) {
- $page=false;
- if (is_array($arglist)) {
- if (isset($arglist[0])) {
- $page=$arglist[0];
- }
- }
- if (!$page) {
- return run('error/notfound', $lang);
- }
- $thread_id = 1;
- $page_id = thread_node_id($thread_id, $page);
- if (!$page_id) {
- return run('error/notfound', $lang);
- }
- $r = thread_get_node($lang, $thread_id, $page_id);
- if (!$r) {
- return run('error/notfound', $lang);
- }
- extract($r); /* node_name node_title node_abstract node_cloud node_nocomment */
- $page_name=$node_name;
- $page_title=$node_title;
- $page_abstract=$node_abstract;
- $page_cloud=$node_cloud;
- $page_contents = build('nodecontent', $lang, $page_id);
- head('title', $page_title);
- head('description', $page_abstract);
- head('keywords', $page_cloud);
- $validate='/' . $lang . '/'. $page_name;
- $banner = build('banner', $lang, compact('validate'));
- $content = view('page', false, compact('page_name', 'page_title', 'page_contents'));
- $output = layout('standard', compact('banner', 'content'));
- return $output;
- }
Remarquez que l'action page
recherche les nœuds dans le fil 1.
Donnez accès à l'action page
en ajoutant un alias par langue dans le fichier includes/aliases.inc :
- 'page' => 'page',
- 'page' => 'page',
Comme la vue ne dépend pas de la langue, ajoutez-la directement dans le dossier views :
- /cms/site21
- views
- page.phtml
- views
- <h3><?php echo htmlspecialchars($page_title, ENT_COMPAT, 'UTF-8'); ?></h3>
- <?php
- if ($page_contents) {
- echo $page_contents;
- }
- ?>
Ajoutez la fonction thread_get_node
dans le fichier models/thread.inc :
- function thread_get_node($lang, $thread_id, $node_id) {
- $sqllang=db_sql_arg($lang, false);
- $tabthreadnode=db_prefix_table('thread_node');
- $tabnode=db_prefix_table('node');
- $tabnodelocale=db_prefix_table('node_locale');
- $sql="SELECT tn.number AS node_number, nl.name AS node_name, nl.title AS node_title, nl.abstract AS node_abstract, nl.cloud AS node_cloud FROM $tabthreadnode tn JOIN $tabnode n ON n.node_id=tn.node_id JOIN $tabnodelocale nl ON nl.node_id=tn.node_id AND nl.locale=$sqllang WHERE tn.thread_id=$thread_id AND tn.node_id=$node_id LIMIT 1";
- $r = db_query($sql);
- return $r ? $r[0] : false;
- }
thread_get_node
retourne tous les attributs pour la langue $lang
du nœud dont l'identifiant est $node_id
qui est dans le fil dont l'identifiant est $thread_id
, ou false
en cas d'erreur.
Entrez http://localhost/cms/site21/fr/page/informations-legales dans la barre d'adresse de votre navigateur. Essayez la version en anglais à l'adresse http://local.frasq.org/cms/site21/en/page/legal-information.
Modifiez l'analyse d'une URL dans la fonction route
définie dans le fichier library/engine.php pour que l'action page
devienne l'action par défaut :
- return array('page', $args);
La dernière étape consiste à ajouter un lien dans le pied de page.
- /cms/site21
- views
- fr
- footer.phtml
- en
- footer.phtml
- fr
- views
- <p><a href="<?php echo $contact_page; ?>">Contact</a> | <a href="<?php echo $base_path; ?>/fr/informations-legales">Informations légales</a> | <img src="<?php echo $base_path; ?>/images/ubuntu.png" alt="" width="16" height="16" /> <a href="http://www.ubuntu.com" target="_blank">Ubuntu</a></p>
- <p><a href="<?php echo $contact_page; ?>">Contact</a> | <a href="<?php echo $base_path; ?>/en/legal-information">Legal information</a> | <img src="<?php echo $base_path; ?>/images/ubuntu.png" alt="" width="16" height="16"/> <a href="http://www.ubuntu.com" target="_blank">Ubuntu</a></p>
Entrez http://localhost/cms/site21/fr dans la barre d'adresse de votre navigateur. Cliquez sur le lien Informations légales dans le pied de page. Vérifiez la version en anglais.
Commentaires