#43200 Kopusha: я раз 5 начинал писать вопрос и все время сам находил решение за утро) конская конструкция, работает, и я так понимаю ее упростить не реально кроме как плагином который то же самое будет делать?
В первую очередь все зависит от целей. Упростить код можно, но для этого нужно вникать в суть задачи, цели, тз, и прочее. Если цель всего лишь вывод разных стилей для <div class="_padding-top-30">, то подобные реализации не обязательно делать через кучу условий.
1. Если можно оптимизировать код с помощью css - стоит оптимизировать, почему бы не заменить style на класс, а потом с помощью css подставлять ?
2. Вместо кучи проверок можно использовать вывод конструкции в FILE с нужным выражением или условиями, или даже вместо имени .tpl файла подставить {PHP.env.ext}, и т.д. Например {FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/traveller-{PHP.env.ext}.tpl"} - это если кода много, то создаете в шаблоне какую-нибудь папку, например inc, в ней файлы вида traveller-default.tpl, traveller-page.tpl и т.д.
3. Можно написать PHP функцию.
p.s. сейчас покажу на примере
Добавлено 29 минут спустя:
Например, для users пример с помощью html класса и css к нему:
<style>
[class*= "traveller-" ]{
height : 500px ;
background-color : #fff ;
background- size : cover;
background-repeat : no-repeat ;
}
.traveller-users-map {
background-image : url (themes/traveller/img/cover_ 16 .jpg);
background-position : center 75% ;
}
.traveller-users-nomap {
background-image : url (themes/traveller/img/cover_ 15 .jpg);
background-position : center 75% ;
}
.traveller-users-profile {
background-image : url (themes/traveller/img/cover_ 21 .jpg);
background-position : left 75% ;
}
.traveller-users-details {
background-image : url (themes/traveller/img/cover_ 21 .jpg);
background-position : left 75% ;
}
</style>
|
< div class = "_padding-top-30 traveller-users-map" >
< div class = "_padding-top-30 traveller-users-nomap" >
< div class = "_padding-top-30 traveller-users-profile" >
< div class = "_padding-top-30 traveller-users-details" >
|
А вот для остальных с помощью отдельных tpl для примера:
{FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/traveller-{PHP.env.ext}.tpl"}
{FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/traveller-default.tpl"}
|
Добавлено 1 час спустя:
И наконец вариант с PHP функцией для примера, для users и index, остальное можно дописать самостоятельно на основе примера.
В каждом шаблоне есть PHP файл с названием шаблона, например nemesis.php, в него добавляете такой код:
function traveller()
{
global $env , $m ;
$traveller_class = '' ;
if (in_array( $env [ 'ext' ], array (
'index' ,
'users' ,
'page' ,
'forums' ,
'projects' ,
'folio' ,
'market' )))
{
$traveller_class = 'traveller-' . $env [ 'ext' ];
switch ( $env [ 'ext' ])
{
case "users" :
if (cot_import( 'map' , 'G' , 'TXT' ))
{
$traveller_class .= '-map' ;
}
else
{
if ( $m != 'profile' && $m != 'details' )
{
$traveller_class .= '-nomap' ;
}
if ( $m == 'profile' )
{
$traveller_class .= '-profile' ;
}
if ( $m == 'details' )
{
$traveller_class .= '-details' ;
}
}
break ;
case "index" :
break ;
case "page" :
break ;
case "forums" :
break ;
case "projects" :
break ;
case "folio" :
break ;
case "market" :
break ;
}
}
return $traveller_class ;
}
|
В нужном месте шаблона можно использовать функцию одним из нескольких способов:
1. Добавить к html коду функцию, она будет выводить класс, если совпадает условие или исчезать если условие не совпадает:
< div class = "_padding-top-30 {PHP|traveller}" >
|
2. Использовать как условный оператор:
<!-- IF {PHP|traveller} -->
или
<!-- IF {PHP|traveller} == 'traveller-users-nomap' -->
|
3. Придумать самостоятельно что еще с ней можно делать.
Итог: Для перечисленных в условии расширений функция будет возвращать класс вида traveller-расширение или если есть дополнительное условие как для users, то будет возвращать traveller-расширение-приставка.
Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts