Делаем стили prosilver статическими

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
vooon
Former team member
Сообщения: 55
Стаж: 19 лет 7 месяцев
Поблагодарили: 2 раза

Делаем стили prosilver статическими

Сообщение vooon »

Сидел смотрел тут вкладку «Net» FireBug'а и заметил что статус у ./style.php всегда 200 OK.
Это мне не понравилось (хоть и 10 КиБ, но каждый раз же!) и решил сделать стили статическими,
а за одно и пожать файл yuicompressor'ом.

Решил выложить, вдруг кому пригодится.

/includes/functions.php

Код: Выделить всё

FIND:
	// The following assigns all _common_ variables that may be used at any point in a template.
	$template->assign_vars(array(
ADD BEFORE:
	$t_stylesheet_link = "{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme/pack/stylesheet-' . $user->data['user_lang'] . '.css';

FIND:
		'T_STYLESHEET_LINK'		=> (!$user->theme['theme_storedb']) ? "{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme/stylesheet.css' : "{$phpbb_root_path}style.$phpEx?sid=$user->session_id&id=" . $user->theme['style_id'] . '&lang=' . $user->data['user_lang'],
REPLACE:
		'T_STYLESHEET_LINK'		=> (!$user->theme['theme_storedb']) ? "{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme/stylesheet.css' : ( (file_exists($t_stylesheet_link)) ? $t_stylesheet_link : "{$phpbb_root_path}style.$phpEx?sid=$user->session_id&id=" . $user->theme['style_id'] . '&lang=' . $user->data['user_lang'] ),
Привести вид конфигов картинок к ini (форум этого не заметит, а писать свой парсер уже не нужно)

/styles/prosilver/imageset/imageset.cfg

Код: Выделить всё

FIND:
# General Information about this style
ADD BEFORE:
[general]

FIND:
# Images
ADD BEFORE:
[images]
/styles/prosilver/imageset/{lang}/imageset.cfg

Код: Выделить всё

FIND:
# Images
ADD BEFORE:
[images]
Добавляем каталоги pack/ в /styles/prosilver/template/ и /styles/prosilver/theme/
Правим конфиг ./maintenance/update-prosilver.conf
И запускаем:
./maintenance/update-style.sh prosilver

Зависимости:
  • bash
  • Python (2.4—2.6)
  • yuicompressor http://developer.yahoo.com/yui/compressor/
    для пользователей ArchLinux: есть в AUR;
    для остальных: нужен скрипт-обертка запускающий yuicompressor-x.y.z.jar и передающий параметры командной строки.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
vooon
Former team member
Сообщения: 55
Стаж: 19 лет 7 месяцев
Поблагодарили: 2 раза

Re: Делаем стили prosilver статическими

Сообщение vooon »

Выложил обновленный архив.

Основные изменения:
  • yuicompressor теперь не обязателен, но будет варнинг
  • Если установить в настройках USE_HASH_TEST=1 файлы будут проверяться на изменения, что ускоряет обновление.
    Внимание! хэш-таблицы создаются в /tmp
  • Добавлен скрипт update-trans.sh — штука специфичная, создает/обновляет *.po перевода, компилирует их в *.mo, а за тем сериализирует в JSON нотацию (*.js).
    Требуется для работы некоторых моих js скриптов.
    Для работы этого скрипта нужен simplejson.
  • Оставил свой конфиг.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Делаем стили prosilver статическими

Сообщение Nekstati »

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

1. Открываем файл форум/includes/functions.php и вносим две поправки:

Код: Выделить всё

//=== Найти ===

	// The following assigns all _common_ variables that may be used at any point in a template.
	$template->assign_vars(array(

//=== Добавить перед ===

	$t_stylesheet_link = "{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme/stylesheet-' . $user->data['user_lang'] . '.css';

//=== Найти ===

		'T_STYLESHEET_LINK'		=> (!$user->theme['theme_storedb']) ? "{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme/stylesheet.css' : "{$phpbb_root_path}style.$phpEx?sid=$user->session_id&id=" . $user->theme['style_id'] . '&lang=' . $user->data['user_lang'],

//=== Заменить на ===

		'T_STYLESHEET_LINK'		=> (!$user->theme['theme_storedb']) ? "{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme/stylesheet.css' : ((file_exists($t_stylesheet_link)) ? $t_stylesheet_link : "{$phpbb_root_path}style.$phpEx?sid=$user->session_id&id=" . $user->theme['style_id'] . '&lang=' . $user->data['user_lang']),
2. Теперь нам нужна скомпилированная CSS. Как её получить? Таинственными действиями в командной строке Линукса? Да, можно и блины жарить утюгом, но мы пойдём другим путём. Заходим на форум через Firefox или Chrome, нажимаем в браузере Файл → Сохранить как → Веб-страница полностью. Открываем полученную папку и видим в ней файл style.css (или style.php). Это и есть полностью скомпилированная CSS. Открываем её и делаем две массовые замены:
./styles/prosilver/theme/ заменяем на ./
./styles/prosilver/imageset/ заменяем на ../imageset/
Копируем полученный файл в папку форум/styles/prosilver/theme/ и переименовываем его в stylesheet-ru.css.

3. Если на форуме используется несколько языков, заходим в свой личный раздел, меняем язык, а затем повторяем пункт 2 и сохраняем полученную CSS под названием stylesheet-двухбуквенный_код_языка.css.

P. S. В Опере CSS-файл можно получить, введя в адресную строку: http://сайт.ru/style.php?id=1&lang=ru, где 1 — ID стиля, а ru — код языка.

Вернуться в «Для авторов (phpBB 3.0.x)»