Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

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

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

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

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

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 разделов вписывать так не очень удобно было ((

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.