Журнал «Лыжный спорт»

Журнал «Лыжный Спорт». Тематический портал о лыжном спорте: новостная лента, статьи и электронная версия журнала, форум, база протоколов соревнований, раздел Союза марафонов «Лыжная Россия» (СМЛР), собственная рекламная сеть

Цели и задачи проекта

Техническая поддержка, доработка и разработка нового функционала на действующем проекте

Приём проекта на поддержку

Проект перешёл на сопровождение от предыдущей команды разработки: без документации, с двумя отдельными и во многом разошедшимися шаблонами — десктопным и мобильным. Незадолго до этого сайт был переведён на PHP 8 с изменённым ядром Битрикс, что стало причиной серии скрытых ошибок, проявлявшихся в разных разделах в течение последующих месяцев.

  • Снята полная резервная копия сайта объёмом более 50 ГБ, развёрнута рабочая копия на тестовом сервере.
  • Исходный код перенесён в отдельный репозиторий, введено именование веток по номерам задач.
  • Изменения структуры базы данных переведены на миграции вместо ручных правок в административной панели боевого сайта; для этого дополнительно обновлён Composer на продакшене.
  • Выстроен регламент работы: выполнение на тестовом стенде, проверка заказчиком, код-ревью, перенос на продакшен, повторное тестирование.

Устранение последствий перехода на PHP 8

Более строгая типизация и изменения в поведении стандартных функций вывели из строя часть функционала, написанного много лет назад. Ошибки выявлялись постепенно, по мере обращений заказчика.

  • Восстановлена работа формы обратной связи — отдельно в десктопной и в мобильной версиях сайта.
  • Восстановлена страница восстановления пароля: пользователи, переходившие по ссылке из письма, попадали на заглушку о технических работах.
  • Исправлен вывод списка забаненных пользователей в разделе модерации.
  • Устранена аварийная ошибка на боевом сервере, из-за которой опубликованные новости открывались с системной заглушкой вместо текста.
  • Исправлено условие вывода источника новости, из-за которого источник пропадал при незаполненном поле "Автор материала".

Инструмент модерации комментариев в мобильной версии

Возможность закрыть новость для обсуждения существовала только в десктопной версии сайта: в мобильной кнопки не было, и запрет обходился обычной отправкой комментария с телефона.

  • Функционал "Запретить обсуждение" и "Разрешить обсуждение" перенесён в мобильный шаблон.
  • Исправлена ошибка, из-за которой запрет применялся сразу ко всем новостям вместо выбранной.
  • Реализовано закрытие обсуждения у новостей, где ещё нет ни одного комментария — ранее это не работало и в десктопной версии.
  • Попутно устранена ошибка 500, из-за которой с мобильных устройств перестали открываться темы форума.

Диагностика проблем кеширования и вёрстки

  • Найдена причина "съезжающей" вёрстки в разделах форума и СМЛР: некорректная работа буферизации вывода внутри кеширования компонента. Восстановлен вывод блока с портретами мастеров СМЛР и работа постраничной навигации в разделе.
  • Исправлен баг визуального редактора, из-за которого при модерации статей обрезались панель инструментов и текст.
  • Устранена ошибка, при которой попытка ответить на личное сообщение с мобильного устройства приводила к пустой странице; причина — некорректная работа с буферами вывода в блоке баннеров.
  • Исправлено падение вывода списка и карточек марафонов при незаполненных полях элемента.

Разработка блоков, редактируемых из публичной части

Заказчик не мог самостоятельно менять содержимое ряда блоков сайта — любая правка требовала участия программиста. Задача решалась не точечно, а созданием переиспользуемого механизма.

  • Разработан блок "Партнёры СМЛР" на HighLoad-блоках: миграция для создания хранилища, компонент вывода списка и компонент редактирования прямо на странице сайта, с добавлением, удалением и сортировкой записей.
  • На основе этого решения сделан универсальный редактор, применённый затем к блоку навигации по разделу СМЛР и к блоку "Ссылки от партнёров" в футере главной страницы.
  • Настроены права доступа: редактировать блоки могут не только администраторы сайта, но и отдельная группа пользователей.
  • По уточнённому требованию заказчика вывод коммерческого блока "Ссылки от партнёров" ограничен главной страницей, тогда как ранее он показывался на всех страницах сайта.

Защита от спама и модерация контента

  • Отражена спам-атака на форум: за короткое время боты создали несколько десятков тем с рекламой. Введён запрет на публикацию контента в течение суток после регистрации.
  • Обнаружено, что в мобильной версии создание тем работает через отдельный компонент, не подпадавший под это ограничение, — проверка продублирована и там.
  • Обновлён и перенастроен сторонний антиспам-сервис CleanTalk.
  • По запросу заказчика найден IP-адрес пользователя, обманувшего покупателя через раздел объявлений; на страницу создания объявления выведено предупреждение о мошенничестве в десктопной и мобильной версиях.

Работа с рекламной сетью (Яндекс AdFox)

  • Разобрана проблема с баннерами, которые рекламные агентства присылают в виде готового скрипта: такой баннер грузится во вложенных iframe со стороннего домена с жёстко заданными размерами, из-за чего ломает мобильную вёрстку и не поддаётся стилизации со стороны сайта.
  • Вёрстка рекламных мест адаптирована в пределах технически возможного, для агентства подготовлено описание проблемы с требованиями к коду баннера.

Доработка контентных блоков и разделов

  • Переработан блок анонсов телетрансляций: вместо показа всей текущей недели, включая уже прошедшие дни, реализован вывод от текущего момента до конца недели. Прошедший день убирается не в полночь, а в два часа ночи — с учётом того, что значительная часть аудитории смотрит записи гонок поздно вечером. Изменения применены во всех местах вывода блока: главная, новости, статьи, опросы, форум.
  • В несколько итераций доработан блок авторства и источника новости: приведены к единой логике все варианты заполнения полей — один автор, соавторство, наличие или отсутствие источника, отдельная ссылка на материал; отдельно исправлен вывод в мобильной версии.
  • Создан новый подраздел в разделе "Протоколы", изменён порядок и название подразделов; изменения оформлены миграциями.
  • Восстановлен вывод новостей биатлона в ленте главной страницы: срок актуальности материалов в блоке увеличен с трёх до шести месяцев.
  • Убрана неактуальная иконка социальной сети из шапки сайта и футера мобильной версии.
Портфолио

Похожие проекты