Сначала вам нужно узнать, в какой день недели начинается месяц, чтобы вы знали, сколько пустых ящиков выплевать. Затем выясните, сколько дней в этом месяце. Затем переберите свои дни, перенося на следующую строку после субботы. Затем заполните оставшуюся часть последнего ряда пустыми полями.
Есть некоторый довольно простой (и прокомментированный) код, который делает это здесь:
http://gitorious.org/wfpl/wfpl/blobs/master/calendar.php
Вы можете использовать этот код без остальной части фреймворка, для которого он предназначен, если просто переписать calender_day()
(который вызывается для каждой ячейки в календаре с первым параметром, сообщающим вам, какой это день (не в месяц, имеет события, без событий) и переписать calendar_week()
, который вызывается в конце каждой строки.
Или вы можете просто посмотреть, как делать соответствующие вещи, например узнать, как далеко через неделю начинается месяц, и так далее.