Требовалось добавить на форуме фото из первого поста к названию темы. Движок phpBB 3.0.9., шаблон prosilver.
Единственным полуготовым решением на тот момент оказался мод Topic images from attachments v0.2, готовых вообще не нашлось. А полуготовое потому, что требуется "доработать напильником".
Что дает модификация:
Возможность использования изображений тем настраивается для каждого форума
Группам/пользователям можно назначать права на установку изображений тем
В админке можно задать максимальный размер миниатюры для изображения тем (Общие
-> Конфигурация -> Размещение сообщений -> Максимальная ширина/высота
изображения темы) и отключать этот функционал совсем, установив 0
Стандартная структура работы с миниатюрами не нарушена, миниатюры тем не имеют
отношения и обычным миниатюрам изображений
При использовании изображений небольших размеров (меньше максимального для
миниатюр тем) само изображение выводится из оригинального файла, следовательно
можно использовать небольшое анимированное gif-изображение
Как работает:
Пользователь пишет первый пост в теме, загружает изображение (вложения для работы мода должны быть разрешены), жмет "назначить изображение теме", по заданным в админке размерам генерируется превьюшка, которая пишется в папку с вложениями (iles/) с префиксом topic_image_ .Перед названиями в списке тем появляется загруженное изображение.
Установка Topic images
Качаем дистрибутив. Скачать мод. Дополнительная модификация для шаблона subsilver.
Распаковываем на локальном компьютере.
Открываем в браузере install_mod 0.2.xml , выбираем Русский язык (собственно, все понятно и на английском, но есть места, требующие особой внимательности).
Действуем по инструкции:
1. Выполняем SQL запросы к БД (в последнем была опечатка, ниже приведено исправленное)
INSERT INTO `phpbb_acl_options` (auth_option, is_global, is_local, founder_only) VALUES ('f_topic_image', 0, 1, 0);
INSERT INTO `phpbb_config` VALUES ('img_max_topic_image_width', 150, 0);
INSERT INTO `phpbb_config` VALUES ('img_max_topic_image_height', 100, 0);
ALTER TABLE `phpbb_attachments` ADD topic_image tinyint(1) UNSIGNED NOT NULL DEFAULT 0;
ALTER TABLE `phpbb_forums` ADD forum_allow_topic_image TINYINT(1) NOT NULL DEFAULT 0;
ALTER TABLE `phpbb_topics` ADD topic_image_id MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT 0;
UPDATE phpbb_attachments SET topic_image = 1 WHERE in_message = 0 AND post_msg_id IN (SELECT topic_first_post_id FROM phpbb_topics WHERE topic_attachment = 1)
2. Вносим коррективы в файлы:
adm\style\acp_forums.html,
download\file.php,
includes\acp\acp_board.php,
includes\acp\acp_forums.php,
includes\acp\acp_styles.php,
includes\functions_admin.php,
includes\functions_posting.php,
includes\message_parser.php,
language\en\acp\board.php,
language\en\acp\forums.php,
language\en\acp\permissions_phpbb.php,
language\en\posting.php,
language\ru\acp\board.php,
language\ru\acp\forums.php,
language\ru\acp\permissions_phpbb.php,
language\ru\posting.php,
posting.php,
styles\prosilver\imageset\en\imageset.cfg,
styles\prosilver\imageset\ru\imageset.cfg,
styles\prosilver\template\posting_editor.html,
styles\prosilver\template\viewforum_body.html,
styles\prosilver\theme\colours.css,
viewforum.php
Все по инструкции с одним изменением:
в styles\prosilver\template\viewforum_body.html
находим:
<dt<!-- IF topicrow.TOPIC_ICON_IMG and S_TOPIC_ICONS --> style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG}); background-repeat: no-repeat;"<!-- ENDIF --> title="{topicrow.TOPIC_FOLDER_IMG_ALT}"><!-- IF topicrow.S_UNREAD_TOPIC --><a href="{topicrow.U_NEWEST_POST}">{NEWEST_POST_IMG}</a> <!-- ENDIF --><a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a>
заменяем на:
<dt<!-- IF topicrow.TOPIC_ICON_IMG and S_TOPIC_ICONS --> style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG}); background-repeat: no-repeat;"<!-- ENDIF --> title="{topicrow.TOPIC_FOLDER_IMG_ALT}"><!-- IF S_ALLOW_TOPICS_IMAGES and S_TOPICS_WITH_IMAGES --><span style="width:{S_TOPIC_IMAGE_MW}px; float:left" class="topic_image<!-- IF topicrow.TOPIC_IMAGE_LINK --> spinning<!-- ENDIF -->"><a href="{topicrow.U_VIEW_TOPIC}"><img src="<!-- IF topicrow.TOPIC_IMAGE_LINK -->{topicrow.TOPIC_IMAGE_LINK}"<!-- ELSE -->./images/spacer.gif" class="no-photo"<!-- ENDIF --> alt="{topicrow.TOPIC_TITLE}" /></a></span><!-- ENDIF --><!-- IF topicrow.S_UNREAD_TOPIC --><a href="{topicrow.U_NEWEST_POST}">{NEWEST_POST_IMG}</a> <!-- ENDIF --><a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a>
Так помимо отображения в шаблоне миниатюры картинки из первого поста будет установлено и обтекание фото слева.
Все файлы открывать в обычном текстовом редакторе, сохранять в кодировке utf-8. Будьте внимательны, кое где код нужно вписать не после найденной строки, а в эту же строку между определенными символами.
3. Копируем файлы в соответствующую директорию на сервере
Copy: root\styles\prosilver\theme\images\wait.gif
To: styles\prosilver\theme\images\wait.gif
Copy: root\styles\prosilver\imageset\en\no-photo.gif
To: styles\prosilver\imageset\en\no-photo.gif
Copy: root\styles\prosilver\imageset\ru\no-photo.gif
To: styles\prosilver\imageset\ru\no-photo.gif
4. Чистим кэш
5. Идем в админ раздел:
- Права доступа - Форумные права групп - Группа - Форум - Расширенные права - Может назначать изображения темам
- Форумы - Такой-то форум - Изображения тем (да)
На форум установлен seo mod , вроде не конфликтуют.
Собственно, картинка темы при отсутствии в первом посте изображения (или если оно теме не присвоено) лишняя, если ее не копировать на сервер и не использовать, будет просто пустое место вместо изображения темы. Если используете эту заставку, не забудьте очистить кэш картинок вашего шаблона.
Еще есть с этими изображениями тем такая странность: в списке активных тем
категории изображений нет, НО! После некоторых доселе загадочных для меня
манипуляций изображения появляются. Вот эти действия:
в админке - форумы - в выбранной категории жмем "изменить" - ставим тип форума
"форум", ставим "Изображения тем - Да", жмем отправить.
Возвращаемся на предыдущую страницу. Снова жмем "изменить" этот уже форум, а не
категорию - меняем тип форума снова на "категория", удалить содержимое или
переместить - жмем Удалить сообщения, копируем права доступа из нормальной
категории, включить активные темы - Да, отправить.
Теперь и активные темы категории у нас с изображениями тем.