Компонент темы заголовков категорий Discourse

@NateDhaliwal ОК, спасибо, что разобрались! Немного расстроены, потому что нам очень понравился этот TC, но если его нельзя исправить и разместить на нашем сайте, я пока оставлю его без изменений и поищу другие способы, чтобы заголовки категорий выглядели красиво.

@jackierenee Я позволил себе зайти на ваш сайт и посмотреть, что происходит.

Кажется, вы просто удалили компонент темы из родительской темы, обновили его и снова добавили.

Проблема в том, что Discourse не восстанавливается автоматически, если компонент темы обновлён до версии, несовместимой с текущей, а затем был добавлен пин.

Правильный способ восстановления в такой ситуации:

  • перейдите к компоненту темы;
  • прокрутите страницу до самого низа;
  • скопируйте настройки из редактора настроек (“settings editor”);
  • сохраните их в текстовом редакторе;
  • полностью удалите ( :wastebasket: удалить) компонент темы;
  • снова добавьте его из репозитория GitHub;
  • скопируйте настройки из текстового редактора и вставьте их в редактор настроек;
  • при необходимости внесите исправления (иногда в новой версии добавляются новые настройки, которые нужно удалить; редактор подскажет, что делать, если вы попытаетесь их сохранить);
  • добавьте компонент темы в родительскую тему.

Я выполнил эти действия на вашем сайте, и теперь баннеры отображаются снова.

Для авторов компонентов тем: очень помогает, если вы используете поле version в файле about.json, чтобы администратор мог видеть, какая версия компонента темы установлена. К сожалению, Discourse не отображает версии коммитов для компонентов темы так, как это делается для плагинов.

8 лайков

Это звучит вежливо. Я постараюсь добавить действие GitHub, которое будет автоматически обновлять версию при каждом новом коммите в ветку main.

4 лайка

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

Звучит как отличная идея! Пожалуйста, опишите, как это сделать, и добавьте информацию в руководство «Разработка компонентов темы для чайников» (если оно есть).

Я попробовал — все мои замечания устранены, выглядит отлично. Отличная работа!!!

Скажите, насколько сложно будет добавить возможность указывать, сколько абзацев темы «О нас» использовать для описания? Лично я считаю один абзац довольно ограничительным и хотел бы иметь возможность указывать (возможно, для каждой категории отдельно), сколько абзацев использовать.

И последнее (пока мы говорим об этом компоненте темы): вы не считаете, что было бы хорошо перенести ссылку «Читать далее…» в конец последнего абзаца? Это, безусловно, сэкономило бы много пустого пространства в моем случае. Но с другой стороны, если мы сможем использовать несколько абзацев, это может немного конфликтовать со вторым абзацем, если в нем содержатся ссылки и прочее. :thinking:.

Хм… способ, которым код получает описание категории, использует this.args.category.description. Насколько я помню, оно уже приходит в виде одного абзаца. Я изучу этот вопрос. Возможно, я могу использовать fetch() или AJAX, но это может быть медленнее.

Может быть, добавить настройку для выбора, должно ли оно быть встроенным или нет? Дайте мне время это изучить.

1 лайк

Привет! Я заметил, что размер шрифта текста категории при установке значения «меньше» не применяется — он всегда остаётся большим (это произошло, кажется, один или два дня назад).

Мы изменили это, чтобы описание категории было либо меньше, либо больше, чем в базовой версии (которая, похоже, недавно увеличилась).

Я проверю ещё раз, нет ли конфликта с темой, который мог оказаться ложной тревогой.

1 лайк

Привет, @RGJ, большое-большое спасибо за это! Я и не знал, что компоненты темы работают именно так. Если мы снова столкнёмся с подобной ситуацией, я обязательно это учту. Очень ценю вашу помощь! :folded_hands:

2 лайка

Это очень редкая и специфическая ситуация с необычным поведением, и, надеемся, мы не столкнёмся с этим ещё какое-то время!

3 лайка

Привет, я решил проблему с помощью этого CSS:

.category-title-description .cooked {
  font-size: small;
}

У меня также отображаются пустые страницы категорий в десктопных и мобильных браузерах (версия Discourse 3.5.0.beta8-dev), когда этот компонент имеет следующую настройку:

  "setting": "show_mobile",
  "value": false

При сбросе к значению по умолчанию (true) страницы отображаются корректно.

В консоли появляется следующая ошибка…

Необработанное отклонение промиса: TypeError: undefined is not an object (evaluating ‘this.site.mobileView’)

…что связано с…

/discourse/theme-javascripts/theme-3/discourse/components/category-header.gjs)

…и проблемной строкой является строка 3 (const hideMobile) ниже:

    get showHeader() {
      const isException = this.args.category && settings.hide_category_exceptions.split("|").includes(String(this.args.category.id));
      const hideMobile = !settings.show_mobile && this.site.mobileView;
      const subCat = !settings.show_subcategory_header && this.args.category.parentCategory;
      const noDesc = !settings.hide_if_no_category_description && !this.args.category.description_text;
      const path = window.location.pathname;
      return /^\/c\//.test(path) && !isException && !noDesc && !subCat && !hideMobile;
    }

Есть ли какие-либо идеи, почему это происходит?

1 лайк

Технически это должно работать… эта строка была ещё до обновления. Я посмотрю.

@HTW Я отправил исправление. Дайте знать, если теперь всё работает!

1 лайк

Исправлено. Большое спасибо.

Похоже, в заголовках категорий произошли некоторые недавние изменения в ядре, из-за чего стандартные заголовки больше не скрываются при использовании этого компонента.

Стоит ли нам стремиться привести этот компонент в соответствие с изменениями стиля в ядре?

3 лайка

Хм… какие здесь изменения? Может, скриншот? Спасибо.

При активном TC на свежеобновлённом сайте (стилизация явно немного сошла с ума):

При неактивном TC:

1 лайк

Я добавил !important в конец… теперь работает?

2 лайка

Небольшое замечание: варианты размера текста описания всё ещё слишком велики. Даже вариант «поменьше» использует var(--font-up-2). Есть ли возможность добавить var(--font-0) («самый маленький» или «по умолчанию») в качестве опции?

Или вы примете PR по этому поводу?

1 лайк

@jrgong Я только что объединил PR, который добавляет опцию «smallest» со значением $font-0. Дайте знать, если столкнётесь с какими-либо проблемами!

2 лайка