Вариант 1
Первым делом была опробована поддержка при помощи добавления стандартного bbCode:
Админка > Сообщения > BBcodes:
Использование
Код: Выделить всё
[hashtag]{TEXT}[/hashtag]
Замена
Код: Выделить всё
<a href="./search.php?keywords=%23{TEXT}&terms=all&author=&sc=1&sf=firstpost&sr=posts&sk=t&sd=d&st=0&ch=300&t=0&submit=Поиск"><b>#{TEXT}</b></a>
Подсказка
Код: Выделить всё
Вводите хэштег без символа решетки. Используйте один хештег за один раз.
Данный способ подсмотрен в интернете при поиске вариантов по реализации этого функционала.
Особенности:
- Автораспознавания нет - необходимо обрамлять хештег в BBcode
- Работает только в разделах где BBcode включен
- Также BBcode не должен быть отключен в самом сообщении
- Каждый отдельный хештег необходимо раздельно обрамлять в BBcode
- Символ "решетки" прописывать не нужно - он появляется сам
- Текст хештега сам станет "жирным"
- Хештег преобразовывается в специальную ссылку на поисковый запрос с предопределенными параметрами
- Регистр символов на поисковую выдачу не влияет - можно использовать как "хештег", так и "ХешТег" или "ХЕШТЕГ"
- Хештег можно разместить в любом сообщении, но при нажатии на него будут найдены только первые сообщения тем где он указан
Это сделано намеренно, чтобы не забивать поисковую выдачу лишними результатами - При необходимости можно отобразить результаты не только по первым сообщениям, но и по последующим комментариям - используйте поиск
- При переходе в тему со страницы поиска - будут подсвечены все использования хештега, а не только в первом сообщении
Как указано выше, бывают ситуации, когда bbCode требуется отключить в конкретном сообщении или вообще для всего раздела. Например, это может быть необходимо когда какой-то раздел настроен на выгрузку контента через RSS/Atom в иные ресурсы (VK/Telegram/etc), так как при форматировании через bbCode все будет выглядеть очень неприглядно.
Для таких случаев можно использовать расширение Markdown
alfredoramos/markdown
https://github.com/AlfredoRamos/phpbb-ext-markdown. Тот же VK очень хорошо принимает разметку поста выполненную посредством этого расширения и отобразит его вполне приемлемо.При наличии отключенного bbCode, но включенного Markdown для добавления хештега, как в первый пост, так и для последующих упоминаний в комментариях, потребуется использовать следующую конструкцию:
[**#хештег**](/search.php?keywords=%23хештег&terms=all&author=&sc=1&sf=firstpost&sr=posts&sk=t&sd=d&st=0&ch=300&t=0&submit=Поиск)
Где хештег следует заменить на нужный (в двух местах!).
Следует учитывать, что внешний вид ссылок создаваемых через Markdown несколько отличается от обычных (это возможно исправить внеся изменения в стили расширения).
Вариант 2
Вторым вариантом стало расширение RH Topic Tags
robertheim/topictags
https://github.com/RobertHeim/phpbb-ext-topictags которому на phpBBguru посвящено немало страниц в соответствующей теме.После применения корректировок указанных в теме расширения, устанавливаем в
Админка > Настройка расширений > RH Topic Tags > Настройки
в Настройки тегов > Регулярное выражение для разрешенных тегов:
значение /^[a-zячсмитьбюэждлорпавыфйцукенгшщзхъёЯЧСМИТЬБЮЭЖДЛОРПАВЫФЙЦУКЕНГШЩЗХЁ0-9]{3,30}$/i
Таким образом, мы разрешим использование тегов на кириллице и латинице, с использованием цифр, но без иных символов и пробелов.
После создаем новый bbCode в
Админка > Сообщения > BBcodes:
Использование
Код: Выделить всё
[tag]{TEXT}[/tag]
Замена
Код: Выделить всё
<span class="rh_tag"><a href="./tag/{TEXT}"><b>#{TEXT}</b></a></span>
Подсказка
Код: Выделить всё
Вводите хэштег без символа решетки. Используйте один хештег за один раз.
В результате, при создании нового топика мы можем задавать теги для темы через расширение, а в любых других сообщениях ссылаться на эти темы через bbCode.
Разумеется, не забудьте включить функционал тегов для нужных форумов в
Форумы > Управление форумами
и при необходимости задать соответствующие права для своих пользователей и групп в Права доступа > Глобальные права доступа
(настройка прав становится доступна при внесении исправлений, указанных вот в этом сообщении на странице расширения!)