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

День рождения в темах форума

Recommended Posts

Как можно реализовать отображения дня рождения пользователя в его сообщениях в темах а также в его профиле?

Share this post


Link to post
Share on other sites

В начало шаблона userInfoPane добавить:

 

<php>
$birthday = IPSMember::load( $author['member_id'], 'members' );
</php>

Там, где нужно вывести дату Рождения (в этом шаблоне) добавить:

 

<li>
<span style='font-weight: bold;'>День Рождения:</span>
<br />
<if test="$birthday['bday_day']">{$birthday['bday_day']}.<else />
<span style='font-style: italic;'>Неизвестен</span></if><if test="$birthday['bday_month']">{$birthday['bday_month']}</if><if test="$birthday['bday_year']">.{$birthday['bday_year']}</if>
</li>

Edited by Strategius
  • Upvote 1

Share this post


Link to post
Share on other sites

В начало шаблона userInfoPane добавить:

Неплохо.

 

Вот только бы хотелось что бы у тех кто празднует сегодня день рождения, такая информация отображалась по другому, выделялась.

 

Да и ещё этот код даёт по одному лишнему запросу от каждого пользователя в теме.

Share this post


Link to post
Share on other sites
Да и ещё этот код даёт по одному лишнему запросу от каждого пользователя в теме.

Так а без этого никак, насколько я знаю, дата рождения не кешируется.

Share this post


Link to post
Share on other sites

Так а без этого никак, насколько я знаю, дата рождения не кешируется.

Запрос не ощутимый вообще то.

 

А вот как бы сделать как в четвёрке - выделяеться у тех у кого день рождения сегодня.

Share this post


Link to post
Share on other sites
А вот как бы сделать как в четвёрке - выделяеться у тех у кого день рождения сегодня.

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

Share this post


Link to post
Share on other sites

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

Вот такое мне и нужно.

 

Кстати у меня на форуме стоит хук Поздравление с днём рождения, выводит на главной таблицу с поздравление индивидуально пользователю у которого день рождение.

Вот точно такое же, но только что бы было всем видно и в темах форума.

Поздравление с днём рождения.xml

Share this post


Link to post
Share on other sites

{parse template="hooksos_birthdaymsg" group="topic" params="$member"}

Такой вариант не работает?

Edited by Strategius

Share this post


Link to post
Share on other sites
А вот как бы сделать как в четвёрке - выделяеться у тех у кого день рождения сегодня

Дни рождений кешируются. Если установлен IP.Calendar, то сделать можно так:

<php>
$bDayIds = array();
foreach( $this->cache->getCache('birthdays') as $_bday )
{
$bDayIds[] = $_bday['member_id'];
}
</php>
<if test="in_array( $author['member_id'], $bDayIds )"><!--any html code--></if>

Лучше бы вынести логику в файл, конечно, но нет времени копаться сейчас.

  • Upvote 2

Share this post


Link to post
Share on other sites
Если установлен IP.Calendar

А если нет? Точнее установлен, но отключен из-за ненадобности.

Edited by Strategius

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Дни рождений кешируются. Если установлен IP.Calendar, то сделать можно так:

Круть, работает. Спасибо.

 

И создаёт всего один лишний запрос, несущественный.

Share this post


Link to post
Share on other sites
А поподробнее можно?

Что именно Вам нужно подробнее описать? Если про установку правки от @Dmitriy427 из поста #9, то

 

Это

 

<php>
$bDayIds = array();
foreach( $this->cache->getCache('birthdays') as $_bday )
{
   $bDayIds[] = $_bday['member_id'];
}
</php>

Вставляете в начало шаблона userInfoPane, а это:

 

<if test="in_array( $author['member_id'], $bDayIds )"><!--any html code--></if>

В то место, куда нужно вывести поздравление.

 

Вместо <!--any html code--> вставляете свой код.

Share this post


Link to post
Share on other sites

Кто-нибудь в курсе, что в календарном кеше хранятся вчерашние/сегодняшние/завтрашние именинники? А в 3.4 вообще по 6 штук.

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