Хэштеги получают #обновление

Discourse уже давно поддерживает ссылки на категории (#announcements) и теги (release-notes) с помощью хештегов (#). С появлением Discourse Chat мы хотели добавить возможность ссылаться на каналы чата через хештеги. Это потребовало существенной переработки системы: теперь каналы могут предлагаться в автодополнении, а также корректно обрабатываться в постах и сообщениях чата. Мы также решили воспользоваться этим случаем, чтобы обновить дизайн меню автодополнения и оформленных хештегов.

Краткое описание изменений, включённых в эту переработку:

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

Новые результаты автодополнения:

Новый стиль оформления хештегов при автодополнении, который максимально приближен к стилю @упоминания.

Вы можете включить эту новую версию автодополнения и оформления хештегов, активировав параметр сайта enable_experimental_hashtag_autocomplete на вашем сайте Discourse:

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

Эта функция теперь также включена на Discourse Meta :sparkles:

42 лайка

Пример таких новых хэштегов в Meta. Почему бы не заглянуть в #announcements? Или почитать release-notes!

12 лайков

23 сообщения были перемещены в новую тему: Добавление цветового оформления и стилей подкатегорий для упоминаний категорий и чата

Вот краткий пример того, как выглядит ссылка на канал чата из сообщения: #general::channel

А вот краткий пример того, как выглядит ссылка на канал чата из другого канала чата:

7 лайков

Сообщение было разделено на новую тему: Изменить существующие хештеги на новый дизайн

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

Support #feature #general::channel #announcements:blog

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

16 лайков

Выглядит очень хорошо. Но как это работает для людей с нарушениями зрения? Похоже, что здесь

#доступность #общее #общее::канал #документация:разработчики

могут отсутствовать метки aria… Вот соответствующий HTML-предпросмотр.

<p dir="ltr">
<a class="hashtag-cooked" href="/tag/accessibility" data-type="tag" data-id="109" data-slug="accessibility" tabindex="-1">
  <svg class="fa d-icon d-icon-tag svg-icon hashtag-color--tag-109 svg-string" xmlns="http://www.w3.org/2000/svg"><use href="#tag"></use></svg>
  <span>доступность</span>
</a> 
<a class="hashtag-cooked" href="/c/general/124" data-type="category" data-id="124" data-slug="general" tabindex="-1">
  <span class="hashtag-category-badge hashtag-color--category-124"></span>  
  <span>Общее</span></a> 
<a class="hashtag-cooked" href="/chat/c/general/508" data-type="channel" data-id="508" data-slug="general" tabindex="-1">
  <svg class="fa d-icon d-icon-comment svg-icon hashtag-missing svg-string" xmlns="http://www.w3.org/2000/svg"><use href="#comment"></use></svg>
  <span>общее</span></a> 
<a class="hashtag-cooked" href="/c/documentation/devs/56" data-type="category" data-id="56" data-slug="devs" tabindex="-1">
  <span class="hashtag-category-badge hashtag-color--category-56"></span>
  <span>разработчики</span>
</a>
</p>
7 лайков

Спасибо, что обратили на это внимание, это очень важный момент. По крайней мере, необходимо добавить aria-label для каждого хэштега. Я постараюсь сделать коммит с этим исправлением на этой неделе.

7 лайков

Старые темы не будут использовать новый формат тегов и категорий до пересборки HTML. Есть способ безопасно пересобрать все темы для обеспечения единообразия интерфейса? Возможно, с помощью rake?

Что-то вроде этого? Не проверял!

./launcher enter app
rake posts:rebake
2 лайка

Я думаю, что этот вариант более целенаправленный:

Не уверен насчёт части bundle exec. Не знаю, нужна ли она для работающего сайта?

5 лайков

Без bundle exec вроде бы работает на продакшн-сайте :slight_smile:

root@Canapin-app:/var/www/discourse# rake hashtags:mark_old_format_for_rebake
Поиск постов, соответствующих старому формату, это может занять некоторое время...
[!] Вы собираетесь пометить 0 постов с хештегами в старом формате для повторной обработки. [CTRL+c] для отмены, [ENTER] для продолжения

Готово, повторная обработка произойдёт, когда запустится задача периодических обновлений.
6 лайков