Перейти к публикации
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.

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

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

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

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

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

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

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

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

Неплохо.

 

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

 

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

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

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

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

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

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

 

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

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

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

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

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

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

 

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

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

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

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

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

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

Опубликовано:
Если установлен 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 штук.

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

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

Да и оказывается есть баг - этот скрипт отображает не только сегодняшних именинников, но и вчерашних и завтрашних. Как это пофиксить?

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

Сейчас на странице 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.