Comment réaliser ou adapter un thème ?
Depuis la version 1.0beta1 GCweb lance un assistant à l'adaptation de thème si celui-ci n'est pas encore compatible avec votre type de collection.
Pour réaliser un thème (changer l'apparence de GCweb) le plus simple est de s'inspirer du thème par défaut. Mais vous trouverez ci-dessous quelque information complémentaire.
Note : Une fois votre thème réalisé si vous voulez le partager signalez le moi via le forum (n'oubliez pas de spécifié le type de licence, par exemple CC by-nc-sa).
Quelques termes utilisé qui pourraient de pas être claire
Un certains fichiers sont obligatoires
Fichier | Commentaire |
---|---|
/head.php | Partie haute commune à toutes les pages (entête html, titre et description du site …) |
/foot.php | Partie basse commune à toutes les pages (Pub pour GCweb, fermeture des balises body et html) |
/main.php | Partie centrale de la page d'acceuil listant les différentes collection |
/list_<type>.php | Partie centrale de la page listant les éléments de la collection |
/item_<type>.php | Partie centrale de la page affichant le détail d'un éléments |
/model_add | Fichier listant les modèles de page additionnel |
/img/nocover.??? | Image de remplacement quand celle de l'élément n'est pas trouvé |
D'autres optionnels
Fichier | Commentaire |
---|---|
/……_<type>.php | D'autre partie centrale (devant être listée dans “/model_add”). Par exemple dans le thême par défaut “menu_<type>.php” (le menu commun à toute les page), “/cloud_<type>.php” (nuage de mot clef) et “/search_<type>.php” (recherche avancée) |
/img/<type>_nocover.??? | Image de remplacement pour le type de collection spécifique (si elle n'existe pas “/img/nocover.???” serra utilisé) |
+---------------------+ | HEAD | | (head.php) | +---------------------+ | MIDDLE | | (main.php, | | list_<type>.php, | | item_<type>.php, | | ...) | +---------------------+ | FOOT | | (foot.php) | +---------------------+
Si pour une page (flux RSS par exemple) vous ne souhaitez pas avoir de HEAD ou FOOT vous pouvez mettre n'importe ou dans MIDDLE ~~ NOHEAD ~~
ou ~~ NOFOOT ~~
.
Les fichiers du thème sont à écrire en php5. Toutes les fonctions de php5 peuvent être utilisée y compris les inculde
et require
. Il est donc possible d'inclure un autre fichier (comme le menu dans le thème par défaut).
Afin de facilité l'affichage des champs (liste des genres …) une série de fonction disponible dans le fichier func4tpl.php. Attention n'afficher jamais des champs avec “echo” sans être passer par une des fonctions de func4tpl.php ! Certain caractères (comme les , < >
) s'afficheront mal car ils sont remplacés afin de ne pas rentrer en conflit avec certaine fonctionnalité de gcweb.
Nom | Type | Contient | disponible |
---|---|---|---|
$info | array | Les informations entrée dans le fichier de configuration. | partout |
$collec | array | Les informations de la collection active (ou de la 1ère si elle n'est pas spécifée). Voir :gcweb:documentation:$collec pour plus de détail. | partout |
$bdd | array | Tableau de tous les élément de la collection (à parcourir avec un foreach. Chaque élément aura une structure identique à $item) | tout les “MIDDLE” |
$items | array | Tableau contenant les élément de la collection à afficher sur la page (idem $bdd) | tout les “MIDDLE” |
$item | array | Les information sur l'élément. Le nom de la clef est le nom du champ du fichier xml de sauvegarde. Quand un champs contient une liste d'élément (genres, auteurs …) la valeur est un tableau. | item_<type>.php (tous les “MIDDLE” à partir de svn#261) |
Explication pour réalisé les fichiers
(Disponible partir de la SVN rev8)
Fichier texte se trouvant dans le dossier du thème listant les modèles de pages additionnel du thème.
Les caractères après un # seront ignoré (possibilité de mettre des commentaires). Ne pas dépasser les 255 caractères par ligne (y compris les commentaires).
Exemple :
menu # menu commun pour chaque type de collection main # parti intégrer à la page d'accueil search # recherche avancée cloud # nuage de mots clef, auteurs ... exportpage # page avec les liens pour les différents type d'export exportfunction # fonction d'exportation
Partie au sommet de chaque page.
Elle doit contenir :
<html>…<head>…</head>
).<body>
” commune a toute les pages.code type :
<html> <head> ... </head> <body> <!-- code commun du haut de chaque page du site --> <div> <h1><?php aff($info['title']) ?></h1> <p><?php aff($info['description']) ?></p> </div> <div> <p>Charger une autre collection <?php aff_chooseCollec() ?></p> </div> <div> <!--Affichage des éventuelles messages d'erreur ou d'avertissement --> <?php aff($msg) ?> </div>
Partie ce trouvant en bas de chaque page.
Elle doit contenir :
</html>
).code type :
<!-- code commun du pied de chaque page du site --> <div> <p>Les informations des élément de cette collection peuvent provenir de source externe. Consultez le lien source pour les connaître.</p> <p>Propulsé par <a href="http://jonas.tuxfamily.org/wiki/gcweb/">GCweb</a></p> </div> </body> </html>
Contenu de la page d'acceuil.
Elle contiendra par exemple la liste de collection
code type :
<!-- listing des collections --> <?php foreach ($info['collections'] as $collec) { if (!$collec['private']) { #regarde si c est une collection privée ?> <div> <h2><a href="<?php aff_hrefModel('list') ?>"><?php aff($collec['title']) ?>"</a></h2> <p><?php aff($collec['description']) ?></p> <p><a href="<?php aff_hrefModel('list') ?>">Voir la collection</a></p> </div> <?php } } ?>
Contenu de la page listant les éléments d'une collection. Il est nécessaire de faire une boucle php pour afficher les différents éléments.
code type :
<!-- Navigation entre les pages --> <?php aff_prevPage(5,' - ') ; aff_currentPage() ; aff_nextPage(5,' - ') ?> <?php for ($items as $item) { /*** Début de la boucle affichant les items ********************/ ?> <!-- code type de chaque item. --> <h4><?php aff_linkitem($item, $item['title'])?></h4> <img src="<?php image($item['cover'],'auto',120) ?>"> <ul> <li>auteurs : <?php aff_filter('authors==',$item['authors']) ?></li> <li>genre : <?php aff_filter('genre==',$item['genre'])?></li> <li>Note : <?php aff_star($item['rating']) ?></li> <li><a href="<?php aff($item['web'])?>">Source</a></li> </ul> <?php /*** Fin de la boucle ******************************************/ } ?> <!-- code suivant le listage des items -->
Contenu affichant les informations d'un item
code type :
<h2><?php aff_linkitem($item, $item['title'])?></h2> <img src="<?php aff_image($item['cover'],'auto',320) ?>" /> <ul> <li>Isbn : <?php aff($item['isbn'])?></li> <li>Auteurs : <?php aff_filter('authors==',$item['authors']) ? </li> <li>Genre : <?php aff_filter('genre==',$item['genre'])?></li> <li>Description : <?php aff($item['description'])?></li> <li>Note : <?php aff_star($item['rating']) ?></li> <li><a href="<?php aff($item['web'])?>">Source</a></li> </ul>
(Fichier optionnel)
Contenu de la page des nuages.
code type :
<h3>Auteurs</h3> <?php aff_cloud('authors') ?> <h3>Genre</h3> <?php aff_cloud('genre') ?>
(Fichier optionnel)
Contenu de la page de recherche.
code type :
<?php search('start') /*Obligatoire, marque le début du formulaire*/?> <ul> <li>Titre : <?php aff_search('title','str') /*Affiche les conditions et un champs de recherche pour le titre*/ ?></li> <li>Auteurs : <?php aff_search('authors','list') /*Affiche les conditions et une liste des possiblitée*/?></li> </ul> <strong>OU</strong> Requete :<br/> <?php aff_search('request') ?> <?php search('submit') /*Obligatoire, boutons pour lancer la recharche*/?> <?php search('end') /*Obligatoire, marque la fin du formulaire*/?>