Стикеры Discourse

:information_source: Сводка Добавление стикеров
:eyeglasses: Предпросмотр Theme Creator
:hammer_and_wrench: Репозиторий GitHub - VaperinaDEV/discourse-stickers: With this theme component you can add stickers. · GitHub
:question: Руководство по установке Как установить тему или компонент темы
:open_book: Новичок в темах Discourse? Руководство для начинающих по использованию тем Discourse

Установить этот компонент темы


Discourse Stickers v1.0

Привет :wave:

С помощью этого компонента темы вы можете добавлять стикеры в сообщения и чат…

Как это работает?

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

Модальное окно со стикерами

Когда вы нажимаете на стикер, он добавляется в редактор.
Код изображения в формате Markdown помещается внутрь [wrap=sticker] img [/wrap], что означает, что изображения стикеров можно стилизовать отдельно от других изображений.

Стикеры всегда переносятся на новую строку и содержат заголовок и размер. Размер теперь фиксированный: 180x180 пикселей. Каждый стикер имеет тень, которая делает изображение более похожим на стикер…
В редакторе и сообщениях мета-информация при наведении скрыта с помощью CSS.


Как настроить?

Сначала вам нужно загрузить изображения, которые вы хотите использовать в качестве стикеров. Просто загрузите эти изображения в сообщение темы.
Мы будем работать с этими изображениями; нам понадобятся URL-адрес изображения и URL-адрес в формате Markdown.

Пример:
Я загрузил изображение в сообщение. Я использую оптимизированную версию URL-адреса изображения. Она находится здесь :arrow_down_small:, но вы можете использовать любой URL-адрес изображения.

URL-адрес загрузки в формате Markdown в скобках :arrow_down_small:


Настройки

Изображения стикеров
В настройке «Изображения стикеров» вы можете настроить стикеры…

Заголовок: Это заголовок и альтернативный текст изображения. Он также будет добавлен в заголовок кода Markdown.

Эмодзи: Будет отображаться в правом верхнем углу каждого стикера в модальном окне со стикерами.

previewUrl: Это изображение, которое отображается в модальном окне со стикерами.

markdownUrl: Это ранее загруженный URL-адрес изображения в формате Markdown.



Discourse Stickers v2.0

Привет :wave:

С помощью этого компонента темы вы можете добавлять стикеры в сообщения, ответы и сообщения в чате.

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

Как это работает?

Компонент добавляет кнопку стикера в редактор. Нажатие на нее открывает выбор стикера.

Когда вы выбираете стикер, он вставляется непосредственно в редактор.

Для обычных сообщений и ответов стикеры оборачиваются в:

[wrap=sticker]![Заголовок стикера|180x180](изображение)[/wrap]

Это позволяет стилизовать изображения стикеров отдельно от обычных изображений.

Опубликованные стикеры не кликабельны и не открывают лайтбокс Discourse.


Выбор стикера

Выбор стикера поддерживает группы, когда у вас есть большая коллекция стикеров.

Если настроено несколько групп, в верхней части выбора отображается панель фильтрации.

Стикеры без группы автоматически помещаются в раздел Другое.

Если для текущего контекста нет доступных стикеров, выбор отображает пустое состояние.


Как настроить?

Конфигурация стикеров была полностью переработана в версии 2.0.

Вам больше не нужно сначала загружать изображения в тему или вручную копировать URL-адреса изображений.

Просто перейдите в настройки компонента и добавьте стикер. Поле Изображение позволяет загрузить стикер напрямую.

Настройки стикера

Теперь каждый стикер может иметь следующие свойства:

Заголовок

Название стикера. Это используется как всплывающая подсказка и альтернативный текст стикера.

Группа

Необязательно. Используйте группы для организации ваших стикеров и фильтрации их в выборе.

Оставьте пустым, чтобы поместить стикер в раздел Другое.

Значок эмодзи

Необязательно. Отображает маленький эмодзи в углу стикера.

Вы можете использовать реальный эмодзи или короткий код Discourse, такой как :heart: или :smile:.

Изображение

Изображение стикера.

Загрузите изображение напрямую с помощью настройки. Одно и то же изображение используется как в выборе, так и в опубликованном стикере.

Категории

Необязательно. Ограничьте стикер определенными категориями.

Если выбраны категории, стикер будет отображаться только в редакторе обычного сообщения/ответа, когда выбрана одна из этих категорий.

Оставьте пустым, чтобы сделать стикер доступным во всех категориях.

Эта настройка не влияет на чат.

Скрыть из личных сообщений

Если включено, стикер не будет доступен в личных/прямых сообщениях в чате.

Каналы чата

Необязательно. Ограничьте стикер определенными общедоступными каналами чата.

Введите идентификаторы каналов, разделенные запятыми.

Например, если URL-адрес канала:

/chat/c/channel-name/123

используйте:

123

Оставьте пустым, чтобы сделать стикер доступным во всех общедоступных/категорийных каналах чата.


Обновление с версии v1.x

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

Версия 2.0 включает миграцию настроек, которая автоматически преобразует старую конфигурацию sticker_images в новый формат.

Миграция сохраняет:

  • заголовки стикеров
  • значки эмодзи
  • существующие загруженные изображения стикеров

Существующие загруженные изображения сопоставляются обратно с их исходными загрузками Discourse и заполняются в новом поле Изображение.

Старые настройки previewUrl и markdownUrl больше не требуются.

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


17 лайков

Привет, Дон :wave:

Отличная работа! Я быстро посмотрел :slight_smile:

Управление стикерами немного утомительно — особенно часть с предпросмотром — так как для этого нет специального макета или функции (как, например, для аватаров и пользовательских эмодзи), но я понимаю, что это потребовало бы гораздо больше работы.

Фильтр тени отключается, когда GIF-анимация остановлена, и не отображается как квадратный фон на среднем изображении здесь (прямоугольный JPG, который открывает лайтбокс):

chrome_k71dGHbeLH

Эффект фильтра действительно классный, но я бы сделал его опциональной настройкой :slight_smile:

Выборщик стикеров использует выравнивание по центру, например:

XXX
 X 

Но, думаю, мне больше понравилось бы выравнивание по правому краю:

XXX
X 

Конечно, это чисто личное мнение :v:

5 лайков

Спасибо за обратную связь, @Canapin :slight_smile:

Я добавил новую настройку для этого…
Screenshot 2023-10-03 at 16.04.17

Это тоже сделано… Гораздо лучше :slight_smile:

7 лайков

Обновление: DEV: Adding DTooltip to sticker picker modal images · VaperinaDEV/discourse-stickers@b6c30eb · GitHub

5 лайков

Возможно ли ограничить это определенными категориями? (И, кстати, иметь разные стикеры для каждой категории?)

1 лайк

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

Кроме того, можно рекомендовать иконки на основе установленных, когда пользователь использует иконку в статье, но, думаю, это сложная функция.

Могу я спросить, что нужно сделать, чтобы стикер отображался в строке текста, а не на новой строке? (Я сделал форк этого репозитория)

Привет :waving_hand:

Да, вам нужно убрать \n в начале и в конце этой строки.


Привет @mattdm :waving_hand: Извините за задержку. Да, думаю, вполне возможно отображать кнопку в редакторе сообщения в зависимости от категории. Мне нужно это проверить.

Компонент уже немного сложен в настройке. Не уверен насчёт этого. :thinking:

Привет :waving_hand: Да, это уже другой уровень. :slightly_smiling_face: Не уверен, что это возможно реализовать сейчас в текущей версии.

1 лайк

Спасибо за ответ!
Но после изменения стикер не отображается, вот так

Ой, извините, я думаю, вам стоит также удалить [wrap=sticker] и [/wrap]. Тогда изображение отобразится внутри строки, и оно, скорее всего, не пропадёт. :thinking:

[wrap=sticker] нужен только для добавления некоторых стилей к изображению стикера.

Понятно, для встроенного отображения нельзя использовать [wrap=sticker]?
Работает, спасибо!

PS: Мне интересно, можно ли скрыть markdownUrl в редакторе, так как это будет длинная ссылка, занимающая слишком много места?

Стикеры Discourse v2.0

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

:artist_palette: Полностью переработанные настройки стикеров

Самое крупное изменение в версии 2.0 касается самой конфигурации стикеров.

В старой версии стикеры хранились в виде JSON-настройки, содержащей такие значения, как:

  • title

  • emoji

  • previewUrl

  • markdownUrl

В версии 2.0 это было заменено на встроенный тип настройки objects в Discourse.

Теперь каждый стикер является полноценным настраиваемым объектом со своими собственными полями:

  • Название — имя стикера / текст подсказки

  • Группа — возможность группировать стикеры по категориям

  • Эмодзи-значок — возможность отображать небольшой эмодзи в углу

  • Изображение — загрузка стикера непосредственно через настройку

  • Категории — возможность ограничить использование стикеров определенными категориями

  • Скрыть в личных сообщениях — управление доступностью стикера в личных сообщениях (DM)

  • Каналы чата — возможность ограничить использование стикеров определенными публичными каналами чата

Это делает конфигурацию стикеров гораздо более понятной и удобной для поддержки, особенно для больших коллекций.

:bento_box: Группы стикеров и фильтрация

Теперь вы можете назначать стикеры Группе.

Когда доступно несколько групп, в выборщике стикеров автоматически отображается панель фильтрации вверху.

Вы можете переключаться между:

  • Все

  • отдельными группами

  • Другие для стикеров без группы

Фильтр генерируется динамически на основе стикеров, доступных пользователю в данный момент.

:label: Стикеры для конкретных категорий

Теперь стикеры можно необязательно назначать конкретным категориям Discourse.

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

Если категории не настроены, стикер остается доступным везде.

:speech_balloon: Больше контроля над стикерами в чате

Версия 2.0 добавляет больше возможностей для управления доступностью стикеров в чате Discourse.

Теперь вы можете:

  • скрывать отдельные стикеры в личных сообщениях;

  • ограничивать использование стикеров определенными публичными каналами чата;

  • оставить поле канала пустым, чтобы сделать стикер доступным во всех публичных/категорийных каналах чата.

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

:prohibited: Опубликованные стикеры больше не кликабельны

Опубликованные стикеры теперь рассматриваются как неинтерактивные изображения.

При клике на них больше не открывается лайтбокс Discourse.

Это применимо как к:

  • стикерам в обычных постах;

  • стикерам, отправленным в чате.

Цель состоит в том, чтобы стикеры вели себя больше как контент стикеров/реакций, а не как обычные загруженные изображения.

:empty_nest: Улучшенное состояние пустоты

Если для текущего контекста нет доступных стикеров, выборщик теперь отображает корректное состояние пустоты вместо простого показа пустого выборщика.

Например, это может произойти, когда ограничения по категориям или чату не позволяют использовать ни один стикер.

:counterclockwise_arrows_button: Существующие конфигурации стикеров мигрируются

Одной из самых важных частей версии 2.0 является то, что существующим установкам не нужно заново создавать свою коллекцию стикеров.

Старая JSON-настройка sticker_images автоматически мигрируется в новый формат objects при обновлении компонента.

Существующие названия стикеров и значения эмодзи сохраняются.

Что особенно важно, существующие загруженные изображения стикеров также мигрируются автоматически.

Так что, если у вас уже настроены десятки стикеров, обновление до версии 2.0 не потребует от вас повторной загрузки всех них.

Старое свойство markdownUrl больше не требуется и не переносится, так как новое поле Image представляет собой фактическую загрузку в Discourse.


3 лайка