В ТЗ заказчик запросил модули новостной ленты, блогов, статей из ежемесячного журнала и еженедельной газеты, ну, и, самое главное, статистику по основным европейским чемпионатам. Всё, кроме последнего, было легко реализовано функционалом самой сms. Также я использовал несколько довольно известных модулей, таких как Advertisement для блока с рандомно-сменяющимися обложками журнала и газеты, Advanced Poll для возможности анонимного голосования с одного ip раз в 24 часа. Ну и стандартный набор Views, ImageCache, Panels, Content Construction Kit (CCK).
Для самой главной задачи — футбольной статистики — я долго искал подходящий модуль, пробовал clubindex, Results, Sports Club Management. Они не подошли либо из-за недостаточной функциональности, либо нужно было ставить столько зависимых модулей Sports Club Management), что опускались руки. В итоге выбор пал на LeagueSite модуль. Версия модуля была alpha 1 или 2, честно говоря, уже не помню, но было понятно, что, во-первых, предстоит покопаться в коде, а во-вторых, ждать развития модуля. Повезло, что автор модуля, Alun, шёл на контакт с энтузиазмом.
В первые пару недель я настроил модуль, перевёл всё необходимое на русский. На тот момент была возможность создания нескольких лиг, возможность занесения новых результатов, жутко тормозная админка матчей (мне нужно было одновременно админить с десяток лиг, а это порядка 600 команд, и матчи каждой из них выводились сразу, а уж потом можно было отфильтровать). Составов и, соответственно, статистики игроков не было, а заказчику нужен был реузльтат. Также не было некоторых других мелочей, вроде логотипов команд, информации о командах (вроде тренера и города из которого была команда), нормальной таблицы. Мелочи быстро сделал, страница команды стала выглядеть так:
Ну, а страница лиги так:
Здесь можно увидеть лого команды (кликабельно), родной город команды, название (кликабельно).
Я решил реализовать всё это стандартным набором модулей. Создал тип материала «Игрок». Связал его по node reference с «Командой». Наполнил игроками все основные команды.
После этого нужно было вывести текущие матчи, анонс и таблицы по каждой из лиг в блоки в правой части сайта. Всё сделал с помощью Views, единственное, пришлось немного пошаманить над видом вывода матча, в оригинале модуля было так "Команда 1 — Команда 0", это не очень здорово. Сделал так:
После этого принялся за Календарь. Здесь опять же использовал Views плюс Panels, но эта часть получилась очень «тяжёлой» (очень много запросов к БД).
К тому времени автор модуля продвинулся ещё и сам сделал добавление игрков, однако, прикрутить обновление себе я уже не мог, слишком много было сделано. Объеденить наши усилия возможности тоже не было. Прошла новая волна переговоров с автором модуля. За это время сделал более приятный вывод статистики матча (посмотрите здесь на матч 10 тур, 10 мая 2010 г., Амкар — Зенит). Добавил вывод статистики по каждому игроку, время на поле, забитые мячи, красные и жёлтые карточки.
Ну, и осталась последняя часть, это вывод статистики по отдельным игрокам, рейтинг бомбардиров и т.п. Вот здесь я застопорился… Пытался опять же по node reference завязать, но так и не понял каким должен быть правильный запрос к бд, чтобы собиралась и складывалась статистика по игроку, например общее количество мячей.
К сожалению, возникли непредвиденные проблемы и заказчик принял решение прекратить развитие проекта. Сейчас, как видите, идёт только обновление новостной ленты...
Думаю, что данный модуль и проект буду доводить дальше для себя, разумеется, не используя контент заказчика.
Выводы:
-Действительно подходящего и готового модуля нет, всегда нужно «допиливать», само собой это не касается стандартных модулей
-На стадии переговоров необходимо обсудить все грани работы, постараться дать чёткие сроки, либо объяснить от чего они зависят
-Важно изначально правильно оценить свои возможности, в процессе «подучиться» не получится
Если тема окажется интересной, буду рад ответить на все ваши вопросы)