Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

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}}

Опубликовано:
  • Автор

Спасибо.

Ещё такой вопрос хочу сделать вывод онлайн пользователь или нет около ника в сообщениях, ставил плагин(ы) все они создают лишние запросы в БД так как используют $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}

  • 4 недели спустя...
Опубликовано:
  • Автор

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

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

<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>   

Опубликовано:
  • Автор

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

<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 код вверху страницы.

  • 4 недели спустя...
Опубликовано:
  • Автор

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

Опубликовано:

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

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

  • 5 месяцев спустя...
Опубликовано:
  • Автор

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

Опубликовано:
13 часов назад, avgaz сказал:

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

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

 

Опубликовано:
  • Автор

Спасибо.

  • 10 месяцев спустя...
Опубликовано:
  • Автор
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 ??

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

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

Опубликовано:
  • Автор

Спасибо, через or я уже сделал, думал может можно как то по проще, а то 10 разделов вписывать так не очень удобно было ((

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.