Как отобразить количество ответов и просмотров в разделе категорий? С меткой «Ответы» и «Просмотры». Прикреплен скриншот с расположением элементов
Полагаю, что это ещё никто не делал, но если вам нужно решить задачу быстро, попробуйте раздел Marketplace .
Есть ли какие-либо ресурсы, которые помогут мне построить это самостоятельно, или кто-то, кто сможет провести меня через этот процесс? Я не спешу.
Скорее всего, вам удастся обойтись созданием Theme Component.
Похоже, что данные уже находятся в Serializer:
if topics_filter == :latest
result.topic_list = TopicQuery.new(current_user, topic_options).list_latest
elsif topics_filter == :top
result.topic_list = TopicQuery.new(nil, topic_options).list_top_for(SiteSetting.top_page_default_timeframe.to_sym)
end
result.topic_list.draft = result.category_list.draft
result.topic_list.draft_key = result.category_list.draft_key
result.topic_list.draft_sequence = result.category_list.draft_sequence
render_serialized(result, CategoryAndTopicListsSerializer, root: false)
end
def required_param_keys
[:name]
end
def required_create_params
required_param_keys.each do |key|
params.require(key)
end
В сериализаторе используется TopicListSerializer:
# frozen_string_literal: true
class CategoryAndTopicListsSerializer < ApplicationSerializer
has_one :category_list, serializer: CategoryListSerializer, embed: :objects
has_one :topic_list, serializer: TopicListSerializer, embed: :objects
has_many :users, serializer: BasicUserSerializer, embed: :objects
has_many :primary_groups, serializer: PrimaryGroupSerializer, embed: :objects
def users
users = object.topic_list.topics.map do |t|
t.posters.map { |poster| poster.try(:user) }
end
users.flatten!
users.compact!
users.uniq!(&:id)
users
end
def primary_groups
groups = object.topic_list.topics.map do |t|
This file has been truncated. show original
Таким образом, данные должны передаваться в модель Ember.
Вам нужно изучить шаблоны.
Если копнуть глубже, вы дойдёте до этого файла:
Далее — до этого:
И, наконец, до этого:
Скорее всего, именно его вам нужно будет изменить.
Для вдохновения можно посмотреть сюда:
{{#if bulkSelectEnabled}}
<td class="bulk-select">
<input type="checkbox" class="bulk-select">
</td>
{{/if}}
{{!--
The `~` syntax strip spaces between the elements, making it produce
`<a class=topic-post-badges>Some text</a><span class=topic-post-badges>`,
with no space between them.
This causes the topic-post-badge to be considered the same word as "text"
at the end of the link, preventing it from line wrapping onto its own line.
--}}
<td class='main-link clearfix' colspan="1">
<span class='link-top-line'>
{{~raw-plugin-outlet name="topic-list-before-status"}}
{{~raw "topic-status" topic=topic}}
{{~topic-link topic class="raw-link raw-topic-link"}}
{{~#if topic.featured_link}}
{{~topic-featured-link topic}}
This file has been truncated. show original
Для новичка это не совсем просто, но если проявить настойчивость, у вас всё получится.
Тем не менее, рекомендуется действовать постепенно. Сначала попробуйте внести более простое изменение, чтобы привыкнуть к процессу.
Этот фрагмент кода отображает просмотры на вкладке «Последние», а не на вкладке «Категории». Есть ли простой способ заставить его работать также для вкладки «Категории»?
Я подозреваю, что вам нужно изменить всего один-два шаблона: один для заголовка и другой для каждого элемента списка тем.
Вы пробовали добавить это?:
<td class="num views {{topic.viewsHeat}}">{{number topic.views numberKey="views_long"}}</td>
Не могу гарантировать, что это сработает сразу, но это должно направить вас в правильном направлении.
Убедитесь, что вы понимаете основы работы с Ember. Как минимум, прочитайте этот раздел руководства: Templates are HTML - Components - Ember Guides