Structure d'un thème

Structure d'un thème

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Dernière mise à jour : 08/06/2014 à 21h32
Nous allons présenter, ici, la structure d'un thème phpboost V4.1 . Nous avons pris pour exemple le thème de base.







Le répertoire d'un thème est constitué de la manière suivante : [img]https://lh6.googleusercontent.com/OmwueUryfYaxN_7mZILkfak7ZrY1DZ3MivqSt69V9v1mavqVMmG4O2nk2JHiGwbcpQ=w1371-h673[/img]







La racine du thème









On retrouve à la racine du thème les fichiers body.tpl, config.ini et frame.tpl.







Le fichier body.tpl



Le fichier body.tpl contient le contenu de la balise html <body> qui encadre le code html.



On y retrouve l'architecture même du site web avec le positionnement des éléments tels que l'en-tête, la colonne de gauche, le contenu central ou le pied de pâge. Si vous souhaitez positionner les éléments d'une manière différentes, c'est le fichier à modifier.



Les éléments comme {MENUS_LEFT_CONTENT} correspondent au endroit d'affectation des modules dans la gestion de menu de phpboost.







Code HTML :
    # INCLUDE MAINTAIN #
    <header id="header">
        <div id="site-infos">
            <div id="site-logo" # IF C_HEADER_LOGO #style="background: url('{HEADER_LOGO}') no-repeat;"# ENDIF #></div>
            <div id="site-name-container">
                <a id="site-name" href="{PATH_TO_ROOT}/">{SITE_NAME}</a>
                <span id="site-slogan">{SITE_SLOGAN}</span>
            </div>
        </div>
        <div id="top-header">
            # IF C_MENUS_HEADER_CONTENT #
            {MENUS_HEADER_CONTENT}
            # ENDIF #
        </div>
        <div id="sub-header">
            # IF C_MENUS_SUB_HEADER_CONTENT #
            {MENUS_SUB_HEADER_CONTENT}
            # ENDIF #
        </div>
        <div class="spacer"></div>
    </header>
 
    <div id="global">
        # IF C_COMPTEUR #
        <div id="compteur">
            <span class="text-strong">{L_VISIT}:</span> {COMPTEUR_TOTAL}
            <br />
            <span class="text-strong">{L_TODAY}:</span> {COMPTEUR_DAY}
        </div>
        # ENDIF #
 
        # IF C_MENUS_LEFT_CONTENT #
        <aside id="menu-left">
            {MENUS_LEFT_CONTENT}
        </aside>
        # ENDIF #
 
        # IF C_MENUS_RIGHT_CONTENT #
        <aside id="menu-right">
            {MENUS_RIGHT_CONTENT}
        </aside>
        # ENDIF #
 
        <div id="main" role="main">
            # IF C_MENUS_TOPCENTRAL_CONTENT #
            <div id="top-content">
                {MENUS_TOPCENTRAL_CONTENT}
            </div>
            <div class="spacer"></div>
            # ENDIF #
            <div id="main-content" itemprop="mainContentOfPage">
                # INCLUDE ACTIONS_MENU #
                <nav id="breadcrumb" itemprop="breadcrumb">
                    <ol>
                        <li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
                            <a href="{START_PAGE}" title="{L_INDEX}" itemprop="url">
                                <span itemprop="title">{L_INDEX}</span>
                            </a>
                        </li>
                        # START link_bread_crumb #
                            <li itemscope itemtype="http://data-vocabulary.org/Breadcrumb" # IF link_bread_crumb.C_CURRENT # class="current" # ENDIF #>
                                # IF link_bread_crumb.C_CURRENT #
                                <span itemprop="title">{link_bread_crumb.TITLE}</span>
                                # ELSE #
                                <a href="{link_bread_crumb.URL}" title="{link_bread_crumb.TITLE}" itemprop="url">
                                    <span itemprop="title">{link_bread_crumb.TITLE}</span>
                                </a>
                                # ENDIF #
                            </li>
                        # END link_bread_crumb #
                    </ol>
                </nav>
                {CONTENT}
            </div>
            # IF C_MENUS_BOTTOM_CENTRAL_CONTENT #
            <div id="bottom-content">
                {MENUS_BOTTOMCENTRAL_CONTENT}
            </div>
            # ENDIF #
        </div>
        # IF C_MENUS_TOP_FOOTER_CONTENT #
        <div id="top-footer">
            {MENUS_TOP_FOOTER_CONTENT}
            <div class="spacer"></div>
        </div>
        # ENDIF #
 
        <div class="spacer"></div>
    </div>
    <footer id="footer">
        # IF C_MENUS_FOOTER_CONTENT #
        <div class="footer-content">
            {MENUS_FOOTER_CONTENT}
        </div>
        # ENDIF #
        <div class="footer-infos">
            <span>
                {L_POWERED_BY} <a href="http://www.phpboost.com" title="PHPBoost">PHPBoost {PHPBOOST_VERSION}</a> {L_PHPBOOST_RIGHT}
            </span>    
            # IF C_DISPLAY_BENCH #
            <span>
                &nbsp;|&nbsp;        
                {L_ACHIEVED} {BENCH}{L_UNIT_SECOND} - {REQ} {L_REQ} - {MEMORY_USED}
            </span>    
            # ENDIF #
            # IF C_DISPLAY_AUTHOR_THEME #
            <span>
                | {L_THEME} {L_THEME_NAME} {L_BY} <a href="{U_THEME_AUTHOR_LINK}">{L_THEME_AUTHOR}</a>
            </span>
            # ENDIF #
        </div>
    </footer>








Le fichier config.ini



Le fichier config.ini permet d'afficher des informations sur le thème et de lui attribuer une configuration par défaut qui sera appliquée lorsque celui-ci sera installé.







L'article Fichier de configuration d'un thème config.ini détaille le contenu du fichier afin de vous permettre de le modifier simplement.







Code TXT :
author="PHPBoost"
author_mail="contact@phpboost.com"
author_link="http://www.phpboost.com"
version=4.1
date="05/08/12"
compatibility=4.1
require_copyright=0
html_version=5.0 Strict
css_version=3.0
columns_disabled=right
variable_width=0
width="980px"
pictures="theme/images/theme.jpg,theme/images/admin.jpg"








Le fichier frame.tpl



Le fichier frame.tpl contient la partie structurante de la page html. Il contient la balise d'en-tête HTML <head>.



La modification de ce fichier n'est nécessaire que si vous souhaitez ajouter un nouveau fichier css ou du code javascript sur l'ensemble du site.







Code HTML :
<!DOCTYPE html>
<html lang="{L_XML_LANGUAGE}">
    <head>
        <title>{TITLE}</title>
        <meta charset="iso-8859-1" />
        <meta name="description" content="{SITE_DESCRIPTION}" />
        <meta name="keywords" content="{SITE_KEYWORD}" />
        <meta name="generator" content="PHPBoost {PHPBOOST_VERSION}" />
 
        <!-- Theme CSS -->
        # IF C_CSS_CACHE_ENABLED #
        <link rel="stylesheet" href="${CSSCacheManager::get_css_path('/templates/default/theme/default.css;/kernel/lib/css/font-awesome/css/font-awesome.css;/templates/{THEME}/theme/design.css;/templates/{THEME}/theme/global.css;/templates/{THEME}/theme/content.css')}" type="text/css" media="screen, print, handheld" />
        # ELSE #
        <link rel="stylesheet" href="{PATH_TO_ROOT}/templates/default/theme/default.css" type="text/css" media="screen, print, handheld" />
        <link rel="stylesheet" href="{PATH_TO_ROOT}/kernel/lib/css/font-awesome/css/font-awesome.css" />
        <link rel="stylesheet" href="{PATH_TO_ROOT}/templates/{THEME}/theme/design.css" type="text/css" media="screen" />
        <link rel="stylesheet" href="{PATH_TO_ROOT}/templates/{THEME}/theme/global.css" type="text/css" media="screen, print, handheld" />
        <link rel="stylesheet" href="{PATH_TO_ROOT}/templates/{THEME}/theme/content.css" type="text/css" media="screen, print, handheld" />
        # ENDIF #
 
        <!-- Modules CSS -->
        {MODULES_CSS}
 
        # IF C_FAVICON #
        <link rel="shortcut icon" href="{FAVICON}" type="{FAVICON_TYPE}" />
        # ENDIF #
 
        # INCLUDE JS_TOP #
    </head>
 
    <body itemscope="itemscope" itemtype="http://schema.org/WebPage">
        # INCLUDE BODY #
        # INCLUDE JS_BOTTOM #
    </body>
</html>








Le répertoire images



Le répertoire images contient les images du thème qui ne sont pas associées à un fichier CSS.



Par défaut, le répertoire ne contient que l'image no_avatar.png.







Le répertoire lang et le fichier desc.ini



Le répertoire lang contient un répertoire par langue.



Par défaut, celui-ci contient un répertoire english et french.



Chaque répertoire ne contient qu'un seul fichier desc.ini.







Le fichier desc.ini contient les éléments identifiants le thème que l'on retrouve dans l'administration des thèmes du panneau d'administration. On y retrouve le nom du thème name, la description desc et les couleurs principales main_color. La valeur de name peut être différente du nom du répertoire.



Code TEXT :
name="Base"
desc="The PHPBoost official theme."
main_color="White, Blue"








Le répertoire theme









Le répertoire thème contient les différents fichiers CSS du thème ainsi que les images associés à ce thème.







Les fichiers CSS



Chaque thème est constitué des 3 fichiers CSS suivant :
  • content.css : Il contient les classes propres au contenu du site (messages, modules).
  • design.css : Il contient toutes les classes de mises en forme du sites (Le gros du Design)
  • global.css : il contient toutes les classes utiles sur le site et communes aux différents modules.



Vous retrouverez le contenu de chaque fichier dans l'article associé à chaque fichier.







Le répertoire images



Le répertoire images du sous dossier theme, contient les images appelées par les fichiers CSS ou TPL du thème.



Pour le thème de base on y retrouve :
  • admin.jpg : Un rendu du panneau d'administration
  • body.png : L'image de fond du body
  • logo.png : Le logo de base
  • theme.png : Un rendu du thème (Vu du site)







La grande différence avec un thème 4.0 est la quantité d'images. L'utilisation de la librairie Font-Awesome a permis de réduire considérablement le nombre d'image dans un thème et donc la taille. Si néanmoins vous souhaitez revenir à des images, lisez l'article suivant pour voir un exemple de modification.







Le répertoire modules









Ce répertoire n'est pas obligatoire, il est nécessaire uniquement lorsque vous souhaitez appliquer des modifications au design d'un module de façon spécifique à un thème.



S'il existe, son contenu est le suivant : [img]https://drive.google.com/file/d/0BxPj6PJldGS4TWtoQmNLcGozems/edit?usp=sharing[/img]



Il contient un répertoire par module. Le nom du répertoire doit être identique au module que l'on souhaite "surcharger". Les fichiers contenu dans ce répertoire remplacent les fichiers des modules.



Chaque répertoire de module peut contenir les fichiers .tpl ou .css que l'on souhaite remplacer.







Pour en savoir plus sur la personnalisation d'un thème, vous pouvez consulter cet article.D'une manière générale il est préférable de modifier un thème que de modifier le module. Cela permet notamment de faciliter les mises à jours des modules.