Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
avgaz

Условия на вывод данных в шаблонах

Рекомендованные сообщения

Добрый день, есть несколько вопросов по условиям вывода данных(рекламных объявлений) в шаблонах

1. шаблон globalTemplate как составить условие, что бы при просмотре темы не показывались данные, а в других местах показывались, вот так почему то не работает

{{if (!\IPS\Request::i()->controller == 'topic')}}

реклама

{{endif}}

 

2. Как вывести данные перед последним сообщение темы, а так же после я так понимаю нужно это делать в шаблоне topic как выводить после определенного сообщения понятно это так {{if $postCount == 10}} а вот как перед последним? и после?

 

3. Как вывести данные после переделенного раздела на главной? например после третьего?

Поделиться сообщением


Ссылка на сообщение

1.

{{if \IPS\Request::i()->controller != 'topic'}} 
реклама
{{endif}}

а вот как перед последним?

{{if $postCount == \count($comments) - 1}}

и после?

{{if $postCount == \count($comments)}}

Для \count($comments) лучше создать переменную, чтобы в цикле по n раз не вычислять.

 

3. Как вывести данные после переделенного раздела на главной? например после третьего?

Можно по id, чтобы лишние переменные не вводить.

В шаблоне index В цикле foreach использовать

		{{if $category->_id == 1}}
			Реклама после категории с ID 1
		{{endif}}

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

Спасибо.

Ещё такой вопрос хочу сделать вывод онлайн пользователь или нет около ника в сообщениях, ставил плагин(ы) все они создают лишние запросы в БД так как используют $comment->author()->isOnline() то есть по каждому отписавшемуся в теме идет запрос в таблицу сессий, что по мне дак как то не очень.

Решил попробовать сделать вот так прописав в шаблон это.

    {{if ($comment->author()->last_activity < time() - 1440) }}
<i style="font-size: 14px" class="fa fa-circle ipsOnlineStatus_offline" data-ipstooltip="" _title="Оффлайн"></i>
{{else}}
<i style="font-size: 14px" class="fa fa-circle ipsOnlineStatus_online" data-ipstooltip="" _title="Онлайн"></i>
{{endif}}

по сути в last_activity заносится последнее действие так же как и в сессии, но при этом не каких лишних запросов в БД нет т.к эти данные по сути и так запрашиваются.

Вроде все работает, только вопрос на сколько это правильно есть какие то минусы в таком решении?

Ещё данный код пришлось прописывать в два места в шаблоне что бы с мобильных тоже показывало, возникает прос может выполнять этот код один раз а в места вывода вставлять переменой? но что то не получается обозначить переменой то есть так

$olineuser = '<i style="font-size: 14px" class="fa fa-circle ipsOnlineStatus_offline" data-ipstooltip="" _title="Оффлайн"></i>' и дальнейший вывод в шаблоне {$olineuser} почему то не работает

Поделиться сообщением


Ссылка на сообщение

Вроде все работает, только вопрос на сколько это правильно есть какие то минусы в таком решении?

Ваше решение похоже на то, что реализовано в методе isOnline, только без проверки на юзера/гостя и sql-запроса.

но что то не получается обозначить переменой то есть так

$olineuser = '' и дальнейший вывод в шаблоне {$olineuser} почему то не работает

{{$onOff = '';}}
{{if $comment->author()->member_id}}
{{if $comment->author()->last_activity < time() - 1440}}
	{{$onOff = '<i style="font-size: 14px" class="fa fa-circle ipsOnlineStatus_offline" data-ipstooltip="" _title="Оффлайн"></i>';}}
{{else}}
	{{$onOff = '<i style="font-size: 14px" class="fa fa-circle ipsOnlineStatus_online" data-ipstooltip="" _title="Онлайн"></i>';}}
{{endif}}
{{endif}}
{$onOff|raw}

Поделиться сообщением


Ссылка на сообщение

а средствами форума можно определить ширину экрана посетителя? то есть хотелось бы в шаблоне если один размер экрана то подгрузить одни код рекламы(директ), если другой уже другой код рекламы?

при этом код рекламы выглядит так

<div id="yandex_rtb_R-A-888888"></div>
<script type="text/javascript">
   (function(w, d, n, s, t) {
       w[n] = w[n] || [];
       w[n].push(function() {
           Ya.Context.AdvManager.render({
               blockId: "R-A-888888",
               renderTo: "yandex_rtb_R-A-888888",
               async: true
           });
       });
       t = d.getElementsByTagName("script")[0];
       s = d.createElement("script");
       s.type = "text/javascript";
       s.src = "//an.yandex.ru/system/context.js";
       s.async = true;
       t.parentNode.insertBefore(s, t);
   })(this, this.document, "yandexContextAsyncCallbacks");
</script>   

Поделиться сообщением


Ссылка на сообщение
08/30/19 21:27 (изменено)

Вроде бы понял как сделать то есть вот так для примера

<div id="rtb_div"></div>
<script type="text/javascript">
if (window.screen.width < 1000){
$( "#rtb_div" ).load( "/small.ya" );
}else {
$( "#rtb_div" ).load( "/big.ya" );
}
</script>

но появилась проблема этот код работает только если его разместить в шаблоне ниже этой строки

{template="includeJS" if="theme.js_include == 'footer'" app="core" group="global" location="global" params=""}

 

Что не очень хорошо т.к вывод кода разместить нужно в начале и получается что работает с задержкой пока вся страница не про грузится (( как это поправить?

Изменено пользователем avgaz

Поделиться сообщением


Ссылка на сообщение

Разобрался причина что jQuery грузится внизу страницы ((

Все таким может средствами форума можно ширину определить что бы составить условие в шаблоне?

Поделиться сообщением


Ссылка на сообщение

Все таким может средствами форума можно ширину определить

Какими? У Движка нет собственных средств.

Разобрался причина что jQuery грузится внизу страницы ((

 

Добавляйте js код после, а html код вверху страницы.

Поделиться сообщением


Ссылка на сообщение

Такой вопрос возник, а где правятся шаблоны админки? хотелось внести изменения в список модераторов добавив туда ссылку на историю модерирования, так же в списке пользователей выводить не просто дату, а и время регистрации, но вот где покопаться в этих шаблонах так и не нашёл ((

Поделиться сообщением


Ссылка на сообщение

Нет такого места.

Вроде бы, если не изменяет память, можно редактировать при включенном режиме дизайнера. Только учтите, что плагины, использующие Theme hooks, при данном режиме не работают.

Поделиться сообщением


Ссылка на сообщение

Как составить условие в шаблоне topic, что бы например в темах определенного форума показалась только реклама?

Поделиться сообщением


Ссылка на сообщение
13 часов назад, avgaz сказал:

Как составить условие в шаблоне topic, что бы например в темах определенного форума показалась только реклама?

{{if $topic->container()->_id == 5}}
	Показывать рекламу в форуме с ID 5
{{endif}}

 

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

Спасибо.

Поделиться сообщением


Ссылка на сообщение
12.03.2020 в 13:46, newbie сказал:

{{if $topic->container()->_id == 5}} Показывать рекламу в форуме с ID 5 {{endif}}

как сделать перечисление, то есть показывать в 5,1,9 ??

или как сделать что бы показывало и в подразделах?

Поделиться сообщением


Ссылка на сообщение
04.02.2021 в 23:21, avgaz сказал:

как сделать перечисление, то есть показывать в 5,1,9 ??

{{if $topic->container()->_id == 1 or $topic->container()->_id == 5 or $topic->container()->_id == 9}}
	Показывать рекламу в форуме с ID 1, 5 и 9
{{endif}}

 

 

04.02.2021 в 23:21, avgaz сказал:

как сделать перечисление, то есть показывать в 5,1,9 ??

или как сделать что бы показывало и в подразделах?

Добавить в шаблон подразделов аналогичное условие.

  • Like 1

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...