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

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

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

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

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


Ссылка на сообщение
02/05/17 13:44 (изменено)

В начало шаблона 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>

Изменено пользователем Strategius
  • Upvote 1

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


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

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

Неплохо.

 

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

 

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

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


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

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

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


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

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

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

 

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

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


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

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

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


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

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

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

 

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

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

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

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


Ссылка на сообщение
02/05/17 19:57 (изменено)

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

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

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

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


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

Дни рождений кешируются. Если установлен 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

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


Ссылка на сообщение
02/05/17 22:24 (изменено)
Если установлен IP.Calendar

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

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

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


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

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

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


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

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

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

 

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

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


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

А поподробнее можно?

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


Ссылка на сообщение
А поподробнее можно?

Что именно Вам нужно подробнее описать? Если про установку правки от @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--> вставляете свой код.

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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