Текст-заполнитель шаблона темы компонента Topic

Спасибо, ребята! После обновления и жесткой перезагрузки всё работает как ожидалось!

2 лайка

Только начал тестировать этот компонент — спасибо! Мне интересно, можно ли добавить текст-заполнитель в личные сообщения. Кто-нибудь пробовал это сделать?

Личные сообщения имеют тот же текст-заполнитель по умолчанию, что и посты в темах. Его можно изменить администраторами сайта в настройках администрирования: Настроить > Текст. Найдите js.composer.reply_placeholder — как показано в верхней части этой ветки.

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

1 лайк

Этот компонент темы действительно крутой. Я пытался найти способ дать пользователям немного больше напутствий при создании темы и хотел бы сделать процесс более похожим на заполнение формы.

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

Возможно ли сделать так, чтобы на странице были разные подсказки-заполнители? Например, шаблон темы мог бы загружать отдельный заполнитель для:

«Имя»


«Местоположение»


«Проблема»

Таким образом, когда пользователь вводит своё имя, остальные заполнители для «Местоположения» и «Проблемы» остаются на месте, пока пользователь не введёт данные и в эти поля?

Текст шаблона темы Discourse по умолчанию остаётся, пока пользователь вводит сообщение. Похоже, это именно то, что вам нужно?

Подход с использованием плейсхолдеров:

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

Базовое поведение по умолчанию сейчас позволяет перечислять различные разделы формы, как я написал («имя», «местоположение» и «проблема»), но поведение шаблона по умолчанию имеет те же проблемы, что и отмечалось ранее: разметка Markdown запутывает, и пользователь может легко её сломать.

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

Я могу представить, что это возможно (?) с помощью jQuery. Каждый раздел должен иметь свой div с id, а jQuery позволит показывать или удалять текст для этого конкретного id при клике пользователя. Однако для этого потребуется добавлять div-элементы внутрь textarea, и я не уверен, как это сделать.

Я изучаю этот вопрос здесь.

Подход с использованием шаблонов

Вероятно, альтернативой было бы то, что заголовки разделов не «исчезают», когда пользователь нажимает на них. То есть заголовки разделов (например: Имя, Местоположение и Проблема) будут текстом, который останется на странице. Чтобы сделать это более похожим на форму по сравнению с текущим шаблоном по умолчанию:

  1. Текст заголовка раздела нельзя будет редактировать пользователю (то есть contenteditable="false").
  2. Разделительные точки между разделами нельзя будет удалить пользователю.
  3. Под заголовком раздела будет место, где пользователю будет очевидно, что можно печатать. В текущем шаблоне по умолчанию им пришлось бы перейти туда, где находится текст, нажать Enter, чтобы создать место для ввода.

Возможно, это более простой способ сделать это?

Я обнаружил, что настройка «применять только к первому сообщению» не работает.
Она не срабатывает, если я хочу, чтобы во всех сообщениях темы был одинаковый плейсхолдер, и отключаю эту настройку. В этом случае я получаю стандартный плейсхолдер.

Есть ли возможность добавить плейсхолдер, специфичный для ответов (не для первого сообщения в теме)? Я надеюсь дать пользователям больше указаний относительно того, что может содержаться в ответе, и плейсхолдер, появляющийся в ответе, был бы полезен.

4 лайка

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

P.S.

Пока был там, я отправил небольшой PR, чтобы остановить предупреждения в консоли браузера:

2 лайка

Объединено, спасибо, Натан.

2 лайка

У меня возникла проблема: текст-заполнитель не отображается. Что я упускаю?

Шаблон:

Настройка компонента:

Текст-заполнитель/шаблон не отображается:

При снятии галочки с пункта «Отображать все шаблоны тем как заполнители»:

Шаблон отображается как редактируемый текст (не как текст-заполнитель):

При редактировании текста шаблона он включает [placeholder]:

Текст шаблона исчезает/текст-заполнитель не отображается:

Это происходит на чистой установке Discourse без установленных плагинов или компонентов — версия Discourse 3.4.0.

Да, похоже, этот компонент темы перестал работать. :thinking:

3 лайка

Этот компонент перестал работать у меня.

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

1 лайк

Привет, есть ли надежда, что это обновится? :face_with_tongue:

Привет :waving_hand:

Я создал PR, чтобы возродить этот компонент темы и сделать его совместимым с последней версией Discourse. :slightly_smiling_face:

8 лайков

Спасибо, @Don! Я принял ваш pull request. Пожалуйста, проверьте, что всё работает у вас. :folded_hands:

3 лайка

Я только что переустановил и использовал его — похоже, теперь всё работает нормально.

Поэтому я убрал тег broken.

2 лайка

[Уведомление администратора] Тема «Текст-заполнитель шаблона темы» содержит код, требующий обновления. (id:discourse.resolver-resolutions)

[ТЕМА 50 «Текст-заполнитель шаблона темы»] УВЕДОМЛЕНИЕ О УСТАРЕВАНИИ: «site:main» устарел, используйте «service:site» [устарело с версии Discourse 2.9.0.beta7] [id устаревания: discourse.resolver-resolutions]

Я внес это изменение и выпустил обновление. Всё должно работать сейчас.

2 лайка