Я бы с удовольствием протестировал вашу версию @Don ![]()
Привет ![]()
Конечно, абсолютно! Изначально я встроил эту функцию непосредственно в свою собственную пользовательскую тему, поэтому мне пришлось выделить и разделить её на отдельный компонент темы.
На моём собственном сайте я вызываю модальное окно с помощью специальной кнопки, тогда как этот компонент темы вызывает его напрямую при клике на тему.
Вы можете попробовать его в Theme Creator здесь:
Вау, выглядит очень быстро. Мне это действительно нравится. Было бы здорово, если бы вы сделали его open-source. Отличная работа
Я не пользовался «Книгой друзей» уже несколько десятилетий, так что тут не на что ссылаться, но в любом случае… Дон, это выглядит действительно стильно. Я не ожидал, что мне это понравится, но на телефоне, уверен, это может быть очень круто. Снова без упоминания Facebook, но для меня это что-то среднее между обычным форумом и чатом.
Выглядит и ощущается очень гладко. Очень круто ![]()
Похоже, что выполняется множество сетевых запросов… Я постоянно натыкаюсь на ограничения частоты запросов (rate limits), когда тестирую это в конструкторе тем. Похоже, что система загружает содержимое всех тем из списка, даже если вы не заходите в саму тему (из-за этого, вероятно, и создаётся ощущение быстрой работы)?
Да, изначально я создал этот компонент для своего собственного сайта, который использует пользовательскую раскладку карточек, где на экране одновременно помещается только 1–2 темы. В такой настройке предварительная загрузка в области видимости работает плавно, не достигая ограничений частоты запросов. Однако в стандартных списках тем Discourse, основанных на таблицах, одновременно видно гораздо больше тем, из-за чего очередь предварительной загрузки заполняется намного быстрее при прокрутке.
На самом деле это основная причина, по которой я пока не опубликовал компонент официально — я знал, что это поведение нужно сначала адаптировать для стандартных раскладок.
Ты абсолютно прав: чтобы сделать этот компонент надёжным и универсальным, мне нужно его оптимизировать.
Не могли бы вы открыть исходный код, чтобы я мог с ним поиграть
Мне это нравится ![]()
Честно говоря, думаю, это лучше подойдёт для вашей темы, а не для стандартного списка тем.
Я только что добавил две новые настройки, чтобы сделать кастомные макеты гораздо более гибкими:
-
trigger_style: Выберите, делать ли всю строку темы кликабельной (row) или добавлять небольшую кнопку-иконку раскрытия (button), которая открывает предпросмотр, оставляя обычную ссылку на тему нетронутой. -
plugin_outlet: При использовании стиля с кнопкой вы можете указать точный плагин-аутлет, где будет отображаться иконка раскрытия (по умолчаниюtopic-list-after-title).
Это позволяет кастомным темам прикреплять кнопку-триггер к своим собственным плагин-аутлетам по мере необходимости.
Я фактически только что активировал именно этот независимый компонент на своем сайте. Я полностью удалил свой исходный код из темы и заменил его на этот компонент, работающий через <PluginOutlet />.
Кроме того, я также исправил ошибку в функционале отслеживания прочтения.
Я хотел бы протестировать его в реальной рабочей среде в течение короткого времени, чтобы убедиться, что все работает стабильно, прежде чем открыть исходный код.
Кстати, я временно переключил предпросмотр Theme Creator на тип триггера button на короткое время, чтобы вы могли протестировать!
