Получение данных сторонних источников для списка тем

Привет, @Discourse,

Я хочу отображать данные из сторонних API под заголовком темы для каждой из них на странице списка тем. Не могли бы вы подсказать, как правильно реализовать это, следуя лучшим практикам?

Поскольку я не очень хорошо разбираюсь в кастомизации Discourse, любой совет был бы очень полезен и высоко оценен!

Пожалуйста, помогите мне решить эту проблему.

Если вы используете компонент темы плагин-аутлетов, он покажет, какой аутлет использовать для создания вашей кастомизации.

Похоже, вам нужен аутлет after-topic-list-item.

Ссылки на дополнительные темы по разработке тем

Developing Discourse Themes & Theme Components

Theme Developer Quick Reference Guide

Beginner's guide to using Discourse Themes

Developing Discourse Plugins - Part 1 - Create a basic plugin

Если вы ищете помощь в разработке при создании этой кастомизации, рекомендую использовать категорию Marketplace. :slight_smile:

Спасибо, @Lilly. На самом деле я хочу отображать данные от стороннего API для каждой темы и ищу способ вызывать этот API при загрузке данных на странице списка.

То есть, когда страница загружается, я должен вызывать API, а затем рендерить данные. В данный момент я собираю все данные списка и вызываю сторонний API; какой бы данные ни пришел, я просто добавляю его в DOM. Но я хочу получать данные при ленивой загрузке страницы списка тем.

В целом это плохая идея. Если хост, обслуживающий API, работает медленно, ваш форум тоже будет работать медленно. Если хост, обслуживающий API, недоступен, ваш форум тоже будет недоступен. Если ваш форум перегружен, API тоже будет перегружен.

Вы должны загружать данные асинхронно, например, в задании Sidekiq, и сохранять их вместе с темой.

Спасибо @RGJ за сообщение!

Я понимаю, что это плохая идея, но я новичок в Discourse и мало что о нём знаю. Теперь я, как вы и посоветовали, поищу задачу Sidekiq.

У меня есть ещё один вопрос. Сможет ли задача Sidekiq определить, что для страницы списка тем поступают новые данные? Или мне нужно сделать что-то ещё, чтобы задача узнала о загрузке дополнительных данных на странице списка?

Спасибо!

Работа Sidekiq не будет знать, загружает ли список страниц дополнительные данные. Она независима.

Вам нужно настроить работу Sidekiq на периодическую загрузку данных через API и сохранение их вместе с темой.

Затем при загрузке списка тем будут извлекаться сохранённые данные. Рассматривайте это как механизм кэширования.

Понял.

Огромное спасибо, @RGJ!