Замена названия шаблона на переменную.

#1 10 июля 2012 в 11:02
Вобщем, суть такова.
При написании шаблонов, модулей, компонентов часто указывают прямые пути, вида
/templates/_default_/js/mod_123/mod123.min.js
При этом возникают известные проблемы, которые решаются правкой файлов с заменой _default_ на название своего шаблона.
При выборе шаблона в админке переменная TEMPLATE принимает значение выбранного шаблона.
Следовательно, удобно использовать её при указании путей.
В php файлах это срабатывает
  1.  
  2. <link href="/templates/<?php echo TEMPLATE; ?>/css/text.css" rel="stylesheet" type="text/css" />
  3. <link href="/templates/<?php echo TEMPLATE; ?>/css/960.css" rel="stylesheet" type="text/css" />
  4. <link rel="stylesheet" type="text/css" href="/templates/<?php echo TEMPLATE; ?>/css/styles.css"" />
  5.  
и так (на пример в /components/forum/includes/forumcore.php )
  1.  
  2. src="/templates/'.TEMPLATE.'/images/icons/anchor.png
  3.  
Не выходит сделать тоже самое в tpl.
Вариант {PHP}{/PHP} не получается у меня.
Подскажите, плз, кто в теме.
#2 10 июля 2012 в 11:26
я не в теме, но я бы попробовал запихать содержимое TEMPLATE в обычную переменную, передать её из frontend`а в .tpl и делать там с ней всё что угодно
#3 10 июля 2012 в 11:42
так делал, работает.Но для сторонних шаблонов править компоненты не кошерно…
#4 10 июля 2012 в 12:01
• Ɍɕβoṙη •, не совсем понял что Вы хотите сделать, но в коде явно не хватает "$".
Вот так:
  1. <link href="/templates/<?php echo $TEMPLATE; ?>/css/text.css" rel="stylesheet" type="text/css" />
  2. <link href="/templates/<?php echo $TEMPLATE; ?>/css/960.css" rel="stylesheet" type="text/css" />
  3. <link rel="stylesheet" type="text/css" href="/templates/<?php echo $TEMPLATE; ?>/css/styles.css"" />
#5 10 июля 2012 в 12:06
что хотелось бы получить в tpl ?
а то не понятно над чем голову ломать!
#6 10 июля 2012 в 12:10
WALTERZ, Да нет, она там не нужна, всё и так работает хорошо.
Я спросил, как заменить название шаблона именно в tpl файлах.

не совсем понял что Вы хотите сделать

Это нужно для того, чтобы раз и навсегда избавится от проблемы

При написании шаблонов, модулей, компонентов часто указывают прямые пути, вида /templates/_default_/js/mod_123/mod123.min.js При этом возникают известные проблемы, которые решаются правкой файлов с заменой _default_ на название своего шаблона.

#7 10 июля 2012 в 12:12
Ленивый,

что хотелось бы получить в tpl ?

Вместо, например /templates/_default_/js/mod_123/mod123.min.js
вот так /templates/TEMPLATE/js/mod_123/mod123.min.js
#8 10 июля 2012 в 12:27
я на 99,10% уверен что tplник должен понять вот так:
/templates/{$shablon}/js/mod_123/mod123.min.js

надо только во фронтенде в $shablon перенести инфу из TEMPLATES
по интуиции:
$shablon = TEMPLATES;
ну и передать её в tplник не забыть :)

попробуй так и в тпльнике просто выведи $shablon на экран, чтоб посмотреть, что в ней

Приём!
#9 10 июля 2012 в 12:32

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

Хочу найти универсальное средство, чтоб не трогать фронтенды и модули
#10 10 июля 2012 в 13:32
А сорри, не по глазам!!! :))))

$_SESSION['template']
$_SESSION — глобальный массив. Есть робкая надежда, что tplники его видят...

{$_SESSION.template}
#11 10 июля 2012 в 13:39
… хотя вряд ли. Тогда он и TEMPLATES видел.
#12 10 июля 2012 в 13:43
Я выше не правильно указал переменную, надо не TEMPLATES, а TEMPLATE
#13 10 июля 2012 в 14:20
я где то уже делал так — щас найду и опишу
#14 10 июля 2012 в 14:39
нашёл, делал вот так )))
в tpl в начале где нить вставляем следующий код

  1. {php}
  2. global $_CFG;
  3. $mytemplate = ($_CFG['template']);
  4. {/php}
потом где надо ставим примерно вот так (пример)
  1. <td><img src="/templates/{php}echo $mytemplate;{/php}/images/icons/profile/friends.png" border="0"/></td>
  2. <td><a href="/users/{$usr.id}/friendship.html" title="{$LANG.ADD_TO_FRIEND}">{$LANG.ADD_TO_FRIEND}</a></td>
у меня работает )))
#15 10 июля 2012 в 17:30
Отлично!!!
Проверил, работает ))
Щас попробую под итожить
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.