Данный комплект позволяет поместить на стену профиля именинника открытку — поздравление.
Так у меня в голове родилось примерно такое ТЗ:
1. Поздравлялка должна запускаться от задачи cron и быть оформлена в виде плагина.
2. Скрипт постит открытку на стену профиля именинника.
3. Открытка содержит случайный рисунок (рисунки хранятся либо в папке images самого плагина, либо в другой папке, их количество заранее не известно).
4. Открытка содержит текст поздравления, который можно задать из админки плагина.
5. Открытка содержит подпись, которую можно задать из админки плагина.
6. Плагин помещает открытку имениннику в указанное в админке время, один раз в сутки (на сайте, который сейчас делаю, задача крон срабатывает каждый час).
7. Для адаптации к дизайну сайта размер картинки, обтекание текстом — должны задаваться свойствами css из админки плагина.
8. Аналогично для текста сообщения и подписи. Цвет и размер шрифта должны задаваться свойствами css из админки плагина.
1. Задачу cron. Это файл includes/myphp/happy_birthday.php содержит всего одну строчку, запускающую системное событие HAPPY_BIRTHDAY
2. Плагин. Папка плагина, кроме самого плагина plugins/p_happy_Birthday/plugin.php содержит еще две папки: images и timer.
— Папка images содержит рисунки. Я закинул туда пять рисунков (анимированные гифки), но вы можете забросить еще — сколько Вам надо. Имена файлов роли не играют. Плагин просматривает эту папку и берет из нее случайный рисунок, чтобы они в открытках не повторялись.
— Папка timer содержит единственный файл plugins\p_happy_Birthday\timer\timer.log. В этот файл плагин пишет себе заметку, что уже положил открытку на стенку имениннику. Это нужно для того, чтобы не бомбить именинника в каждое срабатывание задачи крон (читай — каждый час, если Планировщик настроен на срабатывание каждый час). Благодаря этому логу плагин поздравляет виновника один раз и затыкается. Он скромный.
3. Языковой файл плагина. В папке languages\ru\plugins\p_happy_Birthday.php. Думаю, тут все понятно — если вдруг захотите сделать язык админки плагина на английском, украинском или казахском языках (по крайней мере, я слышал о существовании этих локализаций).
Напомню, что если Вы настроите Планировщик заданий на своем хостинге на срабатывание реже, чем раз в сутки, корректную работу плагина я не гарантирую. После настройки Планировщика Вам следует настроить задачу cron движка своего сайта.
Здесь все понятно и очевидно, кроме одного момента — какой настроить интервал? На сайте, который я сейчас делаю, есть и другие задачи крон, которые должны срабатывать каждый час. Поэтому и Планировщик заданий на хостинге настроен на интервал один час. Согласитесь, было бы странно, если бы при такой настройке на стене пользователя в течение суток появлялось бы 24 открытки.
Можно было бы пойти по легкому пути и настроить Планировщик на срабатывание раз в сутки. Или, раз Планировщик срабатывает каждый час, выставить интервал задачи CRON 24 часа. Тогда и плагин бы получился проще. Проще плагин — больше головной боли у пользователя. Поэтому мне пришлось пойти по пути наибольшего сопротивления. Плагин сам следит за количеством помещенных на стену поздравительных открыток.
Чтобы Вам не ломать голову, подскажу примерное соотношение настроек Планировщика, интервала задачи CRON движка и настройки "Примерное время" плагина. Для корректной работы требуется, чтобы Планировщик срабатывал минимум раз в сутки (лучше несколько раз), интервал задачи CRON выставляете равным нулю (то есть задача запускается при каждом срабатывании Планировщика) и Примерное время плагина ставите так, чтобы оно было ПЕРЕД дневным срабатыванием Планировщика. Плагин при своем вызове сравнивает текущее время сервера с временем, зачитанным из своей настройки. Если время сервера больше или равно — тогда плагин помещает открытку на стену именинника. То есть, если Планировщик настроен на срабатывание в 0, 6, 12, 18 часов каждых суток, а вы оставите Примерное время 8:00, то открытка появится на стене именинника в 12:00.
Найдите данный плагин "С днем рождения!" и установите его, щелкнув по его названию.
Пройдите в Админка -> Дополнения -> Плагины и включите плагин.
По идее, он должен уже работать. Но админка плагина содержит некоторые настройки, которые Вы можете изменить, чтобы подогнать внешний вид открытки под дизайн своего сайта.
Настройки плагина
(см. скриншот ниже):
1. Введите текст сообщения. Тут естественно, сам текст поздравительной открытки. Можете писать, что хотите.
2. Введите подпись под сообщением. Аналогично. Можете вместо "Ваш админ" написать "Желаю много счастья Пух"
3. Укажите примерное время, когда поздравление поместить на стену. По умолчанию указано 8:00, но вы можете указать другое время, например, 13:43.
Примечание 1. Вообще то это время сервера (хостинга) и может отличаться от Вашего локального времени.
Примечание 2. Время указывается именно в таком формате час: минута. И никак иначе. Укажете иначе — работоспособность плагина я не гарантирую.
4. Укажите путь к папке с рисунками. Поскольку я рисунки — анимашки забросил в папку images плагина, то и указал путь к ней. Если вы вдруг решили изображения брать из другой папки, то пропишите здесь правильный путь к ней по приведенному образцу. Хотя я рекомендую просто в папку плагина с изображениями картинок накидать.
5. Дальше идет пять настроек css. Сюда можете писать свойства стилей для элементов по схеме:
При тех настройках, что Вы видите по умолчанию, открытка будет выглядеть примерно так (не забудьте, что рисунок случайный):
wmr 342960323367
карточка сбербанка 67619600 0308703785
Удачи в программировании.
Постановка задачи
Две недели назад на нашем форуме возникла вот такая тема. Мой друг Soul принялся делать очень хорошее дело — поздравлять именинников с днем рождения. Я тогда сказал, что надо бы написать задачу крон, которая будет поздравлять юбиляров автоматически.Так у меня в голове родилось примерно такое ТЗ:
1. Поздравлялка должна запускаться от задачи cron и быть оформлена в виде плагина.
2. Скрипт постит открытку на стену профиля именинника.
3. Открытка содержит случайный рисунок (рисунки хранятся либо в папке images самого плагина, либо в другой папке, их количество заранее не известно).
4. Открытка содержит текст поздравления, который можно задать из админки плагина.
5. Открытка содержит подпись, которую можно задать из админки плагина.
6. Плагин помещает открытку имениннику в указанное в админке время, один раз в сутки (на сайте, который сейчас делаю, задача крон срабатывает каждый час).
7. Для адаптации к дизайну сайта размер картинки, обтекание текстом — должны задаваться свойствами css из админки плагина.
8. Аналогично для текста сообщения и подписи. Цвет и размер шрифта должны задаваться свойствами css из админки плагина.
Комплект
Комплект содержит:1. Задачу cron. Это файл includes/myphp/happy_birthday.php содержит всего одну строчку, запускающую системное событие HAPPY_BIRTHDAY
2. Плагин. Папка плагина, кроме самого плагина plugins/p_happy_Birthday/plugin.php содержит еще две папки: images и timer.
— Папка images содержит рисунки. Я закинул туда пять рисунков (анимированные гифки), но вы можете забросить еще — сколько Вам надо. Имена файлов роли не играют. Плагин просматривает эту папку и берет из нее случайный рисунок, чтобы они в открытках не повторялись.
— Папка timer содержит единственный файл plugins\p_happy_Birthday\timer\timer.log. В этот файл плагин пишет себе заметку, что уже положил открытку на стенку имениннику. Это нужно для того, чтобы не бомбить именинника в каждое срабатывание задачи крон (читай — каждый час, если Планировщик настроен на срабатывание каждый час). Благодаря этому логу плагин поздравляет виновника один раз и затыкается. Он скромный.
3. Языковой файл плагина. В папке languages\ru\plugins\p_happy_Birthday.php. Думаю, тут все понятно — если вдруг захотите сделать язык админки плагина на английском, украинском или казахском языках (по крайней мере, я слышал о существовании этих локализаций).
Установка комплекта на сайт
Скачайте у меня архив и распакуйте его в корень сайта. Затем следует настроить Планировщик заданий на хостинге, задачу cron и установить плагин.1. Настройка Планировщика заданий хостинга
Надеюсь, Вы уже настроили у себя на хостинге Планировщик заданий. Если нет, читайте эту статью в моем блоге.Напомню, что если Вы настроите Планировщик заданий на своем хостинге на срабатывание реже, чем раз в сутки, корректную работу плагина я не гарантирую. После настройки Планировщика Вам следует настроить задачу cron движка своего сайта.
2. Настройка задачи CRON.
Для настройки задачи cron из комплекта движка сайта идете в админку. Админка->Настройки->Задачи CRON. Нажимаете зеленый плюсик и создаете новую задачу (см. скриншот):Здесь все понятно и очевидно, кроме одного момента — какой настроить интервал? На сайте, который я сейчас делаю, есть и другие задачи крон, которые должны срабатывать каждый час. Поэтому и Планировщик заданий на хостинге настроен на интервал один час. Согласитесь, было бы странно, если бы при такой настройке на стене пользователя в течение суток появлялось бы 24 открытки.
Можно было бы пойти по легкому пути и настроить Планировщик на срабатывание раз в сутки. Или, раз Планировщик срабатывает каждый час, выставить интервал задачи CRON 24 часа. Тогда и плагин бы получился проще. Проще плагин — больше головной боли у пользователя. Поэтому мне пришлось пойти по пути наибольшего сопротивления. Плагин сам следит за количеством помещенных на стену поздравительных открыток.
Чтобы Вам не ломать голову, подскажу примерное соотношение настроек Планировщика, интервала задачи CRON движка и настройки "Примерное время" плагина. Для корректной работы требуется, чтобы Планировщик срабатывал минимум раз в сутки (лучше несколько раз), интервал задачи CRON выставляете равным нулю (то есть задача запускается при каждом срабатывании Планировщика) и Примерное время плагина ставите так, чтобы оно было ПЕРЕД дневным срабатыванием Планировщика. Плагин при своем вызове сравнивает текущее время сервера с временем, зачитанным из своей настройки. Если время сервера больше или равно — тогда плагин помещает открытку на стену именинника. То есть, если Планировщик настроен на срабатывание в 0, 6, 12, 18 часов каждых суток, а вы оставите Примерное время 8:00, то открытка появится на стене именинника в 12:00.
3. Установка и настройка плагина
Установка плагина. Идите в админку Админка -> Дополнения -> Установить плагины.Найдите данный плагин "С днем рождения!" и установите его, щелкнув по его названию.
Пройдите в Админка -> Дополнения -> Плагины и включите плагин.
По идее, он должен уже работать. Но админка плагина содержит некоторые настройки, которые Вы можете изменить, чтобы подогнать внешний вид открытки под дизайн своего сайта.
Настройки плагина
(см. скриншот ниже):
1. Введите текст сообщения. Тут естественно, сам текст поздравительной открытки. Можете писать, что хотите.
2. Введите подпись под сообщением. Аналогично. Можете вместо "Ваш админ" написать "Желаю много счастья Пух"
3. Укажите примерное время, когда поздравление поместить на стену. По умолчанию указано 8:00, но вы можете указать другое время, например, 13:43.
Примечание 1. Вообще то это время сервера (хостинга) и может отличаться от Вашего локального времени.
Примечание 2. Время указывается именно в таком формате час: минута. И никак иначе. Укажете иначе — работоспособность плагина я не гарантирую.
4. Укажите путь к папке с рисунками. Поскольку я рисунки — анимашки забросил в папку images плагина, то и указал путь к ней. Если вы вдруг решили изображения брать из другой папки, то пропишите здесь правильный путь к ней по приведенному образцу. Хотя я рекомендую просто в папку плагина с изображениями картинок накидать.
5. Дальше идет пять настроек css. Сюда можете писать свойства стилей для элементов по схеме:
При тех настройках, что Вы видите по умолчанию, открытка будет выглядеть примерно так (не забудьте, что рисунок случайный):
Как скачать.
Скачать можно бесплатно, то есть даром, из моего профиля тут.Куда говорить спасибо
яд 410011913797936wmr 342960323367
карточка сбербанка 67619600 0308703785
Удачи в программировании.
Реклама #
HostelB 9 лет назад #
Rossoman 9 лет назад #
letsgo 9 лет назад #
Владимир Савенко ✝️ 9 лет назад #
Огромное дело сделал.
Скромно и ненавязчиво напоминаю о нашем разговоре про оповещение друзьям на электронку или личным сообщением о дне рождения.друга.
Забыл? Или это будет в следующей версии?
Странник 9 лет назад #
Теперь так же потихоньку буду писать напоминалку. Второй плагин будет запускаться от той же задачи крон, что и первый, но работать отдельно. У такого решения есть еще один плюс в том, что админ сайта может решить, что первый плагин ему нужен, а второй нет - или наоборот.
Мне еще со вторым плагином (а, возможно, и с первым) придется решить одну этическую проблему. Как быть, если пользователь указал в своем профиле "не показывать дня рождения"? Все равно поздравлять или нет? Сейчас первый плагин поздравляет все равно. Я могу, конечно модифицировать плагин, чтобы он молчал, если ДР в профиле скрывается. Меня очень торопили с его опубликованием, пришлось публиковать "как есть".
Что мне сообщество подскажет?
Владимир Савенко ✝️ 9 лет назад #
А торопиться не надо. Лучше медленно но верно)))
Олег Васильевич я 9 лет назад #
Майкл 9 лет назад #
Очень ждали!!!
Майкл 9 лет назад #
Странник 9 лет назад #
Майкл 9 лет назад #
Зажали подсказки
Александр 9 лет назад #
Раньше был похожий хак от Марата, вот он там конечно проще просто крон задача, но тоже очень приятно было пользователям получать сообщение.
А ваш отправляет личное сообщение? (П,С. а то не все смотрят свою стену, даже я лично будучи, что после авторизации перебрасывает на профиль)
Странник 9 лет назад #
Про хак от Марата не знал, благодарю, что подсказали.
Александр 9 лет назад #
да пожалуйста,
вам огромное спасибо, что делитесь с сообществом своими прекрасными дополнениями!
Майкл 9 лет назад #
Вставляю код
Ничего не происходит, кто знает почему?
Странник 9 лет назад #
Странник 9 лет назад #
1. Оповещение друзей именинника о том, что у пользователя день рождения. Оповещение идет на емайл всех друзей именинника, и одновременно в личку. В связи с этим вопрос: это должно происходить именно в день дня рождения или за один (два, три) дня?
В первом случае мне меньше работы - мне достаточно добавить в существующий плагин с десяток строк кода. Sql-запрос к базе на получение именинников остается тем же. Мне быстрее.
Если сообщество мне скажет, что надо оповещать на два-три дня, мне придется писать и отлаживать еще один плагин. Больше работы и гораздо дольше по времени, хотя такой плагин будет более универсален.
Поэтому спрашиваю: какой из двух вариантов мне делать?
2. Майкл отдельно хочет, чтобы в Ленте событий появлялась запись о поздравлении имярек с днюхой. Мне странно, почему он к сообществу обращается, а не ко мне (вроде я не монстр и не кусаюсь).
Вопрос такой: кому нибудь кроме Майкла это нужно? Если нужно, я внесу в плагин эту функцию. Если нет - буду ждать от Майкла внятного обращения))))
Нил™ 9 лет назад #
Александр 9 лет назад #
Оповещение конечно нужно, а что тут плохого? еще бы на почту приходило им было бы еще лучше.
И можно как у Марата, чтоб приходило личное сообщение с поздравлением и отсылалось на почту, а там типа загляните к нам на сайт мы вас поздравили посмотрите на своей стене и ссылка. ну или не знаю как лучше. главное ЛС еще читают, а вот я свою стенку раз в неделю смотрю, хотя на своём сайте бываю утром и ночью иногда и весь день, то есть 2 раза в день точно, почти все своё свободное время, что то делаю и приглядываю за ним.
Хорошо бы, сразу оповещение друзьям, оповещение пользователю, всем письма счастья на почту)))
Странник 9 лет назад #
Майкл 9 лет назад #
Александр 9 лет назад #
Майкл 9 лет назад #
Чего-то сам потыкался и не получилось в ленту активности сие дело внедрить
Странник 9 лет назад #
Майкл, прошу понять меня правильно, я сейчас занят в большом проекте и очень устаю. Этот плагин я делал в свободное время, отрывая от сна))))
Pasha 9 лет назад #
Soul 9 лет назад #
Странник, спасибо от всего сообщества за проделанную работу и за поддержку темы.
Работа в данном направлении велась не раз..., но до актуальной версии icms не дошла (к сожалению) ни одна... тем ценнее для сообщества Ваша работа.
Странник 9 лет назад #
Придется делать. Только мне подробное ТЗ нужно. Точнее, следует расписать, каким образом напоминать (email, ЛС, в ленте активности или на стену), кому (друзьям, всем, зареганым), за сколько (неделя, три дня или в день рождения) и в зависимости от настроек профиля именинника (отправлять ли напоминание, если юзер в профиле выключил показ ДР)?
Soul 9 лет назад #
Странник 9 лет назад #