Smarty, включите файл css/javascript

реально ли включать на страницу разные файлы CSS или JavaScript, в зависимости от ее имени. Например, если у меня есть заказы страниц, будет включено orders.css, а если у меня есть индексная страница, будет включено index.css, или, возможно, с другими проверками, если x = 3, включите main.js, если x = 5, включите validate.js.

Я понимаю, что могу сделать это с помощью PHP, например:

if (x = 3) $smarty->assign('file_css', 'orders');
else $smarty->assign('file_css', 'index');

и в шаблоне напишите что-то вроде:

<link rel='stylesheet' href='css/{$file_css}.css' />

Но, может быть, есть способ сделать это с помощью smarty?

Некоторое время назад я видел в проекте что-то вроде блоков в умном шаблоне, где были файлы css/js, и они включались на страницу каким-то волшебным образом, mby PHP, я не знаю, но выглядит очень понятно и удобно. Был 1 файл, где было что-то вроде:

{smarty block='css'}
    <link ....... />
    <script ..... />
{/smarty block}

А затем эти блоки были включены в нужные места на шаблоне.

Это просто пример, я не помню, как это на самом деле называлось, но было что-то вроде этого.


person kxc    schedule 04.02.2014    source источник


Ответы (2)


Вы можете использовать {smarty.template}, который дает текущее имя шаблона с расширением .tpl, например «orders.tpl». Замените расширение на свой вариант

<link rel='stylesheet' href='css/{$smarty.template|replace :'.tpl':'.css'}' />
person merdan    schedule 05.02.2014

Есть несколько способов сделать то, что вы хотите. Однако вы, вероятно, думаете о наследовании шаблонов.

Вероятно, вы можете сделать что-то вроде этого примера и добавить в main.tpl CSS с другой таблицей стилей.

index.tpl

<html> 
<head> 
{block name='head'}{/block} 
</head> 
<body> 
{block name='body_main'}{block} 
</body> 
</html>

main.tpl

{block name='head' append} 
<--  your css  --> 
{/block} 
{block name='body_main'} 
your content here 
{/block} 

Посмотрите здесь для получения дополнительной информации. http://www.smarty.net/inheritance

person Panama Jack    schedule 05.02.2014
comment
Большое спасибо, это действительно крутой способ сделать это. Лучше, чем если бы, иначе :) - person kxc; 05.02.2014