Как стать автором
Обновить

Drupal. Модуль футбольной статистики для сайта на собственном опыте

Здравствуйте! Из всего многообразия модулей созданных для Drupal есть не более десяти, посвящённых спортивным соревнованиям. Это странно, потому что сайтов, посвящённых разным видам спорта, довольно много. Мне самому пришлось столкнуться с дефицитом подобных модулей. Последним проектом, над котором я работал, был eurofootball.ru.

В ТЗ заказчик запросил модули новостной ленты, блогов, статей из ежемесячного журнала и еженедельной газеты, ну, и, самое главное, статистику по основным европейским чемпионатам. Всё, кроме последнего, было легко реализовано функционалом самой с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 завязать, но так и не понял каким должен быть правильный запрос к бд, чтобы собиралась и складывалась статистика по игроку, например общее количество мячей.


К сожалению, возникли непредвиденные проблемы и заказчик принял решение прекратить развитие проекта. Сейчас, как видите, идёт только обновление новостной ленты...


Думаю, что данный модуль и проект буду доводить дальше для себя, разумеется, не используя контент заказчика.

Выводы:
-Действительно подходящего и готового модуля нет, всегда нужно «допиливать», само собой это не касается стандартных модулей
-На стадии переговоров необходимо обсудить все грани работы, постараться дать чёткие сроки, либо объяснить от чего они зависят
-Важно изначально правильно оценить свои возможности, в процессе «подучиться» не получится

 


Если тема окажется интересной, буду рад ответить на все ваши вопросы)

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.