Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
avgaz

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

Recommended Posts

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

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

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

реклама

{{endif}}

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Спасибо.

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

Share this post


Link to post
Share on other sites

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

Ваше решение похоже на то, что реализовано в методе 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}

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

Edited by avgaz

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
13 часов назад, avgaz сказал:

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

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

 

  • Upvote 2

Share this post


Link to post
Share on other sites

Спасибо.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...