| Краткое описание | Этот компонент темы добавляет настраиваемую защиту внешних ссылок в обработанных постах. Он применяет правила, основанные на уровнях доверия, опциональные перенаправления для входа и информации, визуальные индикаторы для доверенных доменов, а также настраиваемое модальное окно подтверждения выхода. | |
| Предпросмотр | https://discourse.theme-creator.io/theme/Don/external-link-shield | |
| Репозиторий | https://github.com/VaperinaDEV/external-link-shield | |
| Руководство по установке | Как установить тему или компонент темы | |
| Новичок в темах Discourse? | Начинающее руководство по использованию тем Discourse |
Установить этот компонент темы
Привет ![]()
Хочу поделиться компонентом темы, который добавляет детальный контроль над внешними ссылками в обработанных постах, объединяя:
- контроль доступа на основе уровней доверия
- защиту для анонимных пользователей
- настраиваемое модальное окно подтверждения выхода
- визуальные индикаторы для доверенных и неизвестных доменов
Этот компонент разработан для сообществ, где внешние ссылки могут иметь юридические, безопасностные или доверительные последствия.
Возможности
Настраиваемые правила уровней доверия
Все функции, зависящие от уровня доверия, полностью настраиваются через параметры темы.
Вы можете независимо включать или отключать:
- блокировку анонимных пользователей
- информационную замену для TL0
- требование ручного раскрытия для TL1
- модальное окно подтверждения выхода для более высоких уровней доверия
Это позволяет компоненту адаптироваться к самым разным политикам сообществ: от строгой защиты ссылок до минимального вмешательства в работу пользователя.
Внешние ссылки с учетом уровня доверия
Поведение внешних ссылок зависит от уровня доверия пользователя:
- Анонимные пользователи
- Внешние ссылки заменяются ссылкой для входа или настраиваемым URL, указанным в параметрах.
- TL0
- Ссылки заменяются настраиваемым перенаправлением, например, на тему, объясняющую уровни доверия, или любой другой URL, указанный в параметрах.
- TL1
- Ссылки требуют ручного раскрытия (клик для просмотра), после чего при клике появляется модальное окно подтверждения выхода.
- TL2+
- Ссылки работают как обычно, но всегда показывают модальное окно подтверждения выхода.
Модальное окно подтверждения выхода
Перед выходом с форума пользователи видят модальное окно, которое:
- Четко сообщает, что они покидают сообщество
- Показывает полный URL назначения в тегах
<code> - Учитывает настройку пользователя
external_links_in_new_tab
Это особенно полезно для:
- сообществ с высокими требованиями к соответствию нормам
- предотвращения фишинга
- обучения менее опытных пользователей
Поведение на основе домена через параметры
Компонент вводит два параметра темы:
internal_domains:
type: list
default: ""
description: "Домены вашего форума и CDN (например, example.com|example-cdn.com). Для них НЕ будет отображаться иконка и НЕ будет модального окна."
excluded_domains:
type: list
default: ""
description: "Доверенные внешние домены (например, youtube.com|google.com). Для них будет отображаться иконка ЗАМОКА, но модальное окно/защита будут пропущены."
- Внутренние домены
- Рассматриваются как внутренние → нет иконки, нет модального окна
- Исключенные (доверенные) домены
- Отображается иконка
замка - Пропускается блокировка по уровню доверия и модальное окно
- Отображается иконка
- Все остальные внешние ссылки
- Отображается иконка внешней ссылки
- Блокируются и/или требуют подтверждения в зависимости от уровня доверия
Визуальные индикаторы (SCSS)
Иконки добавляются исключительно через CSS:
- Внешние неизвестные ссылки → иконка внешней ссылки
- Внешние доверенные ссылки → иконка замка (цвет успеха)
Это сохраняет чистоту DOM и избегает внедрения иконок через JS.
На этом скриншоте показано, как компонент визуально различает:
- Исключенные домены: доверенные внешние ссылки (иконка замка, без подтверждения выхода),
- Внутренние домены: внутренние ссылки (без иконки, без подтверждения выхода),
- неизвестные внешние ссылки (иконка внешней ссылки с подтверждением выхода).
Сценарии использования
Этот компонент полезен, если вы хотите:
- Защитить пользователей от небезопасных или вводящих в заблуждение внешних ссылок
- Обучить новых пользователей перед тем, как они покинут форум
- Обеспечить прогрессивное развитие доверия в сообществе
- Добавить юридические/соответствующие оговорки, не нарушая пользовательский опыт



