Нажимаемая тема

:discourse2: Сводка Clickable Topic делает кликабельной всю область элемента списка тем topic-list-item, а не только заголовок темы.
:eyeglasses: Предпросмотр Предпросмотр в Theme Creator для Discourse
:hammer_and_wrench: Ссылка на репозиторий https://github.com/discourse/discourse-clickable-topic
:open_book: Новичок в темах Discourse? Руководство для начинающих по использованию тем Discourse

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

Возможности

preview

:discourse2: Размещено нами? Компоненты тем доступны для использования в наших тарифах Standard, Business и Enterprise.

46 лайков

Спасибо большое, это очень нужно! :heart:

4 лайка

Это очень полезный компонент! С точки зрения пользовательского опыта его стоило бы внедрить в сам Discourse, но это лишь моё мнение.

В любом случае, я застрял, пытаясь применить ту же логику для Категорий. Я хотел сделать это через api.modifyClass, но, похоже, упускаю ключевой момент. Не могли бы вы помочь?

У меня есть такая настройка для страницы рабочего стола:
image

По сути, красный прямоугольник слева должен быть кликабельным:

Или, чтобы было совсем понятно, чего я хочу добиться: воссоздать дизайн форума Blizzard, так как он мне очень нравится:

Буду признателен за любую помощь.

Пока ждал ответа, я также нашел страницу компонентов здесь:
https://github.com/discourse/discourse/tree/master/app/assets/javascripts/discourse/app/components

Попробовал разные идеи, но, похоже, мой хук даже недоступен? Или я что-то упускаю!? :slight_smile:

Рад, что компонент вам понравился!

Спасибо за предложения :grinning_face_with_smiling_eyes:

На данный момент этот компонент предназначен только для работы с Topics в списке тем.

1 лайк

Если вы хотите поэкспериментировать и сделать форк этого компонента, мы будем рады этому :+1:

В качестве отправной точки для того, чтобы категории стали кликабельными, рекомендую изучить код этого компонента, который реализует данную функцию, модифицируя компонент topic-list-item в ядре Discourse.

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

Некоторые из них перечислены ниже по их расположению…

app/assets/javascripts/discourse/app/components/categories-and-latest-topics.js
app/assets/javascripts/discourse/app/components/categories-and-top-topics.js
app/assets/javascripts/discourse/app/components/categories-boxes-topic.js
app/assets/javascripts/discourse/app/components/categories-boxes-with-topics.js
app/assets/javascripts/discourse/app/components/categories-boxes.js
app/assets/javascripts/discourse/app/components/categories-only.js
app/assets/javascripts/discourse/app/components/category-list-item.js

3 лайка

Предпросмотр больше не работает

2 лайка

Думаю, теперь всё в порядке. :slightly_smiling_face::+1:

2 лайка

Сломано.

Мы полагались на этот компонент, чтобы сделать кликабельными карточки тем в представлении Категории + Последние (в нашем случае это представление по умолчанию). После сегодняшнего обновления до версии 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;
  }

Ошибка возникает на строке:

historyUuid: this.router.location.getState?.().uuid

Может ли это быть связано с запланированным или текущим обновлением Ember в ядре?

Привет @kinetiksoft — мне не удалось воспроизвести проблему на моей стороне. Компонент темы, похоже, хорошо работает с последней версией Discourse. Ссылка «Предпросмотр в конструкторе тем» в первом сообщении здесь тоже работает.

Не могли бы вы предоставить ссылку на сайт с проблемой? Возможно, есть конфликт с другой темой или плагином.

2 лайка

Спасибо! Я отправил вам ссылку на соответствующее сообщество в личном сообщении. Делиться ею публично неуместно.

1 лайк

Спасибо @kinetiksoft! Похоже, проблема возникает, когда компонент темы используется вместе с представлением «категории + последние» (которое вы настроили как свою главную страницу).

Я создал PR, который должен решить проблему.

Я напишу здесь, когда он будет принят, и тогда вам нужно будет обновить ваш форум до последней версии ядра Discourse.

3 лайка

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

2 лайка

Готово — изменения вступят в силу при следующем обновлении до последней версии Discourse

1 лайк

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

1 лайк

Мы можем подтвердить, что проблема устранена. Еще раз спасибо! :heart:

1 лайк

Привет, как я могу изменить этот компонент для поддержки плагина Docs?

Я использую последнюю версию Discourse 3.4.0.beta2-dev.


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

Есть ли у кого-нибудь идеи, что может быть причиной?

Заранее благодарю за любую помощь и советы. :slight_smile:

4 лайка

Привет, спасибо за этот отчет, но, похоже, один регион всё ещё не кликабелен?

Я периодически вижу эту ошибку на управляемом мной сайте:

Использую Discourse 52ab90911 и Clickable Topic 37f0aa135fe

Обновление: В последнее время я не сталкивался с этой проблемой, хотя никаких изменений на сайте не вносилось. Думаю, я нажал слишком быстро, пока страница ещё не была полностью отрисована, когда это произошло. Теперь, когда я сообщил об этом, я постараюсь вернуться с более подробной информацией, если смогу воспроизвести это надёжным и значимым образом.

1 лайк