Category Icons

Что означает «icon» в настройках?

Это точное название какой-либо иконки с сайта SVG? Как узнать точное название?

1 лайк

Это действительно могло бы стать отличным улучшением!

1 лайк

Кажется, у меня проблема на моем форуме: иконки указаны как белые, а на странице категорий фон тоже белый.

Могу ли я задать здесь другой фон, так как он используется для подкатегорий?

2 лайка

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

Список иконок категорий не применяется в представлении категории (с отображением списка подкатегорий выше тем в этой категории)

Мне удалось исправить это, заменив строку 112 в header.html

      if(iconItem && !attrs.category.parent_category_id) {

на

      if (iconItem) {

и добавив следующий код в common.scss

.subcategory .category-icon-widget {
  display: none;
}

Иконка блокировки категории рядом с названием категории не меняется на новый SVG

Представление категорий:

Представление категории (с отображением списка подкатегорий выше тем в этой категории):

Думаю, это соответствующий код:

    let classNames = "badge-category clear-badge";
    if (restricted) {
      classNames += " restricted";
    }
    
...

    html +=
      `<span ${style} ` +
      'data-drop-close="true" class="' +
      classNames +
      '"' +
      (description ? 'title="' + escapeExpression(description) + '" ' : "") +
      ">";

который добавляет класс restricted к элементу <span> с классами badge-category clear-badge, управляющему отображением иконки блокировки подкатегории, но я не могу понять, как применить это также к элементу <div> с классом category-text-title, который управляет отображением иконки блокировки категории.

Пожалуйста, помогите @pmusaraj @tshenry

2 лайка

Есть ли шанс, что это появится в ближайшее время? По какой-то причине в представлении категорий в виде ящиков также не отображается цветной кружок или значок замка, так что, возможно, это находится вне контроля данного компонента…

1 лайк

Я всё ещё не могу «понять», что не так с цветом. Кто-то может подсказать, где я ошибся?

и результат

1 лайк

Ошибка @pmusaraj
Слаг-и (и заголовки) подкатегорий должны быть уникальны только в рамках их родительской категории.

Однако слаг-и используются как ключ для поиска иконки в этом компоненте.

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

Честно говоря, я считаю, что это на самом деле проблема Discourse, так как слаг-и должны быть уникальны во всем экземпляре Discourse, но они таковыми не являются.

Возможно ли вообще исправить это в рамках компонента?

1 лайк

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

P.S. Я вижу вашу новую тему, где задаётся вопрос, почему они не уникальны.

1 лайк

Например, компонент иконок категорий использует слаг для определения категории, к которой должна быть прикреплена иконка. Как администратор или пользователь может однозначно идентифицировать подкатегорию? Должны ли они использовать путь parentcategory-subcategory (или parent-child-grandchild, когда это улучшение будет выпущено)? Это кажется немного неудобным.

2 лайка

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

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

3 лайка

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

Тем не менее, это можно превратить в преимущество, сделав из этого функцию. Например, если у вас есть категории, основанные на группах, и многие из них имеют подкатегории «Помощь» и «Объявления», то вы можете легко настроить общую иконку «Помощь» для всех категорий помощи и общую иконку для всех категорий объявлений, используя всего две записи. При этом любые новые подкатегории с тегом «помощь» автоматически будут получать эту иконку.

Для наших нужд я пошёл ещё дальше и сделал возможным частичное совпадение по slug. Например, запись «help,question-mark,#000080,false» будет соответствовать «sw-help», «help-forum» и «helpdesk».

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

Также у меня есть возможность указать цвет как «catcol», в этом случае иконка будет использовать цвет категории вместо отдельно заданного.

Два предложения для включения в обновление для вас.

3 лайка

Кажется, компонент ранее использовал частичное совпадение, что сбивало с толку некоторых пользователей, которые хотели иконку для «book», но не для «booking». Однако с возможностью включать/отключать это в настройках такая функция была бы очень полезна. (Возможно, вместо «false» в последнем элементе лучше использовать partial-match — так будет понятнее.)

Отличное дополнение.

Я с радостью рассмотрю pull request с любой из этих функций. Спасибо!

5 лайков

Allow slug partial-match option by rogercreagh · Pull Request #5 · discourse/discourse-category-icons · GitHub был слит, спасибо @rogerco!

3 лайка

Я столкнулся с небольшой проблемой в опции цвета категории, если в настройках используются маркеры или блоки, а не полосы. Я реализовал это только для варианта с полосами, и в остальных случаях цвет возвращается к серому. Думаю, это можно исправить в основном через CSS, но пока я ещё не нашёл решение — обязательно найду!

3 лайка

Спасибо за эту отличную тему, @pmusaraj! :raising_hands:

Я хотел бы использовать иконку КОММЕНТАРИИ, но мне не очень нравится её залитая версия. Когда я использую comments, появляется именно залитая версия. Залитая версия обычно предоставляется как «fas fa-comments».

А что, если я хочу использовать обычную версию, которая обычно предоставляется как «far fa-comments»?

Среди следующих вариантов некоторые требуют платной подписки. Есть ли способ выбрать разные варианты, или залитая версия — единственная доступная?

3 лайка

Я добавил в свою тему следующее:

Как теперь добавить это в настройки темы? Вот что я попробовал сделать…

2 лайка

Используйте «far-comments» в обоих настройках, как показано здесь:

Платные версии не являются общедоступными, поэтому мы не можем включить их в Discourse. Если их лицензия это позволяет, вы можете добавить их в пользовательский SVG-спрайт в вашей теме. Полная инструкция по этому поводу находится в статье Введение в Font Awesome 5 и SVG-иконки, внимательно прочитайте раздел «Добавление пользовательских иконок».

4 лайка

Спасибо за помощь! Добавление far-comments в обе области сработало идеально!

Не могли бы вы быстро взглянуть на другой мой вопрос (в ответ на один из ваших комментариев в этой теме)…

1 лайк

Привет, отличный компонент темы! У меня возникли проблемы с добавлением Font Awesome или загрузкой иконок через загрузку спрайта иконок. Отображается только иконка question-circle. Что я делаю не так? Нужно ли добавлять CSS-код?

Скриншоты ниже

И

Имена Font Awesome всегда говорят «не найдено» и «создать»? Пробовал прямое имя и префикс, например bullhorn или fa-bullhorn.

Обновление: Font Awesome работает. Нашел в настройках SVG-иконку для добавления, однако она не использует настройки цвета, как question-circle.

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

1 лайк

Посмотрев на сайт в вашем профиле, я вижу иконки для категорий, так что, возможно, вы уже решили эту проблему? Если нет, то, судя по приведенному выше скриншоту, вам нужно убедиться, что файл SVG в icons-sprite является SVG-спрайтом (а не отдельной иконкой). Подробнее здесь: Replace Discourse's default SVG icons with custom icons in a theme

6 лайков