Настроить текст кнопки «Создать новую тему»

:discourse2: Краткое описание Настройка кнопки «Новая тема» для каждой категории или тега
:eyeglasses: Предпросмотр Предпросмотр в конструкторе тем Discourse
:hammer_and_wrench: Репозиторий https://github.com/discourse/discourse-customize-new-topic-button-text
:question: Руководство по установке Как установить тему или компонент темы
:open_book: Новичок в темах Discourse? Начинающее руководство по использованию тем Discourse

Установить этот компонент темы

Возможности

Этот компонент темы позволяет настраивать кнопку «Новая тема» в списке тем категории или по тегу, а также название действия и кнопку в редакторе (выделено ниже). Например, если у вас есть категория #ошибки, вы можете изменить эти тексты на «Сообщить об ошибке»:

(Некоторые иконки могут потребовать добавления в настройку администратора «Подмножество SVG-икон»)

Также можно настроить текст кнопки ответа; это заменит текст ответить в редакторе и внутри тем:


Настройки

Название Описание
текст новой темы Здесь вы вводите детали для каждой настроенной кнопки
наследовать родительскую категорию При отключении подкатегории не будут автоматически наследовать текст родительской категории

Существует две настройки, основная из которых — текст новой темы:

Эта настройка позволяет задать фильтр (название тега или категории), иконку для кнопки «Новая тема» (это не меняет иконки в редакторе), а также название действия в верхней части редактора и кнопку «Создать тему» в редакторе.

Дополнительная настройка, включённая по умолчанию, называется наследовать родительскую категорию. Когда она включена, все дочерние категории также получат изменённый текст (если не указано иное в настройках).

:information_source: Обратите внимание: если вы настроили тег, он будет иметь приоритет над выбранной категорией.

:bulb: Идеи для будущих улучшений

  • Локализуемый текст для разных языков
  • Поддержка комбинаций категорий и тегов, а также нескольких тегов

:discourse2: Размещено у нас? Компоненты тем доступны для использования в наших тарифах Standard, Business и Enterprise.

27 лайков

Это действительно хорошо, большое спасибо <3

Сегодня я работал над гораздо более простой версией этого, используя api.customizeComposerText() :sweat_smile:

Это намного лучшее решение. Спасибо @awesomerobot!

В своих экспериментах мне так и не удалось переопределить метку кнопки «Композитор» для категорий с помощью плагина discourse-post-voting. Это становится более серьезной проблемой, когда для голосования за сообщения включено несколько категорий.

Если можно предложить: поддержка переопределения меток discourse-post-voting стала бы отличным улучшением. (:

1 лайк

Это отличный компонент темы! Идея пойти дальше может заключаться в следующем:

Если вы переименовываете кнопку, потому что фактически хотите изменить тип темы, то вам следует изменить название во всей *категории.

Например:
У вас есть категория под названием События. Вы фактически замените слово «тема» во всей категории на «событие». Это не «Новая тема», а «Новое событие», вместо списка тем у вас будет список событий и так далее.

Вы видите это в других инструментах, когда меняете основной случай использования чего-либо. Вот что делает AirTable при создании новой таблицы. Таблицы по умолчанию содержат «записи».

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

Использование компонента темы таким образом позволит нам легко и эффективно ребрендинговать категорию как более специфическую сущность. Заявки на поддержку, события и т. д.

Я нашел этот компонент темы при поиске, потому что хотел изменить это слово «тема» на «событие»:

3 лайка

@awesomerobot этот компонент темы просто потрясающий, огромное спасибо за него!

Я заметил, что этот компонент темы вызывает странное поведение CSS для кнопки «Новая тема».

Компонент темы отключён:

Компонент темы включён:


Также я заметил, что хотя он меняет кнопку «Создать тему» в редакторе, что отлично…

…он также меняет текст кнопки Ответить на ту же строку, что не совсем удобно, ведь это не новый отчёт об ошибке, а просто ответ :slight_smile:

Есть ли шанс, что в редактор можно добавить ещё одно поле для изменения текста кнопки «Ответить» (или оставить его пустым, чтобы текст остался как Ответить?)?

4 лайка

Извините, ещё один момент: похоже, это также не учитывает случай, когда две подкатегории (каждая с разным родителем) имеют одинаковый слаг. Например:

  • parent1
    • sub1
  • parent2
    • sub1

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

3 лайка

Спасибо за обратную связь, я внес несколько обновлений! FIX: action, switch category to ID, ignore replies by awesomerobot · Pull Request #5 · discourse/discourse-customize-new-topic-button-text · GitHub

Я совершенно упустил кнопку «Ответить»! На данный момент я оставил её как reply, но отдельная настройка для изменения её текста имела бы смысл.

Отличное замечание, кажется, что использование ID категории вместо её названия в настройках будет лучшим способом избежать этого. Это означает, что любые существующие настройки, которые у вас есть, потребуется обновить.

3 лайка

Кажется, появилась новая ошибка. Когда этот плагин включен, он создает две кнопки темы:

2 лайка

Да, спасибо за сообщение об этом. В Discourse некоторые коннекторы изменились — после обновления проблема должна быть исправлена:

2 лайка

Возможно ли исправить разницу в размере кнопки? (старый скриншот, ваше последнее обновление устранило проблему с двумя кнопками)

1 лайк

Да, теперь высота этой кнопки должна быть правильной

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

Сообщение (4 повторения)

[DiscourseJsProcessor] ПРЕДУПРЕЖДЕНИЕ: Использование {{attrs}} для обращения к именованным аргументам устарело. {{attrs.canCreateTopic}} следует заменить на {{@canCreateTopic}}. (‘discourse/components/custom-new-topic-button.hbs’ @ L2:C8) [id предупреждения: attrs-arg-access] Подробнее см. по ссылке: Ember.js - Deprecations.
at theme-transpiler.js:3164:26752
at j. (theme-transpiler.js:3168:1693)
at theme-transpiler.js:3168:161
at j. (theme-transpiler.js:3168:1693)
at D (theme-transpiler.js:3168:1754)
at te (theme-transpiler.js:3168:1318)
at PathExpression (theme-transpiler.js:3198:21763)
at yo (theme-transpiler.js:3187:2776)
at Al (theme-transpiler.js:3187:3513)
at Ml (theme-transpiler.js:3187:3309)
at yo (theme-transpiler.js:3187:3013)
at Al (theme-transpiler.js:3187:3513)
at Ml (theme-transpiler.js:3187:3309)
at yo (theme-transpiler.js:3187:3013)
at Ml (theme-transpiler.js:3187:3350)
at yo (theme-transpiler.js:3187:3013)
at Al (theme-transpiler.js:3187:3513)
at Ml (theme-transpiler.js:3187:3309)
at yo (theme-transpiler.js:3187:3013)
at Bi (theme-transpiler.js:3187:3879)
at PA (theme-transpiler.js:3190:3002)
at Cf (theme-transpiler.js:3190:9856)
at Al (theme-transpiler.js:3176:35353)
at gf (theme-transpiler.js:3176:35600)
at D (theme-transpiler.js:3198:42250)
at Sft.o.precompile (theme-transpiler.js:3281:3078)
at dDe (theme-transpiler.js:3161:1003)
at e.CallExpression (theme-transpiler.js:3159:33796)
at h (theme-transpiler.js:10:111797)
at e.uPe [as _call] (theme-transpiler.js:59:16906)
at e.oPe [as call] (theme-transpiler.js:59:16726)
at e.lPe [as visit] (theme-transpiler.js:59:17700)
at t.visitQueue (theme-transpiler.js:59:40645)
at t.visitSingle (theme-tr…

Трассировка стека

/var/www/discourse/lib/discourse_js_processor.rb:133:in block in create_new_context' mini_racer-0.8.0/lib/mini_racer.rb:273:in block in attach’
mini_racer-0.8.0/lib/mini_racer.rb:242:in call_unsafe' mini_racer-0.8.0/lib/mini_racer.rb:242:in block (2 levels) in call’
mini_racer-0.8.0/lib/mini_racer.rb:369:in timeout' mini_racer-0.8.0/lib/mini_racer.rb:241:in block in call’
mini_racer-0.8.0/lib/mini_racer.rb:240:in synchronize' mini_racer-0.8.0/lib/mini_racer.rb:240:in call’
/var/www/discourse/lib/discourse_js_processor.rb:168:in block in v8_call' /var/www/discourse/lib/discourse_js_processor.rb:167:in synchronize’

1 лайк

Хм, странно. Я протестировал это на последней версии Discourse, и всё работает отлично — я только что объединил обновление компонента, которое решит эту проблему устаревания. Можете обновиться и попробовать снова?

1 лайк

У меня тоже, после нескольких попыток оно не отображается.

К сожалению, этот замечательный компонент темы, похоже, не работает в гармонии с Custom Wizard Plugin 🧙

Плагин Wizard может подключаться к кнопке категории через настройки категории:

При использовании вашего компонента название кнопки меняется, но при нажатии на неё больше не запускается Wizard, выбранный в настройках категории. Мы были бы рады использовать ваш компонент на крупном производственном сайте, но пока не можем этого сделать. Надеемся, что проблема будет решена. Без давления :slight_smile:

У меня такого не наблюдается — у меня такая же настройка, и мои кнопки работают. Возможно, стоит проверить другие плагины или TC. Для справки: я использую последние сборки.

1 лайк

Это отличный небольшой компонент, который может добавить сайту изысканную детализацию и завершённый вид.

1 лайк

Здравствуйте

Думаю, у меня ошибка.

Текст кнопки «Новая тема» больше нельзя изменить.

Изменение применяется к другим кнопкам.

Версия: 3.2.0.beta4-dev([4886c1fddc]

Спасибо за вашу помощь (и за эти функции!)

2 лайка

Спасибо за отчёт!

Похоже, что в последнем PR появилась регрессия:

Он преобразует синтаксис из this.args.<param>. в @<param>; однако первый необходим, так как мы находимся внутри плагин-аутлета.

РЕДАКТИРОВАНИЕ: Я создал PR :+1:

1 лайк

Спасибо за PR, @Arkshine! Это должно быть исправлено в обновлении

Это также будет включено в обновление: https://github.com/discourse/discourse-customize-new-topic-button-text/pull/7

Таким образом, теперь будет доступна возможность кастомизировать текст кнопки ответа в композиторе и в постах (по-прежнему на основе тега и категории).

1 лайк