| Kopusha |
|
|---|---|
|
Как написать Если мы в Индексе то Added 20 seconds later: Но только одно не более Added 3 minutes later: И второй вопрос У меня есть список юзеров самый обычный и есть эти же юзеры на карте <!-- IF {PHP.env.ext} == 'users' AND {PHP.out.uri} != 'ua/users?map=1' -->Это обычный список юзеров<!-- ENDIF --> Не могу понять как ловить момент когда это именно карта с юзерами - пробовал как выше но для 3х языков надо городить орогод - AND {PHP.out.uri} == 'users?map=1' не срабатывает без языка. Больше через {PHP|dump} не смог придумать как ловить условие. Заранее спасибо! |
| Roffun |
|
|---|---|
#43196 Kopusha: Дополнительные возможности шаблонизатора CoTemplate
<!-- IF {PHP.env.ext} == "index" OR {PHP.env.ext} == 'page' OR {PHP.env.ext} == 'forums' -->
если на главной, страницах, форуме
<!-- IF {PHP.env.ext} == "index" -->
если только на главной
<!-- ENDIF -->
<!-- IF {PHP.env.ext} == "page" -->
если только на страницах
<!-- ENDIF -->
<!-- IF {PHP.env.ext} == "forums" -->
если только на форумах
<!-- ENDIF -->
<!-- ELSE -->
что-то еще
здесь можно еще условия влаживать
<!-- ENDIF -->
Добавлено 9 минут спустя: #43196 Kopusha: У меня есть список юзеров самый обычный и есть эти же юзеры на карте Поищите переменную map, и попробуйте проверку через cot_import , так как ?map=1 это _GET запрос Что за плагин выводит карту ? Вот пример проверки:
<!-- IF {PHP|cot_import('map', 'G', 'TXT')} -->
Карта
<!-- ELSE -->
Без карты
<!-- ENDIF -->
Или можно сделать проверку для переменной env:
<!-- IF {PHP.env.ext|cot_import('map', 'G', 'TXT')} -->
Карта
<!-- ELSE -->
Без карты
<!-- ENDIF -->
Если нужно проверить что это целое число, то TXT замените на INT, если map нужно проверять только на конкретный параметр (=1), то:
<!-- IF {PHP.env.ext|cot_import('map', 'G', 'INT')} == 1 -->
Карта
<!-- ELSE -->
Без карты
<!-- ENDIF -->
Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
Dieser Beitrag wurde von Roffun (am 13. Dezember 2017, 19:54, vor 7 Jahre) bearbeitet |
| Kopusha |
|
|---|---|
И то и то - идеально! спАсибо! |
| Roffun |
|
|---|---|
#43198 Kopusha: На других движках такое сделать из шаблона намного проблематичнее, и то на некоторых, вот за это и люблю Cotonti. Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
|
| Kopusha |
|
|---|---|
я раз 5 начинал писать вопрос и все время сам находил решение за утро) конская конструкция, работает, и я так понимаю ее упростить не реально кроме как плагином который то же самое будет делать?
<!-- IF {PHP.env.ext} == "users" -->
<!-- IF {PHP|cot_import('map', 'G', 'TXT')} -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_16.jpg) center 75% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- IF {PHP.m} == 'profile' -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_21.jpg) left 75% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- IF {PHP.m} == 'details' -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_21.jpg) left 75% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- IF !{PHP|cot_import('map', 'G', 'TXT')} AND {PHP.m} != 'profile' AND {PHP.m} != 'details' -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_15.jpg) center 75% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- ELSE -->
<!-- IF {PHP.env.ext} == "index" OR {PHP.env.ext} == 'folio' OR {PHP.env.ext} == 'marketorders' OR {PHP.env.ext} == 'market' OR {PHP.env.ext} == 'projects' OR {PHP.env.ext} == 'page' OR {PHP.env.ext} == 'forums' -->
<!-- IF {PHP.env.ext} == 'index' -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_6.jpg) left 75% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- IF {PHP.env.ext} == 'marketorders' -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_10.jpg) left 75% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- IF {PHP.env.ext} == 'page' -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_1.jpg) center 75% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- IF {PHP.env.ext} == 'folio' -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_7.jpg) center 75% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- IF {PHP.env.ext} == 'market' -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_4.jpg) center 45% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- IF {PHP.env.ext} == 'projects' -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_3.jpg) center 45% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- IF {PHP.env.ext} == 'forums' -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_5.jpg) center 45% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- ELSE -->
<div class="_padding-top-30" style="height: 500px; background: #fff url(themes/traveller/img/cover_12.jpg) left 75% no-repeat; background-size: cover;">
<!-- ENDIF -->
<!-- ENDIF -->
|
| Roffun |
|
|---|---|
#43200 Kopusha: я раз 5 начинал писать вопрос и все время сам находил решение за утро) конская конструкция, работает, и я так понимаю ее упростить не реально кроме как плагином который то же самое будет делать? В первую очередь все зависит от целей. Упростить код можно, но для этого нужно вникать в суть задачи, цели, тз, и прочее. Если цель всего лишь вывод разных стилей для <div class="_padding-top-30">, то подобные реализации не обязательно делать через кучу условий. 1. Если можно оптимизировать код с помощью css - стоит оптимизировать, почему бы не заменить style на класс, а потом с помощью css подставлять ? 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>
<!-- IF {PHP.env.ext} == "users" -->
<!-- IF {PHP|cot_import('map', 'G', 'TXT')} -->
<div class="_padding-top-30 traveller-users-map">
<!-- ELSE -->
<!-- IF {PHP.m} != 'profile' AND {PHP.m} != 'details' -->
<div class="_padding-top-30 traveller-users-nomap">
<!-- ENDIF -->
<!-- IF {PHP.m} == 'profile' -->
<div class="_padding-top-30 traveller-users-profile">
<!-- ENDIF -->
<!-- IF {PHP.m} == 'details' -->
<div class="_padding-top-30 traveller-users-details">
<!-- ENDIF -->
<!-- ENDIF -->
<!-- ENDIF -->
А вот для остальных с помощью отдельных tpl для примера:
<!-- IF {PHP.env.ext} == "index" OR {PHP.env.ext} == 'folio' OR {PHP.env.ext} == 'marketorders' OR {PHP.env.ext} == 'market' OR {PHP.env.ext} == 'projects' OR {PHP.env.ext} == 'page' OR {PHP.env.ext} == 'forums' -->
{FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/traveller-{PHP.env.ext}.tpl"}
<!-- ELSE -->
{FILE "{PHP.cfg.themes_dir}/{PHP.theme}/inc/traveller-default.tpl"}
<!-- ENDIF -->
Добавлено 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":
//$traveller_class .= '-any';
break;
case "page":
//$traveller_class .= '-any';
break;
case "forums":
//$traveller_class .= '-any';
break;
case "projects":
//$traveller_class .= '-any';
break;
case "folio":
//$traveller_class .= '-any';
break;
case "market":
//$traveller_class .= '-any';
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
Dieser Beitrag wurde von Roffun (am 14. Dezember 2017, 20:16, vor 7 Jahre) bearbeitet |
| Kopusha |
|
|---|---|
|
Ой как круто) Я на свежую голову обязательно сделаю все варианты просто что бы научиться как минимум. Added 15 hours later: Третий вариант со своей функцией - отлично работает - огромное спасибо. Уже в следующий раз полезу сам писать функцию, так гораздо проще. Не факт что с 1 раза выйдет, но малпомалу) PS - добавил к функции else
Added 2 hours later:
Вроде как все верно работает - это я не верно думаю/
Dieser Beitrag wurde von Kopusha (am 15. Dezember 2017, 16:51, vor 7 Jahre) bearbeitet |