Календарь событий
Добавляет на форум календарь с праздниками и событиями на форуме.
Автор: Romych
Платформа: MyBB
Я сделал всего 2 опции:
1. список праздников
2. метод по которому выдаётся максимальное количество ваших пользователей, подбирается индивидуально под каждый форум. Если на форуме много активных пользователей, которые часто пользуются системой оценки поста (+ и -), то оптимальным будет метод - respect. Если просто активные пользователи, которые часто пишут, но не пользуются всякими там плюсиками, то оптимален метод - num_posts
Сразу предупреждаю, абсолютно все пользователи указавшие дату своего дня рождения в Календарь не попадут (ограниченность API)! Кстати, как и не попадут, те кто указал не полную дату. Отсутствие года гарантирует вам непопадание в Календарь.
Внешний вид календаря можете оформить на свой вкус, все правила подписаны. Внешний вид ячеек с праздничными днями тоже можно оформить индивидуально поскольку у них есть уникальный селектор, например селектор ячейки первого января:
td[data-iso="01-01"]
где сначала идёт месяц, потом день
По такому же принципу составляется список праздничных дней, сначала месяц, потом день:
var prazdnik = [{dn: '01-01', celebrate: 'Новый год'}, {dn: '01-07', celebrate: 'Рождество Христово'}, {dn: '01-14', celebrate: 'Старый Новый год'}, {dn: '02-23', celebrate: 'День защитника Отечества'}, {dn: '03-08', celebrate: 'Международный женский день'}, {dn: '04-01', celebrate: 'День смеха (День дурака)'}, {dn: '05-01', celebrate: 'День трудящихся'}, {dn: '05-09', celebrate: 'День Победы'}, {dn: '06-12', celebrate: 'День России'}, {dn: '11-04', celebrate: 'День народного единства'}, {dn: '11-07', celebrate: 'День Октябрьской революции 1917 года'}]
Кстати, во всплывающей подсказке праздничного дня можно сделать изображение стикер. У кого возникнет такое желание, сначала закачайте эти стикеры куда-нибудь, потом пишите мне, сделаем правки в скрипте для вас.
Куда ставить код?
Оптимально в описание любого форума: Администрирование -> Форумы -> Редактировать (описание любого форума)
<style type="text/css"> /* Таблица календаря */ .calendar { border: 0px; border-collapse: collapse; font-family: Arial; width: auto !important; } /* Заголовок */ .calendar th { text-align: center; height: 25px; background: #ebf0f5 !important; color: #8996a3 !important; border-bottom: 1px solid #ebf0f5 !important; } /* Заголовок праздника */ .calendar th.holiday { color: #FF0000 !important; } /* Ячейка дня */ .calendar td { border-left: 1px solid #ebf0f5 !important; border-right: 1px solid #ebf0f5 !important; border-bottom: 1px solid #ebf0f5 !important; color: rgb(44, 86, 122); position: relative; white-space: nowrap; width: 95px; height: 40px; } @media screen and (max-width: 640px) { .calendar td {width: 65px;height:25px;} #imn {width: 20px;height: 20px;} .holiday .day_num {width: 12px !important; height: 11px !important;} .day_num {font-size: 9.5px !important;} #clndr {width: 16px;height: 16px;} } /* Блок с отображающейся датой (день) */ .day_num { position: absolute; top: 2px; left: 6px; text-align: center; color: #99acbf; font-size: 12.5px; } /* Пустой день */ .calendar td.pust { background: transparent !important; border: none !important; } /* Выбранный день */ .calendar td.selected { outline: 2px solid #98b0cd; } /* Праздничный день */ .calendar td.holiday { background: #fafbfc !important; } /* Блок с отображающейся датой (праздничный день) */ .calendar .holiday .day_num { cursor: pointer; color: #555; background: #FFE082; border-radius: 50%; border-color: #FF9800 !important; border: 1px solid; width: 18px; height: 17px; } /* Кнопки навигации */ .calendar td.navigation { text-align: center; border: 0px none !important; font-size: 15px; cursor: pointer; white-space: nowrap; } .calendar td a {bottom: -7px;} /* Наложение аватаров друг на друга (необходимо при большом количестве именинников в один день) */ .calendar td a:nth-child(2) {left: -10px;} .calendar td a:nth-child(3) {left: -20px;} .calendar td a:nth-child(4) {left: -30px;} .calendar td a:nth-child(5) {left: -40px;} .calendar td a:nth-child(6) {left: -50px;} .calendar td a:nth-child(7) {left: -60px;} /* Всплывающий блок Календаря */ #calendar_table { display:none; position: fixed; top: 10%; background: #fff; padding: 15px; z-index: 9; margin: 0 auto !important; border-radius: 9px; -moz-box-shadow: 0px 0px 40px #444; -webkit-box-shadow: 0px 0px 40px #444; box-shadow: 0px 0px 40px #444; } /* Кнопка иконка календаря */ #clndr {position:relative;float:right;top: -15px;cursor: pointer;} </style> <div id="calendar_table"></div> <!-- Календарь событий--> <script type="text/javascript"> var prazdnik = [{dn: '01-01', celebrate: 'Новый год'}, {dn: '01-07', celebrate: 'Рождество Христово'}, {dn: '01-14', celebrate: 'Старый Новый год'}, {dn: '02-23', celebrate: 'День защитника Отечества'}, {dn: '03-08', celebrate: 'Международный женский день'}, {dn: '04-01', celebrate: 'День смеха (День дурака)'}, {dn: '05-01', celebrate: 'День трудящихся'}, {dn: '05-09', celebrate: 'День Победы'}, {dn: '06-12', celebrate: 'День России'}, {dn: '11-04', celebrate: 'День народного единства'}, {dn: '11-07', celebrate: 'День Октябрьской революции 1917 года'}], metod = 'num_posts'; //num_posts или respect </script> <script type="text/javascript" src="http://forumstatic.ru/files/0017/d8/50/11373.js"></script>
Можно сделать отображение Календаря не на главной, а на отдельной странице.
Скрипт рекомендуется ставить на активные форумы, где количество зарегистрированных пользователей не меньше 100 ( а лучше от 1000). На малых форумах он мало информативен и будет выдавать ошибку в консоли, хотя она ни на что не влияет.