Список заблокированных внешних доменных ссылок

Существует ли способ полностью запретить ссылки на определённый домен?

Сценарий использования следующий: пользователь продолжает отвечать в любой теме ссылками на свой сайт. Это не обязательно плохо или опасно, но в результате все обсуждения кажутся захваченными и выглядят как спам. После нескольких напоминаний этому пользователю паттерн публикаций сохраняется. Обратите внимание, что rel="nofollow", похоже, не предотвращает такое поведение.

Я думаю, что полное удаление ссылок или даже запрет на публикацию, если в тексте встречается этот домен, может стимулировать пользователя вносить вклад в само обсуждение, а не постоянно публиковать внешние ссылки.

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

1 лайк

Быстрое решение может заключаться в понижении уровня пользователя, чтобы он вообще не мог публиковать ссылки.

2 лайка

Вы можете поместить саму ссылку в список /admin/customize/watched_words/action/block.

8 лайков

Предложение @Firepup650 о «следимых словах» полезно, когда множество людей публикуют ссылки на небольшое количество спамных сайтов. Определённо полезный инструмент. В данном случае, похоже, у вас есть пользователь, который проверяет границы социально приемлемого. Возможно, стоит также рассмотреть политику саморекламы. Это может решить проблему без применения блокировки, которая может показаться чрезмерно жёсткой.

Неизбежная проблема чёрных списков в том, что упорные нарушители находят способы их обойти. Чётко сформулированная политика может создать в сообществе норму, направляющую пользователей к более продуктивной деятельности. А если нет, блокировка всё равно остаётся возможным решением. :wink:

2 лайка

Действительно, либо заблокируйте домен в отслеживаемых словах, либо даже немного пошутите. И заставьте его заменять URL на что-то вроде «Ой, нельзя».

У меня возник тот же вопрос и по коротким доменным именам: например, если вы хотите заблокировать «ent.com», вам также нужно убедиться, что это не блокирует «content.com».

Настройка ent.com как отслеживаемого слова не срабатывает для content.com. Или я вас неправильно понял?
Также вы можете использовать регулярные выражения, чтобы точно настроить отслеживаемые слова для URL-адресов, которые вы не хотите видеть в публикациях.

2 лайка

Спасибо. Если указать «ent.com», будет ли заблокировано все, что соответствует шаблону «http(s)://ent.com/[url]», где url — произвольная последовательность символов?

Понял. Думаю, мне нужно использовать регулярные выражения.

2 лайка

Спасибо за ваши ответы. Я помню, что пробовал различные способы отслеживания слов, но, насколько мне известно, ссылки не разрывались. Может ли кто-нибудь привести рабочий пример?

1 лайк

Очень простой компонент темы (благодаря :robot:) с использованием жестко заданного списка доменов:

<script type="text/discourse-plugin" version="0.8.25">
  api.decorateCookedElement((element) => {

    const domainsToUnlink = ["example.com", "specificdomain.com"];

    const links = element.querySelectorAll("a");

    links.forEach((link) => {
      const url = new URL(link.href);
      if (domainsToUnlink.includes(url.hostname)) {
        const textNode = document.createTextNode(link.textContent);
        link.replaceWith(textNode);
      }
    });
  }, { id: "unlink-specific-domains" });
</script>

2 лайка

Просто чтобы убедиться, что я правильно понимаю.

Скрипт преобразует указанную ссылку в неактивный текст, отображающий саму ссылку?

Можно ли его модифицировать так, чтобы вместо ссылки подставлялось слово «Запрещено», возможно, в виде ссылки на пост с правилами, где перечислены недопустимые домены?

1 лайк

Да на оба вопроса :slight_smile:

1 лайк