Изображения вместо текстовых ссылок в подфорумах

автор FladeX

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.
 • Просмотры: 712
gu
guru3000
Откуда: Ни.Но
Благодарил (а): 32 раза
Поблагодарили: 40 раз
Сообщения: 139
Зарегистрирован: 01 мар 2010, 13:42
Сообщение

Изображения вместо текстовых ссылок в подфорумах

29 май 2011, 23:38

ПОЛЕЗНО ДЛЯ ТРЕКЕРОВ


Рассмотрим форум, где в одном из разделов есть много подфорумов, посвященных чем-то однотипному. В качестве конкретного примера - баскетбольный форум с разделом, посвящённым командам. Каждый подфорум соответствует какой-то команде. Задача такая - вместо названия подфорумов выводить картинку-логотип команды. Задача выполнена, ниже я объясню, как это сделать.

Вариант списка форумов до начала работ:



Видно, что текст воспринимается не слишком легко из-за большого количества подфорумов, названия которых перечислены в одной строке. Поэтому заменим их на логотипы соответствующих команд. Для этого понадобится найти эти самые логотипы, причём желательно в одинаковом формате. Затем каждый из логотипов нужно назвать в соответствии с id подфорума команды, обладающей данным логотипом. Должно получится что-то вроде 83.jpg, 84.jpg, 102.jpg и так далее.

Теперь загрузим все эти картинки в отдельную папку в директории images. В моём случае папка называлась teams. После этого с графикой всё будет закончено и можно приступать к скриптам.

Откроем файл includes/functions_display.php. Сначала нужно выделить id подфорума в отдельную переменную, чтобы с ней можно было работать - ведь все файлы-логотипы названы по id соответствующих подфорумов. Для этого найдёт такой участок кода:

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

				if ($subforum_row['display'] && $subforum_row['name'])
				{
					$subforums_list[] = array(
						'link'		=> append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $subforum_id),
						'name'		=> $subforum_row['name'],
						'unread'	=> $subforum_unread,
					);
				}
и добавим туда ещё одну строчку с новым элементом массива $subforums_list[]:

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

				if ($subforum_row['display'] && $subforum_row['name'])
				{
					$subforums_list[] = array(
						'link'		=> append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $subforum_id),
						'name'		=> $subforum_row['name'],
						'unread'	=> $subforum_unread,
						'id'		=> $subforum_id,
					);
				}
Теперь нужно при формировании списка подфорума поставить условие на id форума, а затем для выбранного форума выводить список подфорумов не текстом, а картинками. Для этого находим в этом же файле такие строки:

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

		$s_subforums_list = array();
		foreach ($subforums_list as $subforum)
		{
			$s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '" title="' . (($subforum['unread']) ? $user->lang['NEW_POSTS'] : $user->lang['NO_NEW_POSTS']) . '">' . $subforum['name'] . '</a>';
		}
		$s_subforums_list = (string) implode(', ', $s_subforums_list);
и заменим на такой код:

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

		$s_subforums_list = array();
		// by FladeX
		if ($row['forum_id'] == 82)
		{
			foreach ($subforums_list as $subforum)
			{
				$s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum" title="' . (($subforum['unread']) ? $user->lang['NEW_POSTS'] : $user->lang['NO_NEW_POSTS']) . '"><img src="images/icons/teams/' . $subforum['id'] . '.jpg" alt="' . $subforum['name'] . '" /></a>';
			}
			$s_subforums_list = (string) implode(' ', $s_subforums_list);
		}
		else
		{
			foreach ($subforums_list as $subforum)
			{
				$s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '" title="' . (($subforum['unread']) ? $user->lang['NEW_POSTS'] : $user->lang['NO_NEW_POSTS']) . '">' . $subforum['name'] . '</a>';
			}
			$s_subforums_list = (string) implode(', ', $s_subforums_list);
		}
		// by FladeX
Сразу уточню, какие данные здесь являются переменными:
82 - id форума, подфорумы которого мы хотим выводить в виде картинок;
images/icons/teams/' . $subforum['id'] . '.jpg - путь к картинкам-логотипам, а также их формат.

В итоге получился такой список форумов:



Получившийся вариант не отличается компактностью - с правой стороны имеется пустое пространство, которое было бы неплохо заполнить. Для этого уберём пробелы между иконками, чтобы они выводились в ряд без автопереносов, а затем добавим
для отделения новых строк после каждых десяти иконок. Меняем код в includes/functions_display.php на такой:

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

		// by FladeX
		if ($row['forum_id'] == 82)
		{
			$lines_counter = 0;
			foreach ($subforums_list as $subforum)
			{
				$s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum" title="' . (($subforum['unread']) ? $user->lang['NEW_POSTS'] : $user->lang['NO_NEW_POSTS']) . '"><img src="images/icons/teams/' . $subforum['id'] . '.jpg" alt="' . $subforum['name'] . '" /></a>';
				$lines_counter++;
				if ($lines_counter == 10)
				{
					$s_subforums_list[] = '<br />';
					$lines_counter = 0;
				}
			}
			$s_subforums_list = (string) implode('', $s_subforums_list);
		}
		else
		{
			foreach ($subforums_list as $subforum)
			{
				$s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '" title="' . (($subforum['unread']) ? $user->lang['NEW_POSTS'] : $user->lang['NO_NEW_POSTS']) . '">' . $subforum['name'] . '</a>';
			}
			$s_subforums_list = (string) implode(', ', $s_subforums_list);
		}
		// by FladeX


В завершении работы сделаем разное изображение иконок для прочитанных и непрочитанных подфорумов. Пусть ранее заготовленные иконки будут использоваться для варианта с непрочитанным форумом, тогда остаётся добавить такой же комплект для прочитанных форумов. Для этого сделаем иконки того же размера, но отличающиеся цветом, и назовём их по тому же принципу, что делали это в первый раз. Отличие лишь в том, что после идентификатора нужно добавить к названию _read, например, 82_read.jpg. Скопируем полученные изображения в ту же папку, затем ещё раз изменим код на такой:

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

		// by FladeX
		if ($row['forum_id'] == 82)
		{
			$lines_counter = 0;
			foreach ($subforums_list as $subforum)
			{
				if ($subforum['unread'])
				{
					$s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum" title="' . $user->lang['NEW_POSTS'] . '"><img src="images/icons/teams/' . $subforum['id'] . '.jpg" alt="' . $subforum['name'] . '" /></a>';
				}
				else
				{
					$s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum" title="' . $user->lang['NO_NEW_POSTS'] . '"><img src="images/icons/teams/' . $subforum['id'] . '_read.jpg" alt="' . $subforum['name'] . '" /></a>';
				}
				$lines_counter++;
				if ($lines_counter == 10)
				{
					$s_subforums_list[] = '<br />';
					$lines_counter = 0;
				}
			}
			$s_subforums_list = (string) implode('', $s_subforums_list);
		}
		else
		{
			foreach ($subforums_list as $subforum)
			{
				$s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '" title="' . (($subforum['unread']) ? $user->lang['NEW_POSTS'] : $user->lang['NO_NEW_POSTS']) . '">' . $subforum['name'] . '</a>';
			}
			$s_subforums_list = (string) implode(', ', $s_subforums_list);
		}
		// by FladeX
На мой взгляд, очень эффектное решение. Это может пригодится спортивным форумам, автомобильным форумам и любым другим, где есть разделы с большим количеством подфорумов.

Источник: http://fladex.ru/news/a-134.html
Аватара пользователя
votept
Благодарил (а): 49 раз
Поблагодарили: 62 раза
Сообщения: 806
Зарегистрирован: 18 июл 2010, 17:57
Сообщение

Изображения вместо текстовых ссылок в подфорумах

29 май 2011, 23:43

:lol: Не я много видел всякого конечно.... Но такое извращение первый раз вижу. :shock: Без комментариев...
ma
maksvel1999
Благодарил (а): 16 раз
Поблагодарили: 12 раз
Сообщения: 370
Зарегистрирован: 02 ноя 2009, 15:05
Сообщение

Изображения вместо текстовых ссылок в подфорумах

30 май 2011, 01:11

Спс пригодится.
Аватара пользователя
GayveR
Откуда: Кемерово
Благодарил (а): 5 раз
Поблагодарили: 9 раз
Сообщения: 127
Зарегистрирован: 06 янв 2010, 18:31
Сообщение

Изображения вместо текстовых ссылок в подфорумах

31 май 2011, 01:24

у себя делал.... был подфорум сериалов.... и для каждого сериала была отдельная иконка, с одной стороны очень даже неплохо смотрицца
Аватара пользователя
TFan
Откуда: Нижний Новгород
Благодарил (а): 123 раза
Поблагодарили: 54 раза
Сообщения: 201
Зарегистрирован: 05 май 2011, 23:43
Сообщение

Изображения вместо текстовых ссылок в подфорумах

31 май 2011, 22:02

GayveR писал(а):очень даже неплохо смотрицца
Пробывал у себя на старом форуме про жанры фильмов - тоже полезная вещь и более информативная, чем набор слов...
Адаптирую любой шаблон от phpBB3 под любую версию ppkBB3cker.

Вернуться в «Минимоды и хаки для phpBB3»