2013-06-03 3 views
2

J'ai un template Smarty 2 et je souhaite utiliser CSS import ou même simplement un tag classique <link> pour inclure un fichier CSS plutôt que d'utiliser les tags traditionnels avec CSS en ligne.inclus ou importé (@import) une feuille de style dans un template Smarty 2

Est-ce possible dans Smarty 2? Le fichier CSS se trouve dans le même répertoire que le modèle Smarty. Je veux donc le récupérer dans le même répertoire, mais cela ne fonctionne pas.

<link href="{$smarty.server.PHP_SELF}thumbnails.css" rel="stylesheet" type="text/css" /> 

La fonctionnalité CSS @import ne l'est pas non plus.

Répondre

3

Vous pouvez les suivantes:

Utilisez {php} tags:

<style> 
{php}include('/filesystem/path/to/thumbnails.css');{/php} 
</style> 

Utilisez ce cas, si vous connaissez le chemin à votre dossier, et ne me dérange pas d'être smarty3- incompatible

Utilisez la fonction personnalisée:

Créer une Smarty personnalisée func tion et placez-le dans un fichier appelé function.include_file.php, dans votre plugins_dir:

<?php 
function smarty_function_include_file($params, &$smarty) 
{ 
    include($params['file']); 
} 

Ensuite, appelez avec:

<style> 
{include_file file='/filesystem/path/to/thumbnails.css'} 
</style> 

Utilisez ce cas, si vous connaissez le chemin à votre dossier, et ne me dérange pas la création d'une nouvelle fonction à cette fin

Modifier votre fichier css: balises Append {literal} au début et à la fin de votre fichier css, par exemple:

/*{literal}*/ 
body{background-color:red!important} 
/*{/literal}*/ 

puis inclure avec:

<style> 
{include file = "thubnails.css"} 
</style> 

Utilisez ce cas, si cela ne vous dérange pas de modifier votre fichier CSS

Gardez à l'esprit que tous les cas ci-dessus comprendrait évidemment tous vos fichier comme feuille de style inline, ce qui n'est pas une bonne pratique. Une procédure beaucoup mieux serait de placer votre fichier css quelque part qui est accessible via le web (c'est-à-dire, vous pouvez y accéder avec quelque chose comme http://yoursite.example.com/path/to/css/thumbnails.css) et ensuite lien dur comme vous le faites maintenant

+0

Frustrant, je dois conclure balise '' '{literal} autour tout mon CSS à l'intérieur de 'thumbnails.css' pour que cela fonctionne - ce qui n'est pas génial quand il est ouvert dans un IDE. – crmpicco

+0

vous n'avez pas à; mettez-les avant et après le {include} ou au début et à la fin de votre fichier css (j'ai mis à jour l'exemple ci-dessus) – periklis

+0

Hmmm ... ce n'est pas correct car les balises '{literal}' signifieront que Smarty traite le contenu littéralement, c'est-à-dire ne les analysera pas. Donc, dans cet exemple, il affichera {{include file = "thumbnails.css"} 'ce qui n'est pas correct. – crmpicco

1

$ smarty.server. PHP_SELF retourne le nom et le chemin du fichier courant exécutant votre template, à savoir htt .../mypage.php, si vous regardez le code source après que le replate soit rendu, vous verrez pourquoi le css ne se charge pas.

Au lieu de cela, déclarez une variable dans votre fichier php avec le chemin désiré et le transmettre à Smarty (dans l'exemple, css_path de $):

<link href="{$css_path}thumbnails.css" rel="stylesheet" type="text/css" /> 
Questions connexes