Bonsoir tout le monde.
Pour les besoins de mon site web, j'ai créer un classe de templates et certaines fonctions qui me permettent d'éviter d'avoir 15000 fichiers mais je suis confronté a un gros probleme.
J'ai une fonction erase_bloc dans ma classe qui me permet d'enlever un bloc commenté de la facon suivante.
<?php
//class de template (c)2006 ltcf.net
//[email protected]
class template
{
var $template;
var $blocs;
var $contenu_blocs;
function template($fichier)
{
if(file_exists($fichier))
{
$this->template=file_get_contents($fichier);
$this->blocs=array();
$this->contenu_blocs=array();
}
else
{
exit('Template introuvable');
}
}
function assign($variable,$valeur)
{
$this->template=str_replace('{'.$variable.'}',$valeur,$this->template);
}
function erase_bloc($bloc_name)
{
if(preg_match('!<\!--'.$bloc_name.'-->(.+)<\!--/'.$bloc_name.'-->!isU', $this->template))
{
$this->template = preg_replace('!<\!--'.$bloc_name.'-->(.+)<\!--/'.$bloc_name.'-->!isU', '', $this->template);
}
else
{
die('Le bloc "'.$bloc_name.'" n\'existe pas');
}
}
function assign_bloc($nom_bloc,$tableau)
{
$array_recherche=array('<!--'.$nom_bloc.'-->','<!--/'.$nom_bloc.'-->');
$array_remplace=array('','');
if(!isset($this->blocs[$nom_bloc]))
{
$tableau_ereg=array();
ereg('<!--'.$nom_bloc.'-->(.*)<!--/'.$nom_bloc.'-->',$this->template,$tableau_ereg);
$this->blocs[$nom_bloc]=$tableau_ereg[0];
} while(list($cle,$valeur)=each($tableau))
{
$array_recherche[]='{'.$cle.'}';
$array_remplace[]=$valeur;
}
if(!isset($this->contenu_blocs[$nom_bloc]))
{
$this->contenu_blocs[$nom_bloc]=str_replace($array_recherche,$array_remplace,$this->blocs[$nom_bloc]);
}
else
{
$this->contenu_blocs[$nom_bloc].=str_replace($array_recherche,$array_remplace,$this->blocs[$nom_bloc]);
}
}
function afficher_blocs()
{
while(list($cle,$valeur)=each($this->contenu_blocs))
{
$this->template=str_replace($this->blocs[$cle],$valeur,$this->template);
}
}
function afficher()
{
$this->afficher_blocs();
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true)
{
$this->template = preg_replace('!<\!--connnexion_box-->(.+)<\!--/connnexion_box-->!isU', '', $this->template);
}
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true)
{
$this->template = preg_replace('!<\!--link_connexion-->(.+)<\!--/link_connexion-->!isU', '', $this->template);
}
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == false || isset($_SESSION['user_level']) && $_SESSION['user_level'] != 2)
{
$this->template = preg_replace('!<\!--if_is_admin-->(.+)<\!--/if_is_admin-->!isU', '', $this->template);
}
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == false)
{
$this->template = preg_replace('!<\!--if_is_member--\>(.+)<\!--/if_is_member--\>!isU', '', $this->template);
}
if(!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] == true)
{
$this->template = preg_replace('!<\!--if_is_not_member--\>(.+)<\!--/if_is_not_member--\>!isU', '', $this->template);
}
echo $this->template;
}
function return_content()
{
$this->afficher_blocs();
return $this->template;
}
}
?>
Maintenant, mon probleme est que j'en ai un peu marre a chaque fois que j'ajoute un affichage dans le tpl des news de remettre a jour tous les erase_bloc()...
Ma question est: Est il possible de faire une fonction qui me permettrait de ne récuperer dans $this->template que le contenu d'un bloc selectionné dans une fonction telle que $this->select_bloc ?
@+ et merci d'avance pour votre aide
Bonsoir tout le monde.
Pour les besoins de mon site web, j'ai créer un classe de templates et certaines fonctions qui me permettent d'éviter d'avoir 15000 fichiers mais je suis confronté a un gros probleme.
J'ai une fonction erase_bloc dans ma classe qui me permet d'enlever un bloc commenté de la facon suivante.
[php]
<?php
//class de template (c)2006 ltcf.net
//
[email protected] class template
{
var $template;
var $blocs;
var $contenu_blocs;
function template($fichier)
{
if(file_exists($fichier))
{
$this->template=file_get_contents($fichier);
$this->blocs=array();
$this->contenu_blocs=array();
}
else
{
exit('Template introuvable');
}
}
function assign($variable,$valeur)
{
$this->template=str_replace('{'.$variable.'}',$valeur,$this->template);
}
function erase_bloc($bloc_name)
{
if(preg_match('!<\!--'.$bloc_name.'-->(.+)<\!--/'.$bloc_name.'-->!isU', $this->template))
{
$this->template = preg_replace('!<\!--'.$bloc_name.'-->(.+)<\!--/'.$bloc_name.'-->!isU', '', $this->template);
}
else
{
die('Le bloc "'.$bloc_name.'" n\'existe pas');
}
}
function assign_bloc($nom_bloc,$tableau)
{
$array_recherche=array('<!--'.$nom_bloc.'-->','<!--/'.$nom_bloc.'-->');
$array_remplace=array('','');
if(!isset($this->blocs[$nom_bloc]))
{
$tableau_ereg=array();
ereg('<!--'.$nom_bloc.'-->(.*)<!--/'.$nom_bloc.'-->',$this->template,$tableau_ereg);
$this->blocs[$nom_bloc]=$tableau_ereg[0];
} while(list($cle,$valeur)=each($tableau))
{
$array_recherche[]='{'.$cle.'}';
$array_remplace[]=$valeur;
}
if(!isset($this->contenu_blocs[$nom_bloc]))
{
$this->contenu_blocs[$nom_bloc]=str_replace($array_recherche,$array_remplace,$this->blocs[$nom_bloc]);
}
else
{
$this->contenu_blocs[$nom_bloc].=str_replace($array_recherche,$array_remplace,$this->blocs[$nom_bloc]);
}
}
function afficher_blocs()
{
while(list($cle,$valeur)=each($this->contenu_blocs))
{
$this->template=str_replace($this->blocs[$cle],$valeur,$this->template);
}
}
function afficher()
{
$this->afficher_blocs();
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true)
{
$this->template = preg_replace('!<\!--connnexion_box-->(.+)<\!--/connnexion_box-->!isU', '', $this->template);
}
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true)
{
$this->template = preg_replace('!<\!--link_connexion-->(.+)<\!--/link_connexion-->!isU', '', $this->template);
}
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == false || isset($_SESSION['user_level']) && $_SESSION['user_level'] != 2)
{
$this->template = preg_replace('!<\!--if_is_admin-->(.+)<\!--/if_is_admin-->!isU', '', $this->template);
}
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == false)
{
$this->template = preg_replace('!<\!--if_is_member--\>(.+)<\!--/if_is_member--\>!isU', '', $this->template);
}
if(!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] == true)
{
$this->template = preg_replace('!<\!--if_is_not_member--\>(.+)<\!--/if_is_not_member--\>!isU', '', $this->template);
}
echo $this->template;
}
function return_content()
{
$this->afficher_blocs();
return $this->template;
}
}
?>
[/php]
Maintenant, mon probleme est que j'en ai un peu marre a chaque fois que j'ajoute un affichage dans le tpl des news de remettre a jour tous les erase_bloc()...
Ma question est: Est il possible de faire une fonction qui me permettrait de ne récuperer dans $this->template que le contenu d'un bloc selectionné dans une fonction telle que $this->select_bloc ?
@+ et merci d'avance pour votre aide