en très rapide parce que malheureusement ce soir je suis super chargé
ma structure FTP :
. => j'ai cmsms
./forum => j'ai fluxbb
./forum/tplcmsms => répertoire
./forum/tplcmsms/index.html => fichier vide pour éviter l'index du contenu
./forum/tplcmsms/tpl.php => fichier de conf cmsms vers fluxbb
les contenus de fichiers :
index.html
Code :
<!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="fr" lang="fr">
<head>
<title>Page vierge</title>
</head>
<body>:)
</body>
</html>
tpl.php
Code :
<?php
$cmsms = array();
//Lecture du fichier de cache
$root_url = "http://www.cmsmadesimple.fr";
$filename = PUN_ROOT."tplcmsms/cache.php";
//echo '<!--'.$filename .'-->';
if(is_file($filename))
{
require($filename);
$cmsms = $cmsarr;
} else
{
$cms = file_get_contents("$root_url/xsa/plu");
#$cms = str_replace('<base href="'.$root_url.'/" />','<base href="'.$root_url.'/forum/" />',$cms);
$cms = str_replace('<base href="'.$root_url.'/" />','',$cms);
$searchD = '<link rel="stylesheet" type="text/css" href="'.$root_url.'/tmp/cache/';
$searchF = '.css"';
$posD = stripos($cms, $searchD);
$arrayOldCss = array();
$arrayNewCss = array();
while($posD !== FALSE)
{
$posF = stripos($cms, $searchF, $posD);
$mycss = substr($cms, $posD + 45, $posF - $posD - 45 + 4);
$mycssContent = file_get_contents($mycss);
$mynewcss = str_replace('/tmp/cache/', '/forum/tplcmsms/', $mycss);
$filenamecss = "./tplcmsms/".substr($mynewcss, stripos($mynewcss, '/forum/tplcmsms/') + strlen('/forum/tplcmsms/'));
//creation du fichier de cache pour css
$handle = @fopen($filenamecss , "w");
if (fwrite($handle, $mycssContent) === FALSE) {
echo "Impossible d'ecrire dans le fichier ($filenamecss)";
exit;
}
fclose($handle);
$arrayOldCss[] = $mycss;
$arrayNewCss[] = $mynewcss;
$posD = stripos($cms, $searchD, $posF);
}
for($i = 0; $i < count($arrayOldCss); $i++)
{
$cms = str_replace($arrayOldCss[$i], $arrayNewCss[$i],$cms);
}
$cms = explode('<CMSMS>',$cms);
$cmsms = array();
// $cmsms['<http>'] = $cms[0];
$cmsms['<CMS_header_content>'] = $cms[1];
//$cmsms['</head>'] = $cms[2];
$cmsms['<CMS_body_haut>'] = $cms[3];
$cmsms['<CMS_js>'] = $cms[4];
//$cmsms['<body_centre>'] = $cms[5];
$cmsms['<CMS_body_bas>'] = $cms[6];
//$cmsms['</body>'] = $cms[7];
//creation du fichier de cache
$handle = @fopen($filename, "w");
if (fwrite($handle, print_out($cmsms)) === FALSE) {
echo "Impossible d'ecrire dans le fichier ($filename)";
exit;
}
fclose($handle);
}
$tpl_main = cmsms_parse($cmsms,'<CMS_header_content>', $tpl_main);
$tpl_main = cmsms_parse($cmsms,'<CMS_body_haut>', $tpl_main);
$tpl_main = cmsms_parse($cmsms,'<CMS_body_bas>', $tpl_main);
$tpl_main = cmsms_parse($cmsms,'<CMS_js>', $tpl_main);
function cmsms_parse($cmsms, $balise,$tpl)
{
if(!isset($cmsms[$balise]))
{
return $tpl;
}
return str_replace($balise, $cmsms[$balise], $tpl);
}
function print_out($cmsms)
{
$buffer = '<?php
$cmsarr = array();
';
foreach($cmsms as $key => $value)
{
$buffer .= '$cmsarr["'.$key.'"] =
<<<TEXT
'.$value.'
TEXT;
';
}
$buffer .= '
?>';
return $buffer;
}
?>
Dans CmsMadeSimple tu dupliques ton gabarit et tu parsèmes le code de balise <CMSMS> afin de le structurer
Je m'explique par un exemple simple, voici un gabarit vide que j'ai enrichit de balise
Code :
{process_pagedata}
<!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="en" >
<head>
<title>{sitename} - {title}</title>
{metadata}
<CMSMS>
{cms_stylesheet}
<CMSMS>
</head>
<CMSMS>
<body>
<!-- start header -->
<div id="header">
<h1>{sitename}</h1>
</div>
<!-- end header -->
<!-- start menu -->
<div id="menu">
{menu}
</div>
<!-- end menu -->
<CMSMS>
<!-- start content -->
<div id="content">
<h1>{title}</h1>
{content}
</div>
<!-- end content -->
<CMSMS>
</body>
</html>
ce code sera donc disséqué en 5 paquets par mon programme :
Code :
{process_pagedata}
<!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="en" >
<head>
<title>{sitename} - {title}</title>
{metadata}
Code :
<!-- start header -->
<body>
<div id="header">
<h1>{sitename}</h1>
</div>
<!-- end header -->
<!-- start menu -->
<div id="menu">
{menu}
</div>
<!-- end menu -->
Code :
<!-- start content -->
<div id="content">
<h1>{title}</h1>
{content}
</div>
<!-- end content -->
Ces 5 paquets sont disponible dans l'array $cms de mon programme (ligne 60 de tpl.php)
Tous ne sont pas utile, par exemple dans notre cas il faut penser à conserver $cms[1] et $cms[3] pour respectivement le CSS et le menu de ton site sous CmsMadeSimple.
Il faut donc modifier tpl.php afin de coller à notre exemple, je remplace donc
Code :
$cmsms = array();
// $cmsms['<http>'] = $cms[0];
$cmsms['<CMS_header_content>'] = $cms[1];
//$cmsms['</head>'] = $cms[2];
$cmsms['<CMS_body_haut>'] = $cms[3];
$cmsms['<CMS_js>'] = $cms[4];
//$cmsms['<body_centre>'] = $cms[5];
$cmsms['<CMS_body_bas>'] = $cms[6];
//$cmsms['</body>'] = $cms[7];
par
Code :
$cmsms = array();
$cmsms['<CMS_css>'] = $cms[1];
$cmsms['<CMS_menu>'] = $cms[3];
Une fois cela fait tu créés une page et tu lui affecte ton gabarit. Tu change l'url de cette page pour une url complexe moi j'ai choisit /xsa/plu. Cette url doit correspondre avec la ligne 17 de tpl.php donc si tu choisit une url plus complexe oublie pas de répercuter dans tpl.php
Au passage tu penses à changer l'url de ton site (ligne 6 de tpl.php)
Fin de la première partie