Стикеры Discourse

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

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


Discourse Stickers v1.0

Привет :wave:

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

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

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

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

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

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


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

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

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

URL загрузки в формате Markdown в скобках :arrow_down_small:
Screenshot 2023-10-03 at 13.07.41


Настройки

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

Заголовок (title): Это заголовок изображения и alt-текст. Он также попадет в заголовок кода Markdown.

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

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

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



Discourse Stickers v2.0

Привет :wave:

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

Заголовок (Title)

Имя стикера. Это используется как всплывающая подсказка и alt-текст стикера.

Группа (Group)

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

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

Значок эмодзи (Emoji badge)

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

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

Изображение (Image)

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

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

Категории (Categories)

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

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

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

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

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

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

Каналы чата (Chat channels)

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

Введите идентификаторы каналов через запятую.

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

/chat/c/channel-name/123

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

123

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


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

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

v2.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 лайка