Можно ли изменить названия выпадающих списков?

Привет, сообщество :slight_smile:

Не знает ли кто-нибудь, есть ли возможность изменить названия выпадающих списков внутри конкретной категории?

Я бы хотел настроить части «все» и «все теги»:

Почти весь текст можно настроить:

Скорее всего, вам нужно отредактировать, например:

Но это не изменится только для определенных категорий.

Я начал работать над очень хакерским CSS-решением, оно не идеально… И я немного не хочу делиться чем-то таким хакерским. :confounded:

Понял, спасибо за помощь! @merefield @Canapin

Ой, извините, пробежался по тексту!

Да, они глобальные.

Давай, давай :wink:

Мне кажется, это излишне усложнено, особенно когда подкатегории не определены как таковые в HTML-коде… У меня есть что-то наполовину рабочее, но, думаю, это нужно сделать правильно, и в этом может помочь Discourse JS API. К сожалению, я мало знаю о нём.

Привет :wave:

Я создал компонент темы, чтобы реализовать это…

Он содержит два параметра для удобства.

Название категории
Первое поле: slug категории
Второе поле: заголовок выпадающего списка категории

Название тега
Первое поле: slug категории
Второе поле: заголовок выпадающего списка тега

Это будет выглядеть так.

Добавление заголовка подкатегории

Надеюсь, это поможет :slightly_smiling_face:


Редактирование: Я исправил ширину выпадающего списка, чтобы она корректно выравнивалась по ширине пользовательского текста. UX: fix the dropdown width to keep the custom content width · VaperinaDEV/category-breadcrumb-dropdown-title@faca71c · GitHub

Вау, отличная работа, @Don — ты меня поражаешь :exploding_head: :star_struck:

Слушайте все!
:man_mage:

Из глубин тайн SCSS и сложностей фронтенд-алхимии восстал сэр Дон. Покоряя функции, овладевая циклами и расшифровывая списки, мы с гордостью вручаем ему почётную Медаль за выдающиеся достижения во фронтенде :sports_medal::person_bowing:.

И ваш компонент работает без единой строки JS…

Happy James Corden GIF by The Late Late Show with James Corden

Скажи, пожалуйста, GPT4bot помог тебе это написать :laughing:

100% да, боюсь.

Отлично, это решение впечатляет, но ты можешь сделать это, @Don:

api
  .modifySelectKit("category-drop")
  .replaceContent((component, content) => {
    let newContent = [];
    content.forEach((item) => {
      if (
        component.category?.slug === "general" &&
        item.id === "all-categories"
      ) {
        item.name = "jojo";
      }

      newContent.push(item);
    });
    return newContent;
  });

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/select-kit/addon/mixins/plugin-api.js содержит список всех доступных действий:

  • appendContent
  • prependContent
  • replaceContent
  • onChange

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

@Don @j.jaffeux вы просто потрясающие, ребята!! :fire: