Календарь на PHP
PHP-класс для вывода календаря на месяц, год или любой другой интервал с возможностью выделить отдельные даты и вывести к ним подсказки.
class Calendar { /** * Вывод календаря на один месяц. */ { 1 => 'Январь', 2 => 'Февраль', 3 => 'Март', 4 => 'Апрель', 5 => 'Май', 6 => 'Июнь', 7 => 'Июль', 8 => 'Август', 9 => 'Сентябрь', 10 => 'Октябрь', 11 => 'Ноябрь', 12 => 'Декабрь' ); $out = ' <div class="calendar-item"> <div class="calendar-head">' . $months[$month] . ' ' . $year . '</div> <table> <tr> <th>Пн</th> <th>Вт</th> <th>Ср</th> <th>Чт</th> <th>Пт</th> <th>Сб</th> <th>Вс</th> </tr>'; $day_week--; $out.= '<tr>'; for ($x = 0; $x < $day_week; $x++) { $out.= '<td></td>'; } $days_counter = 0; for ($day = 1; $day <= $days_month; $day++) { $class = 'today'; $class = 'last'; } else { $class = ''; } $event_show = false; foreach ($events as $date => $text) { $date[2] = $y[0]; } $event_show = true; $event_text[] = $text; } $event_show = true; $event_text[] = $text; } $event_show = true; $event_text[] = $text; } } } if ($event_show) { $out.= '<td class="calendar-day ' . $class . ' event">' . $day; } $out.= '</td>'; } else { $out.= '<td class="calendar-day ' . $class . '">' . $day . '</td>'; } if ($day_week == 6) { $out.= '</tr>'; if (($days_counter + 1) != $days_month) { $out.= '<tr>'; } $day_week = -1; } $day_week++; $days_counter++; } $out .= '</tr></table></div>'; return $out; } /** * Вывод календаря на несколько месяцев. */ { $begin = true; $out = '<div class="calendar-wrp">'; do { $out .= self::getMonth($curent[0], $curent[1], $events); if ($curent[0] == $end[0] && $curent[1] == $end[1]) { $begin = false; } $curent[0]++; if ($curent[0] == 13) { $curent[0] = 1; $curent[1]++; } } while ($begin == true); $out .= '</div>'; return $out; } }
CSS-стили:
.calendar-item { width: 200px; display: inline-block; vertical-align: top; margin: 0 16px 20px; font: 14px/1.2 Arial, sans-serif; } .calendar-head { text-align: center; padding: 5px; font-weight: 700; font-size: 14px; } .calendar-item table { border-collapse: collapse; width: 100%; } .calendar-item th { font-size: 12px; padding: 6px 7px; text-align: center; color: #888; font-weight: normal; } .calendar-item td { font-size: 13px; padding: 6px 5px; text-align: center; border: 1px solid #ddd; } .calendar-item tr th:nth-child(6), .calendar-item tr th:nth-child(7), .calendar-item tr td:nth-child(6), .calendar-item tr td:nth-child(7) { color: #e65a5a; } .calendar-day.last { color: #999 !important; } .calendar-day.today { font-weight: bold; } .calendar-day.event { background: #ffe2ad; position: relative; cursor: pointer; } .calendar-day.event:hover .calendar-popup { display: block; } .calendar-popup { display: none; position: absolute; top: 40px; left: 0; min-width: 200px; padding: 15px; background: #fff; text-align: left; font-size: 13px; z-index: 100; box-shadow: 0 0 10px rgba(0,0,0,0.5); color: #000; } .calendar-popup:before { content: ""; border: solid transparent; position: absolute; left: 8px; bottom: 100%; border-bottom-color: #fff; border-width: 9px; margin-left: 0; }
Вывод календаря на текущий месяц:
Календарь на три месяца
Календарь на год:
Вывод календаря на текущий год с выделенными днями праздников и других событий.
В массиве $events даты могут быть в следующем формате:
d – день месяца, при таком формате, заданный день будет выделятся каждый месяц.
d.m – день и месяц, такая дата будет выделятся раз в год.
d.m.Y или d.m.Y H:i – точная дата.
'16' => 'Заплатить ипотеку', '23.02' => 'День защитника Отечества', '08.03' => 'Международный женский день', '31.12' => 'Новый год' );