Я столкнулся с этой проблемой при использовании API. В моём плагине мне требуется точное количество тем, поэтому я вынужден загружать каждый тег, чтобы подсчитать видимые темы. Сейчас это работает, но это пустая трата трафика, и я боюсь, что однажды упрёмся в лимиты API Discourse.
Все они находятся в личных сообщениях, к которым у вас нет доступа.
Это, конечно, не исправление, но в четырех случаях, когда речь идет только о личных сообщениях, я думаю, что нам не нужна эта конкретная метка, поэтому я её удаляю.
Я тоже заметил это на нашем форуме. Самый простой способ воспроизвести проблему: создать новую тему, добавить теги, а затем удалить её — она всё равно будет учитываться в подсчёте.
Дополнительный небольшой недостаток, вызванный этой проблемой, заключается в том, что администраторы получают неверное сообщение об ошибке при удалении пустого тега.
Хорошо, я переписываю свой ответ, так как, кажется, наконец-то разобрался, что здесь происходит
Как отмечает @ninjapenguin, если у вас есть тег и вы удаляете все темы, к которым он применён, тег всё ещё отображается на странице тегов, а счётчик остаётся неизменным. Я полагаю, это происходит потому, что темы всё ещё технически существуют и продолжают хранить этот тег.
@syl, если вы перейдёте к списку тем тега tete, как показано на вашем скриншоте, и затем добавите
?status=deleted
в конец URL, вы увидите два удалённых списка тем с тегом tete.
Информационное сообщение на вашем втором скриншоте соответствует количеству удалённых тем, к которым применён этот тег.
Мне кажется, что при подсчёте и перечислении тегов удалённые темы, вероятно, не следует учитывать, но это может быть не самым простым изменением, учитывая, как всё хранится в базе данных. Что вы думаете, @codinghorror?
В стандартном форуме, я думаю, удалённые темы объясняют большинство расхождений между количеством тем, отображаемым в списке тегов, и фактическим числом тем, которые пользователь может увидеть внутри каждого тега. Исправление этого уже стало бы большим плюсом. Но обратите внимание, что расхождения также возникают, когда пользователь без прав администратора просматривает тег, содержащий приватные темы.
Это мне воспроизвести не удалось. Если у меня есть тег, который использовался только в личном сообщении или в теме из ограниченной категории, то пользователь без доступа к этим темам не видит этот тег в списке тегов.
Единственное неприятное поведение, которое я наблюдаю в данный момент, связано с удалёнными темами, о которых я упоминал.
В таблице tags есть два столбца, которые могут влиять на подсчёт тегов: topic_count и pm_topic_count. Эти значения увеличиваются/уменьшаются при применении/удалении тега. Неадминистраторы видят только значение topic_count.
Нет механизма для динамической корректировки подсчёта в реальном времени с учётом индивидуального доступа пользователя к темам.
Исходя из того, что я вижу, у нас нет ошибки, есть лишь ограничение, связанное с текущей реализацией. Я считаю, что всё, о чём здесь говорилось, относится к категории «запрос на новую функцию» и может быть сформулировано так:
Сделать подсчёт тегов на странице тегов динамическим, чтобы он отражал то, что пользователь фактически увидит, перейдя к списку тем с этим тегом.
Огромное спасибо, @tshenry. Это звучит очень хорошо и, возможно, объясняет, почему у меня на тестовом экземпляре проблема возникала гораздо чаще (возможно, задача обеспечения согласованности там не выполняется). Я проверю это.
P.S.: прямо сейчас тег documentation здесь на Meta имеет счётчик 5, хотя я вижу только 4 темы. Я проверю снова через 12 часов