Pstyle-изображения

 Немного подумав, решил просто выводить исходные картинки в pstyle режиме. Не заморачиваясь перехватом обработчиков и созданием мелких превьюшек. Все равно по соображению все такие картинки не должны быть сильно большими.

 Вообще, почему пришлось так заморочиться этими стилями?

  1. В версии сайта 1.0 картинки складировались вручную и прописывались в javascript коде для вывода из определённого стиля. Это обеспечивало свою динамику, но создавало неудобство в плане управления этими картинками.
  2. В версии 2.0 осталась частично эта схема. С учётом того, что эта версия уже поддерживала свою динамику управления материалом и имела собственные механизмы управления javascript кодом, подобный подход выглядел уже весьма некрасивым. Кроме того, попытки перейти на автоматизацию процесса (например, генерируя код средствами php), натыкались на такое явление как кэширование материалов. Т.е. случайный стиль кэшировался как основной и потом выводился вне зависимости от настроек. Отключать кэширование - идея ещё хуже, так как способствует неприятной нагрузке сервера. Хостерам это могло бы не понравиться. Самой большой заморочкой являлось то, что а) нужно знать какие стили есть б) какие картинки можно подцеплять к кому.
  3. В версии 3.0 было решено изменить в целом концепцию генерации pstyle картинок. Javascript остался, но картинки цепляет он несколько по иному.

В целом, учитывая проблему кэширования, идея реализации функционала pstyle в версии 3.0 выглядит следующим образом:

  • Существуют альбомы с жестко заданным типом функциональности pstyle, которыми можно свободно управлять в режиме онлайн. Каждый альбом представляет собой один из стилей. В нем можно задать обложку и изображение по умолчанию.
  • В альбомах можно свободно манипулировать существующими картинками, привязывая их к определенным персонажам.
  • При генерации страницы код определяет, какие картинки для каких персонажей существуют в заданных стилях и прописывает пути к ним в формате, понятном для Javascript. Эта информация кладётся в блок на странице. Блок кэшируется и перегенерации каждый раз не происходит. Отсюда важное следствие: если добавились новые картинки в стилях или новые стили, то необходимо очистить кэш, чтобы все изменения принялись и блок перестроился.
  • В том месте, где должна сгенерироваться pstyle картинка, прописывается код, указывающий какую именно картинку нужно использовать в этом месте.
  • По механизму самого Drupal, js-файл, обеспечивающий итоговый функционал по выводу, подключается в конце страницы.
  • После загрузки всей страницы js-файл собирает информацию о тех местах, где должны быть картинки и ищет им соответствия, подцепляя нужные  пути. Таким образом, он и выводит итоговое изображение.
Теги блога