Точное количество тем в списке тегов

На странице tags количество тем указано неверно. Дело в том, что в подсчёт включаются темы, которые не видны пользователю.

Пример на meta:

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

Есть ли шанс, что это можно исправить?

Спасибо.

2 лайка

Все они находятся в личных сообщениях, к которым у вас нет доступа.

Это, конечно, не исправление, но в четырех случаях, когда речь идет только о личных сообщениях, я думаю, что нам не нужна эта конкретная метка, поэтому я её удаляю.

1 лайк

Если нужно, ещё один пример на Meta — это тег sass (количество тем в списке тегов = 2, количество тем на странице тега = 1).

1 лайк

Я тоже заметил это на нашем форуме. Самый простой способ воспроизвести проблему: создать новую тему, добавить теги, а затем удалить её — она всё равно будет учитываться в подсчёте.

2 лайка

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

Пустой тег:

Неверное сообщение об ошибке:

Ты можешь воспроизвести это, @tshenry?

1 лайк

Хорошо, я переписываю свой ответ, так как, кажется, наконец-то разобрался, что здесь происходит :slight_smile:

Как отмечает @ninjapenguin, если у вас есть тег и вы удаляете все темы, к которым он применён, тег всё ещё отображается на странице тегов, а счётчик остаётся неизменным. Я полагаю, это происходит потому, что темы всё ещё технически существуют и продолжают хранить этот тег.

@syl, если вы перейдёте к списку тем тега tete, как показано на вашем скриншоте, и затем добавите

?status=deleted

в конец URL, вы увидите два удалённых списка тем с тегом tete.

Информационное сообщение на вашем втором скриншоте соответствует количеству удалённых тем, к которым применён этот тег.


Мне кажется, что при подсчёте и перечислении тегов удалённые темы, вероятно, не следует учитывать, но это может быть не самым простым изменением, учитывая, как всё хранится в базе данных. Что вы думаете, @codinghorror?

2 лайка

Это верно.

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

Это мне воспроизвести не удалось. Если у меня есть тег, который использовался только в личном сообщении или в теме из ограниченной категории, то пользователь без доступа к этим темам не видит этот тег в списке тегов.

Единственное неприятное поведение, которое я наблюдаю в данный момент, связано с удалёнными темами, о которых я упоминал.

1 лайк

Извините за путаницу, я говорил о количестве тегов. Вот как воспроизвести проблему:

  1. Как администратор, создайте тему без категории и с новым тегом
  2. Как администратор, создайте ещё одну тему с тем же тегом, но в ограниченной категории
  3. Как обычный пользователь, перейдите к тегу test-tag и проверьте, что вы видите только одну тему
  4. Однако в списке тегов количество тегов показывает 2
1 лайк

Ок, спасибо, я понял.

Я посмотрел код и заметил несколько вещей.

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

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

1 лайк

Огромное спасибо, @tshenry. Это звучит очень хорошо и, возможно, объясняет, почему у меня на тестовом экземпляре проблема возникала гораздо чаще (возможно, задача обеспечения согласованности там не выполняется). Я проверю это.

P.S.: прямо сейчас тег documentation здесь на Meta имеет счётчик 5, хотя я вижу только 4 темы. Я проверю снова через 12 часов :slight_smile:

1 лайк