Fork me on GitHub






Thème avec layout variable (1,2 ou 3 colonnes)
Aspirant
Inscrit: 29/11/2004 16:13
Messages: 79
Bonjour,

je suis actuellement dans la mise au point d'un thème pour Xoops.
Je travaille sur le thème "default" pour supprimer les balises <table> et n'utiliser que les balises <div> afin de simplifier le code du fichier theme.html et le rendre compatible W3C et CSS.

J'ai réussi à modifier le thème default en gardant l'apparence initiale.
Toutefois je me retrouve avec un petit problème sur le positionnement CSS entre les colonnes gauche/droite et la colonne centrale.
J'observe des chevauchements et des débordements du contenu des modules du cadre de ma page.

De plus j'aimerais aussi améliorer le thème par défaut afin que le bloc central utilise toute la place si je n'active aucune colonne de gauche et de droite.

voici mon fichier theme.html actuel :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<{$xoops_langcode}>" lang="<{$xoops_langcode}>">
    <
head>
        <
meta http-equiv="content-type" content="text/html; charset=<{$xoops_charset}>" />
        <
meta http-equiv="content-language" content="<{$xoops_langcode}>" />
        <
meta name="robots" content="<{$xoops_meta_robots}>" />
        <
meta name="keywords" content="<{$xoops_meta_keywords}>" />
        <
meta name="description" content="<{$xoops_meta_description}>" />
        <
meta name="rating" content="<{$xoops_meta_rating}>" />
        <
meta name="author" content="<{$xoops_meta_author}>" />
        <
meta name="copyright" content="<{$xoops_meta_copyright}>" />
        <
meta name="generator" content="XOOPS" />
        <
title>
            <{if 
$xoops_pagetitle !=''}><{$xoops_pagetitle}> - <{/if}><{$xoops_sitename}> 
        </
title>
        <
link href="<{$xoops_url}>/favicon.ico" rel="SHORTCUT ICON" />
        <
link rel="stylesheet" type="text/css" media="screen" href="<{$xoops_url}>/xoops.css" />
        <
link rel="stylesheet" type="text/css" media="screen" href="<{$xoops_themecss}>" />
<!-- 
RMVadded module header -->
        <{
$xoops_module_header}> <script type="text/javascript">
<!--
<{
$xoops_js}>
//-->



</script> 
    </head>
    <body>
        <div id="conteneur">
            <div id="header">
                <div id="headerlogo">
                    &nbsp; 
                </div>
                <div id="headerbanner">
                    <{$xoops_banner}> 
                </div>
            </div>
            <div id="headerbar" colspan="2">
<!--appel de la navbar multimenu-->
                <{foreach item=block from=$xoops_lblocks}> <{if $block.title == 'navbar'}> <{$block.content}> <{/if}> <{/foreach}> 
            </div>
<!-- test pour affichage éventuel de blocs dans la colonne gauche -->
            <{if $xoops_showlblock == 1}> 
            <div id="leftcolumn">
<!-- Début de la boucle pour affichage des blocs dans la colonne de gauche -->
                <{foreach item=block from=$xoops_lblocks}> 
<!-- pour cacher la navbar en colonne de gauche-->
                <{if $block.title != 'navbar'}> <{include file="xhtml/theme_blockleft.html"}> <{/if}> <{/foreach}> 
<!-- Fin de la boucle pour affichage des blocs dans la colonne de gauche -->
            </div>
            <{/if}> 
<!-- test pour affichage éventuel de blocs dans la colonne droite -->
            <{if $xoops_showrblock == 1}> 
            <div id="rightcolumn">
<!-- Début de la boucle pour affichage des blocs dans la colonne de droite -->
                <{foreach item=block from=$xoops_rblocks}> <{include file="xhtml/theme_blockright.html"}> <{/foreach}> 
<!-- Fin de la boucle pour affichage des blocs dans la colonne de droite -->
            </div>
            <{/if}> 
<!-- fin du test pour affichage éventuel de blocs dans la colonne droite -->
            <div id="centercolumn">
<!-- Test pour vérifier s'il faut afficher des blocs au centre de la page -->
                <{if $xoops_showcblock == 1}> 
                <div id="centerCcolumn">
<!-- Début de la boucle pour affichage des blocs centrés dans la colonne du milieu  -->
                    <{foreach item=block from=$xoops_ccblocks}> <{include file="xhtml/theme_blockcenter_c.html"}> <{/foreach}> 
<!-- Fin de la boucle pour affichage des blocs centrés dans la colonne du milieu -->
                </div>
                <div id="centerLcolumn">
<!-- Début de la boucle pour affichage des blocs centrés-gauche dans la colonne du milieu -->
                    <{foreach item=block from=$xoops_clblocks}> <{include file="xhtml/theme_blockcenter_l.html"}> <{/foreach}> 
<!-- Fin de la boucle pour affichage des blocs centrés-gauche dans la colonne du milieu -->
                </div>
                <div id="centerRcolumn">
<!-- Début de la boucle pour affichage des blocs centrés-droit dans la colonne du milieu -->
                    <{foreach item=block from=$xoops_crblocks}> <{include file="xhtml/theme_blockcenter_r.html"}> <{/foreach}> 
<!-- Fin de la boucle pour affichage des blocs centrés-droit dans la colonne du milieu -->
                </div>
                <{/if}> 
<!-- Fin du test sur l'affichage des blocs dans la colonne du milieu -->
<!-- Affichage du contenu du module actuel -->
                <div id="content">
                    <{$xoops_contents}> 
                </div>
                

                
<!-- fin de l'affichage du contenu du module actuel -->
            </div>
            <div id="footerbar">
                <{$xoops_footer}> 
            </div>
<!-- fin du conteneur -->
        </div>
    </body>
</html>



et le fichier style.css qui lui est associé :
body {colorblackbackgroundwhitemargin0padding0;}

table {width100%; margin5padding5font-sizesmall}
table td {padding0border-width0vertical-aligntopfont-familyVerdanaArialHelveticasans-serif;}

{color#666666; text-decoration: none; font-weight: bold; background-color: transparent;}
a:hover {color#ff6600;}

h1 {}
h2 {}
h3 {}
h4 {}
h5 {}
ul margin2pxpadding2px; list-styledecimal insidetext-alignleft;}
li margin-left2px; list-stylesquare insidecolor#2F5376}

input.formButton {}

.
item {border1px solid #cccccc;}
.itemHead {padding3pxbackground-color#2F5376; color: #FFFFFF;}
.itemInfo {text-alignrightpadding3pxbackground-color#efefef}
.itemTitle a {font-size130%; font-weightboldfont-variantsmall-capscolor#ffffff; background-color: transparent;}
.itemPoster {font-size90%; font-style:italic;}
.
itemPostDate {font-size90%; font-style:italic;}
.
itemStats {font-size90%; font-style:italic;}
.
itemBody {padding-left5px;}
.
itemText {margin-top5pxmargin-bottom5pxline-height1.5em;}
.
itemText:first-letter {font-size133%; font-weightbold;}
.
itemFoot {text-alignrightpadding3pxbackground-color#efefef}
.itemAdminLink {font-size90%;}
.
itemPermaLink {font-size90%;}

th {background-color#2F5376; color: #FFFFFF; padding : 2px; vertical-align : middle; font-family: Verdana, Arial, Helvetica, sans-serif;}

#conteneur {
margin:0 auto;
background-colorwhite;
}

#header {
height80px;
background-color#2F5376;
}

#headerlogo {
    
background-imageurl("images/logo.gif");
    
background-repeatno-repeat;
    
width150px;
    
height80px;
    
floatleft;
}

#headerbanner {width: 100%; background-color: #2F5376; vertical-align: middle; text-align:center;}

#headerbar {height: 20px; border-bottom: 1px solid #dddddd; background-image: url(images/hbar.gif);}

#leftcolumn {float: left;width: 170px; border-right: 1px solid #cccccc; font-size:12px;}
#leftcolumn th {background-color: #2F5376; color: #FFFFFF; vertical-align: middle;}
#leftcolumn div.blockTitle {padding: 3px; background-color: #dddddd; color: #639ACE; font-weight: bold;}
#leftcolumn div.blockContent {padding: 3px; line-height: 120%; line-height: 120%;}


#centercolumn {font-size: 12px;/*margin-left: 170px;
margin-right170px;*/}
#centercolumn th {background-color: #2F5376; color: #FFFFFF; vertical-align: middle;}

#centerCcolumn, #bottomCcolumn {padding: 0px 3px 1px 3px;}
#centerCcolumn .blockTitle, #bottomCcolumn .blockTitle {padding: 3px; color: #639ACE; font-weight: bold; margin-top: 0px; margin-right: 0px;  margin-left: 0px;}
#centerCcolumn .blockContent, #bottomCcolumn .blockContent {border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 1px solid #dddddd; padding: 3px; margin-right: 0px;  margin-left: 0px; margin-bottom: 2px; line-height: 120%;}

#centerLcolumn, #bottomLcolumn, #centerRcolumn, #bottomRcolumn {
    
width50%; padding0px 3px 0px 0px;
}
#centerLcolumn .blockTitle, #bottomLcolumn .blockTitle, #centerRcolumn .blockTitle, #bottomRcolumn .blockTitle {
    
padding3pxcolor#639ACE; font-weight: bold; margin-top: 0px;
}
#centerLcolumn .blockContent, #centerRcolumn .blockContent, #bottomLcolumn .blockContent, #bottomRcolumn .blockContent {
    
border-left1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 1px solid #dddddd; padding: 3px; margin-left: 2px; margin-right: 3px; margin-bottom: 2px; line-height: 120%;
}

#content {text-align: left; padding: 8px;}

#rightcolumn {float:right; width: 170px; border-left: 1px solid #cccccc; font-size:12px;}
#rightcolumn th {background-color: #2F5376; color: #FFFFFF; vertical-align: middle;}
#rightcolumn div.blockTitle {padding: 3px; background-color: #dddddd; color: #639ACE; font-weight: bold;}
#rightcolumn div.blockContent {padding: 3px; line-height: 120%;}

#footerbar {text-align:center; background-image: url(hbar.gif);}

td#mainmenu a {background-color: #e6e6e6; display: block; margin: 0; padding: 4px;}
td#mainmenu a:hover {background-color: #ffffff;}
td#mainmenu a.menuTop {padding-left: 3px; border-top: 1px solid silver; border-right: 1px solid #666666; border-bottom: 1px solid #666666; border-left: 1px solid silver;}
td#mainmenu a.menuMain {padding-left: 3px; border-right: 1px solid #666666; border-bottom: 1px solid #666666; border-left: 1px solid silver;}
td#mainmenu a.menuSub {padding-left: 9px; border-right: 1px solid #666666; border-bottom: 1px solid #666666; border-left: 1px solid silver;}

td#usermenu a {background-color: #e6e6e6; display: block; margin: 0; padding: 4px; border-right: 1px solid #666666; border-bottom: 1px solid #666666; border-left: 1px solid silver;}
td#usermenu a:hover {background-color: #ffffff;}
td#usermenu a.menuTop {border-top: 1px solid silver;}
td#usermenu a.highlight {background-color: #fcc;}



.outer {border1px solid silver;}
.
head {background-color#c2cdd6; padding: 5px; font-weight: bold;}
.even {background-color#dee3e7; padding: 5px;}
.odd {background-color#E9E9E9; padding: 5px;}
.foot {background-color#c2cdd6; padding: 5px; font-weight: bold;}
tr.even td {background-color#dee3e7; padding: 5px;}
tr.odd td {background-color#E9E9E9; padding: 5px;}

div.errorMsg background-color#FFCCCC; text-align: center; border-top: 1px solid #DDDDFF; border-left: 1px solid #DDDDFF; border-right: 1px solid #AAAAAA; border-bottom: 1px solid #AAAAAA; font-weight: bold; padding: 10px;}
div.confirmMsg background-color#DDFFDF; color: #136C99; text-align: center; border-top: 1px solid #DDDDFF; border-left: 1px solid #DDDDFF; border-right: 1px solid #AAAAAA; border-bottom: 1px solid #AAAAAA; font-weight: bold; padding: 10px;}
div.resultMsg background-color #CCCCCC; color: #333333; text-align: center; border-top: 1px solid silver; border-left: 1px solid silver; font-weight: bold; border-right: 1px solid #666666; border-bottom: 1px solid #666666; padding: 10px;}

div.xoopsCode background#FFFFFF; border: 1px inset #000080; font-family: "Courier New",Courier,monospace; padding: 0px 6px 6px 6px;}
div.xoopsQuote background#FFFFFF; border: 1px inset #000080; font-family: "Courier New",Courier,monospace; padding: 0px 6px 6px 6px;}


.comTitle {font-weightboldmargin-bottom2px;}
.
comText {padding2px;}
.
comUserStat {font-size10pxcolor#2F5376; font-weight:bold; border: 1px solid silver; background-color: #ffffff; margin: 2px; padding: 2px;}
.comUserStatCaption {font-weightnormal;}
.
comUserStatus {margin-left2pxmargin-top10pxcolor#2F5376; font-weight:bold; font-size: 10px;}
.comUserRank {margin2px;}
.
comUserRankText {font-size10px;font-weight:bold;}
.
comUserRankImg {border0;}
.
comUserName {}
.
comUserImg {margin2px;}
.
comDate {font-weightnormalfont-styleitalicfont-sizesmaller}
.
comDateCaption {font-weightboldfont-stylenormal;}



Attention:
- j'ai déplacé les images du dossier "default" dans un dossier "images"
- j'ai aussi crée une surcharge du template pour "multimenu_dyn_horiz_css.html" dans mon dossier de thème.

J'ai un peu creusé du côté du thème zetareticuli mais celui-ci est trop complexe pour moi, ceci dit, il integre la fonction que je cherche :
obtenir une colonne centrale sur toute la largeur s'il n'y a ni colonne de droite ni colonne de gauche.


N.B. voici les infos XoopsInfo de mon environnement :
Url du site : http://localhost
Version de Xoops : XOOPS 2.0.15
Thème Xoops : default
Jeu de templates : default
Version PHP : 4.4.1
Version MySQL : 4.0.27-standard-log
Logiciel serveur : Apache/1.3.33 (Darwin) PHP/4.4.1
Statut safe mode : OFF
Register Globals : OFF
Navigateur : Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3
Support librairie GD : Désactivé (vignettes non disponibles)
Statut d'upload du serveur : ON
Taille maximum d'upload autorisée :


Merci de votre attention à très vite
--
olico

Posté le : 11/09/2006 18:24

--
olico
Partager Twitter Partagez cette article sur GG+
Re: Thème avec layout variable (1,2 ou 3 colonnes)
Xoops accro
Inscrit: 04/02/2003 01:54
De Le Mans
Messages: 12273
Pour en avoir réalisé quelques-uns, je pense qu'il serait plus judicieux de partir d'un template existant en effectuant une recherche sur google (ou autre) avec des mots comme : layout three columns xhtml css

Pour d'adapter ce template pour Xoops en t'aidant de cet article.

Posté le : 11/09/2006 22:16
Partager Twitter Partagez cette article sur GG+
Re: Thème avec layout variable (1,2 ou 3 colonnes)
Aspirant
Inscrit: 29/11/2004 16:13
Messages: 79
HELLO,

c'est effectivement ce que j'ai fait, je suis parti de cet article et j'ai suivi pas à pas la méthodologie.
Mais le layout n'est pas flexible. C'est-à-dire que lorsqu'il n'y a ni colonne de gauche, ni colonne de droite la colonne centrale reste de la même largeur avec la place pour les colonnes gauche et droite.

Je cherche à ce que ma colonne centrale puisse prendre la totalité de la largeur du site s'il n'y a pas de colonne gauche et/ou droite.

Ainsi avec un seul thème j'aurai un layout flexible capable de me proposer un thème à 1,2 ou 3 colonnes.
ça doit bien être possible car le theme zetareticuli le fait.

Il doit falloir ajouter des boucles conditionnelles et je ne suis pas encore assez expert pour ça.
Donc si vous avez ces compétences, je suis preneur.

Merci de votre soutien.
--
olico

Posté le : 12/09/2006 08:23

--
olico
Partager Twitter Partagez cette article sur GG+
Re: Thème avec layout variable (1,2 ou 3 colonnes)
Xoops accro
Inscrit: 04/02/2003 01:54
De Le Mans
Messages: 12273
Dans les mots clés que j'ai fourni pour la recherche, il convient d'ajouter en plus "equal height", voire header, footer.

Par rapport à ta dernière question, dans mon article j'abordai déjà ce genre de choses avec

Citation :

<!-- test pour affichage éventuel de blocs dans la colonne droite -->
<{if $xoops_showrblock == 1}>


Il faut donc adapter cela car il existe la même variable avec les blocs de gauche, le debug template smarty est capable de t'afficher ces variables, il suffit ensuite de faire les tests conditionnels pour déterminer le type de div à afficher.

Posté le : 12/09/2006 11:20
Partager Twitter Partagez cette article sur GG+
Re: Thème avec layout variable (1,2 ou 3 colonnes)
Aspirant
Inscrit: 29/11/2004 16:13
Messages: 79
Je te remecie pour tes réponses.

Mais, j'arrive dans la limite de mes compétences.
Je n'ai encore jamais fait de debug smarty et je ne sais pas comment m'y prendre pour faire les tests conditionnels.
Je vais chercher s'il y a de la doc.
Si tu as des pistes, je suis preneur.
Merci

J'ai rajouté ça à mon code :
...
</
head>
    <
body>
<!-- 
boucle pour tester le format du layout 1,2 ou 3 colonnes-->
<{if 
$xoops_showlblock == and $xoops_showrblock == 1}>
<{
assign var=columns_layout value='threecolumns-layout'}>
<{elseif 
$xoops_showlblock == 1}>
<{
assign var=columns_layout value='leftcolumn-layout'}>
<{elseif 
$xoops_showrblock == 1}>
<{
assign var=columns_layout value='rightcolumn-layout'}>
<{/if}>
<!-- 
FIN boucle pour tester le format du layout 1,2 ou 3 colonnes-->

        <
div id="conteneur" <{if $columns_layout}> class="<{$columns_layout}>"<{/if}>>


Je me suis inspiré du thème zetareticuli.

Pour l'instant aucun changement dans mon thème mais j'obtiens ceci dans la console debug smarty :
{$columns_layout}    threecolumns-layout
{$columnwidth}    100


Je pense qu'il faut que je crée maintenant les classes correspondantes dans mon fichier styles.css
A suivre...
--
olico

Posté le : 12/09/2006 12:23

Edité par olico sur 12/09/2006 12:47:28

--
olico
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

33 Personne(s) en ligne (27 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 33 | Plus ...