Это очень полезный компонент! С точки зрения пользовательского опыта его стоило бы внедрить в сам Discourse, но это лишь моё мнение.
В любом случае, я застрял, пытаясь применить ту же логику для Категорий. Я хотел сделать это через api.modifyClass, но, похоже, упускаю ключевой момент. Не могли бы вы помочь?
У меня есть такая настройка для страницы рабочего стола:
По сути, красный прямоугольник слева должен быть кликабельным:
Если вы хотите поэкспериментировать и сделать форк этого компонента, мы будем рады этому
В качестве отправной точки для того, чтобы категории стали кликабельными, рекомендую изучить код этого компонента, который реализует данную функцию, модифицируя компонент topic-list-item в ядре Discourse.
Вы можете попробовать создать новый файл в той же папке, который будет нацелен на один из множества типов макетов категорий, включённых в наши компоненты, убедившись при этом, что вы выбрали тот же стиль страницы категорий, который используется на вашем форуме.
Некоторые из них перечислены ниже по их расположению…
Мы полагались на этот компонент, чтобы сделать кликабельными карточки тем в представлении Категории + Последние (в нашем случае это представление по умолчанию). После сегодняшнего обновления до версии 3.1.0beta8 (сейчас отображается как 3.2.0.beta1-dev) компонент перестал работать корректно.
Теперь курсор остаётся в активном состоянии, указывающем на возможность клика, но область темы не кликабельна. При открытой консоли браузера появляется ошибка, которая может помочь разработчикам выявить проблему:
Uncaught TypeError: this.router is undefined
function navigateToTopic(topic, href) {
if (this.siteSettings.page_loading_indicator !== "slider") {
// При использовании слайдера обновление заголовка после загрузки остального содержимого темы
// выглядит более плавно, поэтому не устанавливаем его заранее.
this.appEvents.trigger("header:update-topic", topic);
}
this.session.set("lastTopicIdViewed", {
topicId: topic.id,
historyUuid: this.router.location.getState?.().uuid
});
_url.default.routeTo(href || topic.get("url"));
return false;
}
Привет @kinetiksoft — мне не удалось воспроизвести проблему на моей стороне. Компонент темы, похоже, хорошо работает с последней версией Discourse. Ссылка «Предпросмотр в конструкторе тем» в первом сообщении здесь тоже работает.
Не могли бы вы предоставить ссылку на сайт с проблемой? Возможно, есть конфликт с другой темой или плагином.
Спасибо @kinetiksoft! Похоже, проблема возникает, когда компонент темы используется вместе с представлением «категории + последние» (которое вы настроили как свою главную страницу).
Я создал PR, который должен решить проблему.
Я напишу здесь, когда он будет принят, и тогда вам нужно будет обновить ваш форум до последней версии ядра Discourse.
Не уверен, что я что-то неправильно настроил в этом компоненте темы, но весь текст тела темы на карточке не кликабелен. Если кликнуть сразу после окончания текста на любой из строк, можно активировать карточку и открыть тему.
Есть ли у кого-нибудь идеи, что может быть причиной?
Обновление: В последнее время я не сталкивался с этой проблемой, хотя никаких изменений на сайте не вносилось. Думаю, я нажал слишком быстро, пока страница ещё не была полностью отрисована, когда это произошло. Теперь, когда я сообщил об этом, я постараюсь вернуться с более подробной информацией, если смогу воспроизвести это надёжным и значимым образом.