Если вам приходилось на практике использовать движок phpBB, то вы наверняка знакомы с его популярным шаблоном prosilver. Этот шаблон устанавливается по умолчанию, при первичной установке форумного движка. Многие форумы используют данный шаблон в качестве основного, модифицируя их иногда под свои нужды, а иногда оставляя как есть. Есть некоторые особенности отображения подфорумов на главной странице, о которых мы поговорим далее. По умолчанию в данном шаблоне подфорумы отображаются в виде списка, через запятую. Если подфорумов значительное количество, то для более удобного восприятия было бы здорово выставить список не через запятую, как это есть по умолчанию, а в две колонки.
О том, как выставить речь пойдет далее. Первое что нужно сделать, это внести изменения в файл include/functions_display.php. Находим следующую строку:
$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(); $columns = 2; // how much columns $result = 0; $s_subforums_list = '<table><tr>'; foreach ($subforums_list as $subforum) { $s_subforums_list .= '<td><a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '">' . $subforum['name'] . '</a> </td>'; $result++; if($result % $columns == 0) { $s_subforums_list .= '</tr><tr>'; } } $s_subforums_list .='</tr></table>';
В результате должен получиться показ подфорумов в таком виде:
Для phpBB 3.2 код немного отличается, поэтому аналогичным образом находим код в файле functions_display.php.
$s_subforums_list = $subforums_row = array(); foreach ($subforums_list as $subforum) { $s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '" title="' . (($subforum['unread']) ? $user->lang['UNREAD_POSTS'] : $user->lang['NO_UNREAD_POSTS']) . '">' . $subforum['name'] . '</a>'; $subforums_row[] = array( 'U_SUBFORUM' => $subforum['link'], 'SUBFORUM_NAME' => $subforum['name'], 'S_UNREAD' => $subforum['unread'], 'IS_LINK' => $subforum['type'] == FORUM_LINK, ); } $s_subforums_list = (string) implode(', ', $s_subforums_list);
Заменяем его на этот:
$columns = 2; // how much columns $result = 0; $subforums_row = array(); $s_subforums_list = '<table class="subf-list"><tr>'; foreach ($subforums_list as $subforum) { $s_subforums_list .= '<td><a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '"><i class="icon' .($subforum['type'] == FORUM_LINK ? ' fa-external-link' : ' fa-file-o').' fa-fw '.($subforum['unread'] ? 'icon-red': 'icon-blue').'icon-md" aria-hidden="true"></i>'. $subforum['name'] . '</a></td>'; $result++; if($result % $columns == 0) { $s_subforums_list .= '</tr><tr>'; } $subforums_row[] = array( 'U_SUBFORUM' => $subforum['link'], 'SUBFORUM_NAME' => $subforum['name'], 'S_UNREAD' => $subforum['unread'], 'IS_LINK' => $subforum['type'] == FORUM_LINK, ); } $s_subforums_list .='</tr></table>';
Затем, есть правим сам шаблон, файл /styles/prosilver/template/forumlist_body.html. Находим содержимое:
<!-- IF .forumrow.subforum and forumrow.S_LIST_SUBFORUMS -->
Приводим к такому виду:
<!-- IF .forumrow.subforum and forumrow.S_LIST_SUBFORUMS --> <!-- EVENT forumlist_body_subforums_before --> <br /> {forumrow.SUBFORUMS} <!-- EVENT forumlist_body_subforums_after --> <!-- ENDIF -->
Перед тем как проверять, после внесений изменений не забудьте почистить кэш!