Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Module forum
#5

en très rapide parce que malheureusement ce soir je suis super chargé Wink

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 :
{cms_stylesheet}
Code :
</head>
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 -->
Code :
</body>
</html>

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
Répondre


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)