Здравствуйте! Хочу поделиться с Вами некоторым опытом. Продолжая облагораживать свой форум, пробудил в себе идею, расставить порядок тем, в одном из разделов, таким образом, что-бы не создавать множество подразделов, а что-бы все темы шли одна за другой. Но, что-бы при этом, при желании их всё-таки можно было бы упорядочить(отфильтровать),... например по тэгам(приблизительно так, как это организовано в тот же Flarum-е). Подумал и решил заняться встроенными в vB префиксами тем. Сначала идея показалась удачной, но чем больше тем я стал планировать в задуманном мною разделе, тем больше я стал понимать, что одного префикса для темы недостаточно. Есть темы, которые расходятся по своей смысловой и нарицательной нагрузке в несколько сторон. Например
Adobe Photoshop. С одной стороны это графический редактор растровых изображений, с другой, это часть адобовского пакета приложений, который ныне кличется "Creative Cloud" и многими воспринимается именно в этом контексте, как одна из составных частей огромного комбайна.
Подсказка просилась сама собой, ведь в упомянутом мной Flarum, сортировка производится по
ТЭГАМ, которые так же присутствуют в vB. Однако.... положение дел с тэгами в vB, совсем не такое радужное как хотелось бы.
Набор кликабельных слов в подвале страницы либо всплывающие подсказки над нелепой иконкой...
========================================================================
Должен отметить, что на моём форуме, префиксы совершенно не использовались до сих пор. Не было даже ни одного созданного набора префиксов. Именно этот факт, позволил мне затеять такую манипуляцию...
Что в итоге я получил?
В forumdisplay, в перечне тем, перед названием самой темы теперь у меня гордо веется красочный прямоугольник, кликабельный, после клика по которому можно попасть на страницу результатов поиска по тегу, по которому был произведён клик. Тегов можно добавлять сколько угодно, а можно ограничить количество их вывода перед названием темы(об этом позже). Кроме того, в моём случае, я ограничил вывод таких тегов одним, предназначенным для такого эксперемента разделом.
Итак:
Начнём с модуля.
Местоположение модуля: threadbit_display
Имя и порядок любые...
PHP Code:
$tagarray['taglist'] = explode(",", $thread['taglist']);
$counttags = count($tagarray['taglist']);
for ($i = 0; $i < $counttags; $i++) {
if ($i > 3) break; //именно здесь, можно ограничить количество выводимых тэгов. Обратите внимание, что тут 0 это уже первый тэг, соответственно, дойдя до трёх, мы будем иметь уже 4 тэга. Если Вы не хотите их ограничивать, то просто удалите всю эту строку.
$clickabletag = "<a href=\"tags.php?tag=" . $tagarray['taglist'][$i] . "\">" . $tagarray['taglist'][$i] . "</a>";
$templater = vB_Template::create('clickable_tags');
$templater->register('clickabletag', $clickabletag);
$templatevalues['clickabletags'] .= $templater->render();
vB_Template::preRegister('threadbit', $templatevalues);
}
Далее нужно создать новый шаблон:
Заголовок: clickable_tags
Шаблон:
HTML Code:
<span class="prfx" style="background: #f3ac00;color: white">{vb:raw clickabletag}</span>
Здесь цвета конечно же можете варьировать по своему усмотрению...
В additional.css нужно добавить свои правила:
Code:
.prfx {
transition: 0.5s;
border-bottom-left-radius: 3px 3px;
border-bottom-right-radius: 3px 3px;
border-top-left-radius: 3px 3px;
border-top-right-radius: 3px 3px;
font-size: 0.8em;
font-weight: bold;
padding: 3px 6px 3px 6px;
line-height: 1.7;
text-align: center;
margin: 0px 1px;
}
.prfx:hover {
transition: 0.5s;
background: #006bb9 !important;
}
.prfx a {
color: white;
}
.prfx a:hover {
color: white;
text-decoration: none;
}
Стиль кстати, частично "слындил" где-то здесь же ))))))
И самый ответственный момент....
В шаблоне threadbit, прямо перед строчками в которых создаётся вывод префиксов(или сразу после них), нужно добавить одну строчку:
HTML Code:
<vb:if condition="$GLOBALS[forumid] == ХХХ">{vb:raw clickabletags}</vb:if>
где ХХХ - это id раздела в котором будет использоваться предложенная "система порядка". Опять же... если ограничиваться одним разделом Вы не собираетесь, то тогда достаточно вписать только:
{vb:raw clickabletags}
Пока остаётся открытым вопрос, как результаты поиска по тэгу, ограничить одним разделом?
На этом всё.
Удачи!
taravasya добавил 27.07.2016 в 12:48
Разобрался как ограничить поиск одним разделом. Для этого, в созданном модуле, строку:
PHP Code:
$clickabletag = "<a href=\"tags.php?tag=" . $tagarray['taglist'][$i] . "\">" . $tagarray['taglist'][$i] . "</a>";
заменить на:
PHP Code:
$clickabletag = "<a href=\"search.php?do=process&contenttype=vBForum_Post&include=ХХХ&tag=" . $tagarray['taglist'][$i] . "\">" . $tagarray['taglist'][$i] . "</a>";
Где ХХХ - это id нужного раздела.