ПОЛЕЗНО ДЛЯ ТРЕКЕРОВ
Рассмотрим форум, где в одном из разделов есть много подфорумов, посвященных чем-то однотипному. В качестве конкретного примера - баскетбольный форум с разделом, посвящённым командам. Каждый подфорум соответствует какой-то команде. Задача такая - вместо названия подфорумов выводить картинку-логотип команды. Задача выполнена, ниже я объясню, как это сделать.
Вариант списка форумов до начала работ:
Видно, что текст воспринимается не слишком легко из-за большого количества подфорумов, названия которых перечислены в одной строке. Поэтому заменим их на логотипы соответствующих команд. Для этого понадобится найти эти самые логотипы, причём желательно в одинаковом формате. Затем каждый из логотипов нужно назвать в соответствии с 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,
);
}
Код: Выделить всё
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,
);
}
Код: Выделить всё
$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