Trotor 27 02/04/17 23:18 Как можно реализовать отображения дня рождения пользователя в его сообщениях в темах а также в его профиле? Поделиться сообщением Ссылка на сообщение
Strategius 52 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> Изменено 5 февраля 2017 пользователем Strategius 1 Поделиться сообщением Ссылка на сообщение
Trotor 27 02/05/17 15:31 В начало шаблона userInfoPane добавить:Неплохо. Вот только бы хотелось что бы у тех кто празднует сегодня день рождения, такая информация отображалась по другому, выделялась. Да и ещё этот код даёт по одному лишнему запросу от каждого пользователя в теме. Поделиться сообщением Ссылка на сообщение
Strategius 52 02/05/17 15:34 Да и ещё этот код даёт по одному лишнему запросу от каждого пользователя в теме.Так а без этого никак, насколько я знаю, дата рождения не кешируется. Поделиться сообщением Ссылка на сообщение
Trotor 27 02/05/17 15:46 Так а без этого никак, насколько я знаю, дата рождения не кешируется.Запрос не ощутимый вообще то. А вот как бы сделать как в четвёрке - выделяеться у тех у кого день рождения сегодня. Поделиться сообщением Ссылка на сообщение
Strategius 52 02/05/17 18:59 А вот как бы сделать как в четвёрке - выделяеться у тех у кого день рождения сегодня.Вот этого к сожалению не знаю. Теоретически, можно составить условие проверки совпадения даты рождения с текущей датой, и в случае возвращения положительного результата реализовать смену визуального оформления. Поделиться сообщением Ссылка на сообщение
Trotor 27 02/05/17 19:33 Вот этого к сожалению не знаю. Теоретически, можно составить условие проверки совпадения даты рождения с текущей датой, и в случае возвращения положительного результата реализовать смену визуального оформления.Вот такое мне и нужно. Кстати у меня на форуме стоит хук Поздравление с днём рождения, выводит на главной таблицу с поздравление индивидуально пользователю у которого день рождение.Вот точно такое же, но только что бы было всем видно и в темах форума.Поздравление с днём рождения.xml Поделиться сообщением Ссылка на сообщение
Strategius 52 02/05/17 19:57 (изменено) {parse template="hooksos_birthdaymsg" group="topic" params="$member"}Такой вариант не работает? Изменено 5 февраля 2017 пользователем Strategius Поделиться сообщением Ссылка на сообщение
Dmitriy427 198 02/05/17 22:19 А вот как бы сделать как в четвёрке - выделяеться у тех у кого день рождения сегодняДни рождений кешируются. Если установлен 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> Лучше бы вынести логику в файл, конечно, но нет времени копаться сейчас. 2 Поделиться сообщением Ссылка на сообщение
Strategius 52 02/05/17 22:24 (изменено) Если установлен IP.CalendarА если нет? Точнее установлен, но отключен из-за ненадобности. Изменено 5 февраля 2017 пользователем Strategius Поделиться сообщением Ссылка на сообщение
Dmitriy427 198 02/05/17 23:00 Хотите, что бы код работал, приложение нужно включить, иначе не будет работать задача в планировщике и обновляться кеш дней рождений, соответственно. Хуки для сайдбара можно отключить отдельно, и скрыть приложение в главном меню. Поделиться сообщением Ссылка на сообщение
Trotor 27 02/05/17 23:51 Дни рождений кешируются. Если установлен IP.Calendar, то сделать можно так:Круть, работает. Спасибо. И создаёт всего один лишний запрос, несущественный. Поделиться сообщением Ссылка на сообщение
Strategius 52 02/06/17 16:37 А поподробнее можно?Что именно Вам нужно подробнее описать? Если про установку правки от @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--> вставляете свой код. Поделиться сообщением Ссылка на сообщение
newbie 1723 02/07/17 07:57 Кто-нибудь в курсе, что в календарном кеше хранятся вчерашние/сегодняшние/завтрашние именинники? А в 3.4 вообще по 6 штук. Поделиться сообщением Ссылка на сообщение