Лучший курс действий по поддержке пользовательского BBCode?

Всем привет,

Мы определенно рассматриваем Discourse в качестве альтернативы нашему текущему форумному ПО по разным причинам, но одна из главных задач, которую нам нужно решить, — что делать со всем bbcode, который поддерживается на нашем сайте. Примеры можно посмотреть здесь: Tutorial - RpNation - BBcode Guide | RpNation и здесь: Tutorial - RpNation - BBCode+ Guide | RpNation.

Посмотрев на плагин bbcode для vBulletin в качестве примера, кажется, что добавить поддержку того, что мы уже используем, не составит большого труда. У нас есть множество кастомных тегов bbcode, как видно из руководств: от простых до кастомного тега div, который позволяет пользователям в определённых пределах использовать HTML безопасным способом. Он генерирует уникальный селектор ID для поста, и пользователи не могут обращаться к элементам вне контейнера поста.

Благодаря этому за годы пользователи создавали поистине впечатляющие посты. Вот быстрый пример, который я нашёл, просто бегло просмотрев форум:

Мой вопрос: стоит ли нам сделать это плагином для bbcode или попробовать создать безопасный метод, позволяющий удерживать HTML-селекторы внутри постов, как мы это делаем сейчас с bbcode, и предложить именно этот вариант?

Хотя сама мысль о том, чтобы разрешить пользователям использовать HTML, вызывает у меня лёгкий ужас.

Мы хотим сохранить возможность форматирования постов для пользователей, одновременно обеспечивая безопасность всего контента.

Я понимаю, почему вы присматриваетесь к новому ПО: загрузка Tutorial - RpNation - BBcode Guide | RpNation у меня занимает 2 минуты :scream:

image

Думаю, все ваши пользовательские стили, такие как газета, челленджи, боковые панели, можно реализовать с помощью Generic bbcode wrapper for theme components и CSS.

К тому же многое уже встроено в Discourse: подсветка кода, надстрочные и подстрочные индексы, центрированные блоки, таблицы, цитаты, встроенные спойлеры, разделители, заголовки, вставка медиа и многое другое.

О нет. Это звучит неприятно. У нас настроен Cloudflare и довольно мощный сервер на базе AMD Ryzen. Для меня загрузка всех ресурсов без авторизации занимает около 2 секунд.

Однозначно рассматриваем этот вариант. То есть по сути мы можем добавлять любой HTML/CSS в компонент темы, а затем вызывать его с помощью пользовательского тега BBCode?
[blah]content[/blah]?

Таким образом, в данном случае мы могли бы воссоздать часть нашего функционала с помощью:

[wrap=bg bg=blue] или [wrap=random-name newspaper=1]

Возможно, всё же лучше использовать формат, похожий на формат плагина, чтобы большое количество контента не теряло форматирование. Также нужны множественные необязательные аргументы.

Вы можете заглянуть на Discourse BBCode. Я думаю, что добавить поддержку других кодов должно быть относительно несложно (хотя, честно говоря, у меня возникли трудности с тем, чтобы понять, как это сделать…)

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

Как здорово, мне это очень нравится

Также обратите внимание, что Discourse из коробки поддерживает некоторые ограниченные теги HTML в любом месте содержимого поста, а не только внутри специального контейнера. Например, этот пост обернут в тег <div align=justify>. К сожалению, это нарушает часть встроенного форматирования, вынуждая использовать HTML для всего в абзаце.

https://meta.discourse.org/raw/148941/8

Эта инструкция по bbcode находится в другом движке форума, где нет постов-вики.

Отлично. Хотя я думаю, что нам лучше оставить это как bbcode, который мы добавляем через расширение того самого плагина, чем искать способ предоставить всем больше HTML, который нам придётся делать безопасным.

Мы обнаружили, что официальный плагин Discourse BBCode модифицировать сложнее (из-за нашего низкого уровня навыков разработки плагинов для Discourse), чем этот:

Плагин Awesome BBCodes

Awesome BBCodes Plugin: multi-paragraph, nestable, with auto-complete

Плагин “Awesome BBCodes Plugin” было довольно легко форкнуть, клонировать и взломать/модифицировать; это намного проще, чем плагин “Discourse BBCode”.

Моя рекомендация всем ( @TheDarkWizard ), кто хочет создать собственный BBCode, — начать с плагина “Awesome BBCodes Plugin” и уже оттуда вносить необходимые изменения.

Ага, извините, да, тем более повод для миграции! :slight_smile:

Без проблем :slight_smile:

Обязательно посмотрю. Спасибо!