Page 1 sur 2
lien avec les templates smarty
Posté : 08 mai 2007, 14:15
par NoNos
Bonjour,
J'utilise le template smarty (je découvre), j'assigne une varible ainsi
$smarty->assign('racine', dirname(__FILE__));
et je souhaite la recupérer dans mon template pour inserer ma feuille de style ainsi
<link href="{$racine}/CSS/style.css" rel="stylesheet" type="text/css">
Dans ma log apache j'obtient l'erreur suivante
[Tue May 08 14:14:58 2007] [error] [client 127.0.0.1] File does not exist: c:/program files/easyphp1-8/www/livres113/smarty/templates/{$racine}/CSS/style.css
Merci de votre aide
Posté : 08 mai 2007, 14:41
par thehawk
essaye {racine] au lieu de {$racine}
Posté : 08 mai 2007, 14:47
par NoNos
Dans le contenue de ma page j'ai aviché la valeur de {$racine} elle est ok
Il y a un truc étrange dans IE la feuille de style est bien insérée
Posté : 08 mai 2007, 19:52
par Sékiltoyai
Tu peux nous mettre un petit peu plus de code (en gros la partie où tu génère la page avec smarty) ?
Posté : 08 mai 2007, 22:17
par NoNos
voila le code ou est généré la page avec smarty
Code : Tout sélectionner
<?php
// load Smarty library
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->template_dir = '/smarty/templates';
$smarty->config_dir = '/smarty/config';
$smarty->cache_dir = 'C:\Program Files\EasyPHP1-8\smarty\cache';
$smarty->compile_dir = 'C:\Program Files\EasyPHP1-8\smarty\templates_c';
$smarty->assign('racine', dirname(__FILE__));
$smarty->display('index.tpl');
?>
Posté : 08 mai 2007, 23:36
par Sékiltoyai
:-/
Et le template ?
Posté : 08 mai 2007, 23:39
par NoNos
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Maquette</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="fr" />
<link href="{$racine}/CSS/style.css" rel="stylesheet" type="text/css">
</head>
Le reste c'est juste du html
Posté : 08 mai 2007, 23:59
par Sékiltoyai
Est ce que tu as des fichiers dans le dossier C:\Program Files\EasyPHP1-8\smarty\templates_c ?
Posté : 09 mai 2007, 00:05
par NoNos
Voila le fichier dans le dossier dont tu me parles
Code : Tout sélectionner
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Maquette</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="fr" />
<link href="<?php echo $this->_tpl_vars['racine']; ?>
/CSS/style.css" rel="stylesheet" type="text/css">
</head>
Le caractère spécial est un retour a la ligne.
Le problème doit venir de là mais comment résoudre ce souci?
Posté : 09 mai 2007, 00:14
par Sékiltoyai
Ca me parait juste. Je ne vois pas d'erreur...
De quel caractère spécial parles tu ?
Posté : 09 mai 2007, 00:19
par Sékiltoyai
Si, j'ai une idée, peux tu me donner le code de la page html une fois la page générée ?
Posté : 09 mai 2007, 00:26
par NoNos
Dans le notepad j'avais un tit caré a la con qui c'est transfomé en saut de ligne lors du copier collé
voila le html final :
Code : Tout sélectionner
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Maquette</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="fr" />
<link href="C:\Program Files\EasyPHP1-8\www\livres113/CSS/style.css" rel="stylesheet" type="text/css">
</head>
Cela viens peut-etre des antislash
Il y a peut-etre une autre méthode car c'est vilain ce que je fait je trouve.
En fait j'ai fait sa ca je fais de l'url rewriting. J'ai des lien du type /livres/catalogue qui coreponde a la page index.php&page=catal_livre
Lorsque j'allais sur ce genre de page je n'avais plus le css donc je pené spécifier la racine du site en dur mais bon ma methode semble foireuse quand meme.
Posté : 09 mai 2007, 01:02
par Sékiltoyai
En fait, je n'avais pas tilté, __FILE__ ca renvoie le chemin du fichier, pas son adresse. Si tu mets le chemin du fichier dans le code html, un client ne le trouvera jamais.
Il faut utiliser plutôt '
http://www.ndd.tld' . $_SERVER['PHP_SELF']
Posté : 09 mai 2007, 13:05
par NoNos
Merci pour ton aide c'est ok
Posté : 09 mai 2007, 13:12
par Sékiltoyai
De rien.
Au passage, tu as pris smarty, c'est un bon choix
