UN MOTEUR DE TEMPLATE (GÉRE LES SOUS-BLOCS À TOUS LES NIVEAUX)

The_Template Messages postés 16 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 19 décembre 2005 - 14 nov. 2005 à 19:22
cs_craso Messages postés 55 Date d'inscription mardi 6 juin 2006 Statut Membre Dernière intervention 20 janvier 2009 - 1 sept. 2006 à 20:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34639-un-moteur-de-template-gere-les-sous-blocs-a-tous-les-niveaux

cs_craso Messages postés 55 Date d'inscription mardi 6 juin 2006 Statut Membre Dernière intervention 20 janvier 2009
1 sept. 2006 à 20:13
bon alors je crois qu'il suffit de rajouter une condition (if(isset($this->blocs)):
function traitement($sous_blocs='non')
{
if (isset($this->blocs))
{
$fin_bloc=array_keys($this->blocs);
$i=0;
while(array_key_exists($i, $fin_bloc))
{
$j=$i-1;
if($j>-1 and $sous_blocs='sous_blocs')
{
$this->blocs[$fin_bloc[$i]]=preg_replace('!<\!--'.$fin_bloc[$j].'-->(.+)<\!--/'.$fin_bloc[$j].'-->!isU', $this->blocs[$fin_bloc[$j]], $this->blocs[$fin_bloc[$i]]);
}
$this->template=preg_replace('!<\!--'.$fin_bloc[$i].'-->(.+)<\!--/'.$fin_bloc[$i].'-->!isU', $this->blocs[$fin_bloc[$i]], $this->template);
$i++;
}
}
return $this->template;
}

ca devrait suffir
cs_craso Messages postés 55 Date d'inscription mardi 6 juin 2006 Statut Membre Dernière intervention 20 janvier 2009
1 sept. 2006 à 19:04
j'ai la même erreur que les autres.
Sinon c'est un script comme celui-là sur lequel je travaille en ce moment.
crevettegreg Messages postés 5 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 29 janvier 2006
29 janv. 2006 à 17:10
Bonjour,

J'ai également l'erreur :

Warning: array_keys(): The first argument should be an array in d:\www\auc\site\templates.inc.php on line 100

Warning: array_key_exists(): The second argument should be either an array or an object in d:\www\auc\site\templates.inc.php on line 103


Avez vous une idée ?
Merci, car sinon, c'est plutot pas mal comme petite source
crevettegreg Messages postés 5 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 29 janvier 2006
29 janv. 2006 à 17:09
Bonjour,

J'ai également l'erreur :

Warning: array_keys(): The first argument should be an array in d:\www\auc\site\templates.inc.php on line 100

Warning: array_key_exists(): The second argument should be either an array or an object in d:\www\auc\site\templates.inc.php on line 103


Avez vous une idée ?
Merci, car sinon, c'est plutot pas mal comme petite source ^^
Biboops Messages postés 2 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 janvier 2009
29 nov. 2005 à 17:43
Je n'est pas compris l'utilisation des sous bloc
Pourrais tu fournir un exemple

Merci
The_Template Messages postés 16 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 19 décembre 2005
22 nov. 2005 à 19:02
Je ne sais pas, c'est bizarre car moi ca marche très bien je m'en sers en ce moment même.
As tu fais $template->traitement(TRUE) ?
Si oui, l'erreur vient peut-être de là.
cseagle Messages postés 99 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 5 août 2009
22 nov. 2005 à 12:46
Bonjour,

Je suis en train d'essayer d'utiliser ta classe et j'ai l'erreur suivante :

Warning: array_keys(): The first argument should be an array in d:\www\auc\site\templates.inc.php on line 100

Warning: array_key_exists(): The second argument should be either an array or an object in d:\www\auc\site\templates.inc.php on line 103

Alors que je n'utilise pas $template->bloc

Une idée ?
shoghi Messages postés 18 Date d'inscription jeudi 19 septembre 2002 Statut Membre Dernière intervention 18 septembre 2007
16 nov. 2005 à 22:03
Merci "The_Template" pour ta réponse. Je vais jeter un coup d'oeil sur ton fichier manuel.htm

@+

Shoghi
The_Template Messages postés 16 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 19 décembre 2005
16 nov. 2005 à 13:38
Lol je connais le css merci, le fichier html de 42ko est le code coloré avec un script php, qui ne produit qu'un fichier html avec des choses pas jolies genre style="", alors forcement, c'est lourd.
stepibou Messages postés 112 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 11 octobre 2006
15 nov. 2005 à 23:51
salut,
Je sais qu'on est là sur un site de php, mais quand je vois un fichier html de 42ko!,
je suis surpris! à quoi il sert?
pour augmenter les performance il faut utiliser des css :
padding, margin, clear, float, overflow, position, min-height, etc...
sinon pour le php, rien à redire,
a+
The_Template Messages postés 16 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 19 décembre 2005
15 nov. 2005 à 18:00
Bonjour.

Shosghi -> les templates servent à séparer le code php du html nottement dans le cadre d'un travail en équipe codeur/graphiste.
Si ca t'interresse j'ai détaillé un peu ca dans le manuel.htm (lol j'avais rien d'autre à faire^^)

Mozzito -> Non le code source html a été fait avec un script ^^

FhX -> Tu as raison poue le str_replace, j'avais commencé comme ca mais ca ne marchait pas (je n'ai toujours pas compris pourquoi, mon code avait l'air très correct) et ca m'as tellement pris la tête que j'ai mis un preg_replace. Pour la rapidité ca dépend en fait du nombre du foi que sera appelé le preg_replace car dans l'absolu un preg_replace est plus rapide qu'un str_replace.
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
15 nov. 2005 à 12:32
"# //si oui, on la remplace par sa valeur
# $this->template=preg_replace('!{'.$variable.'}!', $valeur, $this->template);"

Beurk, question vitesse ca doit pas rouler sur l'or :p

La solution la plus simple est bien sur de tester si la pair clé/valeur est bon. Cependant, il ne faut pas tout de suite remplacé la clé par sa valeur.
Imagine que j'ai environ 60 variables. Tu imagines que je fasse 60 fois un preg_replace ?!
Nonon, le mieux à faire, est de garder ca en mémoire, dans le genre :
$this->var[$key] = $val;
Et ensuite, d'utiliser un simple $this->template = str_replace( array_keys($this->var), array_values($this->var), $this->template);

C'est plus rapide de faire un str_replace plutot que 60 fois un preg_replace, je me trompe ? ;)
shoghi Messages postés 18 Date d'inscription jeudi 19 septembre 2002 Statut Membre Dernière intervention 18 septembre 2007
15 nov. 2005 à 09:57
Bonjour, je suis débutant en php. Je remarque souvent que les templates sont utilisés. Pouvez-vous m'en dire en deux mots l'utilité?

Désolé si cette question vous semble peut-être bêbête.

Merci d'avance.

Shoghi
mozzito Messages postés 4 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 15 novembre 2005
15 nov. 2005 à 04:41
Je viens de le télécharger et tout fonctionne...

Ta classe à l'air correcte mais je me suis pas encore plongé dedans. ;P

Le fichier "Code_source.htm" à été construit avec un log, un script php, ou tout à la main :/ ?...
The_Template Messages postés 16 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 19 décembre 2005
14 nov. 2005 à 19:22
Apperement le Zip a buggé c'est pas du tout ca qu'il y a ......
Rejoignez-nous