| Краткое описание | Показывает всплывающие подсказки при наведении курсора (или тапе на мобильных устройствах) на внутренние ссылки на темы, демонстрируя быстрый предпросмотр содержимого связанной темы. | |
| Предпросмотр | Github Readme | |
| Репозиторий | https://github.com/denvergeeks/discourse-topic-hover-cards | |
| Руководство по установке | Как установить тему или компонент темы | |
| Новичок в темах Discourse? | Начинающее руководство по использованию тем Discourse |
Установить этот компонент темы
Богатые карточки предпросмотра при наведении для внутренних ссылок на темы в темах, ответах, списках тем, на главных страницах категорий, в категориях документации, канбан-досках и рекомендуемых темах. Для настольных и/или мобильных устройств. Работает на всем сайте и имеет высокую степень настройки.
Возможности
- Можно активировать на всем сайте для всех внутренних ссылок на темы или только для тех, которые появляются в одной или нескольких областях, включая:
- Тело темы (первоначальный пост)
- Ответы
- Стандартные списки тем (
/latest,/top,/tags, списки тем в категориях и т.д.) - Списки тем на главной странице категорий (Категории + Последние, Только категории и связанные макеты)
- Категории документации
- Канбан-доска
- Рекомендуемые темы
- Адаптивный макет:
- Карточка для настольных компьютеров с настраиваемой плотностью и расположением миниатюры
- Предпросмотр в виде нижней панели на мобильных устройствах с открытием по тапу
- Настраиваемое содержимое может включать:
- Миниатюрное изображение
- Заголовок темы
- Выдержку
- Категорию
- Теги
- Автор оригинального поста (имя пользователя и аватар)
- Дата публикации
- Дата последнего действия
- Количество просмотров
- Количество ответов
- Количество лайков
- Отключение для отдельных пользователей с помощью пользовательского поля
- Режим отладки только для администраторов для безопасного устранения неполадок
Нажмите, чтобы увидеть все включенные настройки...
Макет и время
-
card_width
Любое значение ширины CSS (для настольных компьютеров), например,32rem,420px,40vw,clamp(20rem, 40vw, 36rem). -
card_max_height
Любое значение максимальной высоты CSS, например,10rem,480px,50vh,min(60vh, 32rem). -
card_delay_ms
Задержка перед отображением карточки при наведении, в миллисекундах (по умолчанию:300). -
enable_on_mobile
При включении тап по поддерживаемой внутренней ссылке на тему показывает предпросмотр на мобильном устройстве, закрепленный в нижней части экрана. -
mobile_width_percent
Ширина предпросмотра нижней панели на мобильных устройствах в процентах от ширины окна просмотра (по умолчанию:100). -
mobile_thumbnail_height
Высота миниатюры в пикселях для предпросмотра на мобильных устройствах.
Плотность
-
density
Плотность для настольных компьютеров:default,cozyилиcompact. -
density_mobile
Плотность для мобильных устройств:default,cozyилиcompact.
Эти параметры аналогичны шаблонам «Плотность» в Discourse, которые регулируют отступы, межстрочные интервалы и размер шрифта.
Миниатюра и расположение
-
show_thumbnail / show_thumbnail_mobile
Показать/скрыть изображение темы (если есть) на настольных и мобильных устройствах. -
thumbnail_placement
Как размещается миниатюра на настольных устройствах:topleftrightbottom
На мобильных устройствах миниатюра всегда отображается в верхней части карточки.
-
image_size_percent
Управляет размером миниатюры в процентах от размера отображаемой карточки при наведении.
Поля для каждого окна просмотра
Для каждого блока ниже у вас есть переключатели для настольных и мобильных устройств:
-
show_category / show_category_mobile
-
show_tags / show_tags_mobile
-
show_title / show_title_mobile
-
show_excerpt / show_excerpt_mobile
-
excerpt_length / excerpt_length_mobile
Количество строк для выдержки (использует CSS line-clamp). -
show_op / show_op_mobile
Показывает аватар и имя пользователя автора оригинального поста. -
show_publish_date / show_publish_date_mobile
-
show_views / show_views_mobile
-
show_reply_count / show_reply_count_mobile
-
show_likes / show_likes_mobile
-
show_activity / show_activity_mobile
Где появляются карточки при наведении
-
enable_on_topics
Ссылки на темы в первоначальном посте. -
enable_on_replies
Ссылки на темы в ответах. -
enable_on_topic_lists
Ссылки на темы в стандартных списках тем, например,/latest,/top, списки тем в категориях. -
enable_on_category_homepage_topic_lists
Ссылки на темы в списках «Последние темы» или аналогичных на главной странице категорий:- Категории + Последние темы
- Только категории
- Связанные варианты, отображаемые на
/или/categories, в зависимости от настройки вашей главной страницы.
-
enable_on_doc_categories
Ссылки на темы в представлениях категорий документации (если применимо). -
enable_on_kanban_boards
Ссылки на темы, отображаемые в макетах канбан-досок (если применимо). -
enable_on_suggested_topic_links
Ссылки в разделе «Рекомендуемые темы».
Отключение для отдельных пользователей
Вы можете разрешить отдельным пользователям отключать карточки при наведении с помощью пользовательского поля. Это использует стандартный механизм настроек темы и доступ к данным текущего пользователя, описанный в руководствах для разработчиков.
- user_preference_field_name
Ключ, используемый для обнаружения отключения у текущего пользователя. Это может быть:- прямой ключ пользовательского поля, например,
disable_topic_hover_cards - числовой ID, например,
1 - ключ
user_field_X, например,user_field_1
- прямой ключ пользовательского поля, например,
Как работает сопоставление
- Компонент сначала проверяет
custom_fieldsиuser_fieldsтекущего пользователя на наличие:- настроенного
user_preference_field_name - того же значения, конвертированного между
1иuser_field_1, когда это уместно
- настроенного
- Если совпадение не найдено и текущий пользователь является сотрудником (администратором/модератором) и
resolve_user_field_id_for_admins включен, компонент вызывает:/admin/config/user-fields.json
для сопоставления настроенного значения (имя поля илиuser_field_X) с его числовым ID.
- С числовым ID он проверяет:
user_fields[id]user_fields['user_field_' + id]custom_fields[id]custom_fields['user_field_' + id]
Любое истинное значение в этих позициях (например, 1, true, yes, on, checked) отключает карточки при наведении для этого пользователя.
Настройки для этого поведения
-
resolve_user_field_id_for_admins
При включении (рекомендуется) администраторы могут настроить поле либо по имени, либо черезuser_field_X, и компонент автоматически определит и сопоставит числовой ID. -
debug_mode
При включении записывает подробную информацию об обнаружении в консоль браузера для сотрудников, включая:- какие ключи проверялись
- где было найдено совпадение (текущий пользователь или полная запись пользователя)
- определенный числовой ID пользовательского поля, если таковой имеется
Отладка
Если карточки при наведении не появляются там, где вы ожидаете, используйте встроенный режим отладки:
- Включите debug_mode в настройках этого компонента.
- Откройте консоль разработчика браузера.
- Наведите курсор или коснитесь соответствующей ссылки на тему.
Вы увидите сообщения, подобные следующим:
Hover cards initialized– подтверждает инициализацию и включенные области.Resolved admin user-field mapping– подтверждает сопоставление настроенного имени/ключа пользовательского поля с числовым ID (для сотрудников).No disable field match found anywhere– подтверждает, что карточки при наведении не подавляются для текущего пользователя.
Чтобы отладить где должна появиться карточка, убедитесь, что:
- ваша целевая ссылка является внутренней ссылкой на тему (
/t/...), которую может распарситьtopicIdFromHref() - включен соответствующий флаг области:
enable_on_topicsenable_on_repliesenable_on_topic_listsenable_on_category_homepage_topic_listsenable_on_doc_categoriesenable_on_kanban_boardsenable_on_suggested_topic_links
Запланированные настройки и функции, которые еще предстоит добавить:
- Исключенные теги
- Включенные теги
- Исключенные классы
- Включенные классы
- По умолчанию исключать OneBoxes и другие элементы
- Предложения??

