У меня есть сайт, где опция «Разрешить некатегоризированные темы» отключена, но для незарегистрированного пользователя (или для администратора) на Android-устройстве категория «Без категории» всё равно отображается. Я только что выполнил перестроение. Компоненты темы этого не объясняют. Проблема сохраняется в безопасном режиме. Установлены только официальные плагины.
Да! Это касается только темы «О нас», ничего больше. Мне трудно понять, как это вообще возможно с учётом спецификаций, которые, как я предполагаю, действуют. И это работает только на мобильных устройствах, не на десктопе.
Я не думаю, что мы ожидаем, что тема «О нас» останется в категории «Без категории», когда она отключена. В описании настройки сайта «Разрешить темы без категории» есть предупреждение (выделено курсивом):
ВНИМАНИЕ: Если есть любые темы без категории, вы должны перевыбрать их перед отключением этой опции.
Попробуйте переместить тему «О нас» в активную категорию. На моём тестовом сайте это сработало.
Это довольно запутанно, ведь обычно запрещено удалять тему «О» (но, полагаю, это не совсем тема «О», поскольку это не категория). Но я удалил её, и теперь «Без категории» больше не отображается. Пришлось делать это с телефона, иначе я бы не смог её найти.
«Без категории» очень запутывает, так как это НЕ категория. Я действительно считаю, что эта опция должна быть отключена по умолчанию.
Нет, потому что я не считаю нужным с самого начала навязывать искусственную классификацию «Живое, Растительное, Минеральное» каждому отдельному объекту в мире. Извините.
Обратите внимание на предупреждение, которое там указано не просто так:
ВНИМАНИЕ: Если есть любые темы без категории, вы должны их переклассифицировать перед отключением этой функции.
Тем не менее, можем ли мы привести это поведение к единому стандарту @zogstrip, чтобы оно было одинаковым на мобильных устройствах и на компьютере?
Да. Я понимаю этот аргумент и раньше с ним соглашался, но считаю, что категория по умолчанию имела бы больше смысла, чем отсутствие категории. Но я постараюсь не предлагать это снова, если только однажды мы не окажемся в одном месте с .
@nbianca, можешь добавить в свой список задачу по выяснению того, почему категория «Без категории» отображалась на мобильном устройстве, хотя на десктопе её не было?
На десктопе мы отображаем категории и темы отдельно, а на мобильных устройствах — объединённо. Учитывая это, именно эта строка вызывает ошибку:
Условие c.displayable_topics.blank? всегда истинно на десктопе, поскольку темы загружаются отдельно, поэтому displayable_topics всегда пуст. На мобильных устройствах оно истинно только в том случае, если в категории действительно нет тем.
У нас есть два решения:
отображать «без категории», если есть хотя бы одна тема, независимо от значения настройки «разрешать темы без категории»
скрывать «без категории», даже если есть тема, если настройка «разрешать темы без категории» отключена
Второе решение проще в реализации, так как достаточно просто убрать вторую часть условия.
Я считаю, что скрытие тем из категории «Без категории» (странно) менее запутанно, чем отсутствие скрытия этой категории при включении настройки. Если вы отключите «Без категории», вы сразу заметите, что все эти темы исчезли. Но если при отключении ничего не происходит, то это кажется ошибкой.
Я отправил исправление для ошибки в первом сообщении:
Я выбрал первое решение, так как оно удаляет часть кода из Discourse. Второе же, наоборот, добавляет код для определения наличия хотя бы одной темы в категории «Без категории».
Я также проверил все использования category.uncategorized? и нашёл несколько мест, которые могут оказаться ненужными, если мы сделаем категорию «Без категории» менее особенной и более похожей на обычную категорию:
Это некоторые части, которые не влияют на другие функции, что делает изменения менее рискованными, но всё ещё непростыми.