Спасибо, ребята! После обновления и жесткой перезагрузки всё работает как ожидалось!
Только начал тестировать этот компонент — спасибо! Мне интересно, можно ли добавить текст-заполнитель в личные сообщения. Кто-нибудь пробовал это сделать?
Личные сообщения имеют тот же текст-заполнитель по умолчанию, что и посты в темах. Его можно изменить администраторами сайта в настройках администрирования: Настроить > Текст. Найдите js.composer.reply_placeholder — как показано в верхней части этой ветки.
Если вы используете этот компонент для настройки текста-заполнителя для каждой категории тем, то текст-заполнитель по умолчанию должен применяться только к личным сообщениям.
Этот компонент темы действительно крутой. Я пытался найти способ дать пользователям немного больше напутствий при создании темы и хотел бы сделать процесс более похожим на заполнение формы.
Сейчас этот компонент темы делает так, что весь текст, предварительно загружаемый в тему, представляет собой единственную подсказку-заполнитель. Таким образом, как только пользователь начинает вводить текст в редакторе темы, весь текст-заполнитель исчезает.
Возможно ли сделать так, чтобы на странице были разные подсказки-заполнители? Например, шаблон темы мог бы загружать отдельный заполнитель для:
«Имя»
«Местоположение»
«Проблема»
Таким образом, когда пользователь вводит своё имя, остальные заполнители для «Местоположения» и «Проблемы» остаются на месте, пока пользователь не введёт данные и в эти поля?
Текст шаблона темы Discourse по умолчанию остаётся, пока пользователь вводит сообщение. Похоже, это именно то, что вам нужно?
Подход с использованием плейсхолдеров:
То, что я (и, возможно, другие) хотел бы видеть, должно работать больше как плейсхолдеры в форме (то есть с отдельными элементами формы).
Базовое поведение по умолчанию сейчас позволяет перечислять различные разделы формы, как я написал («имя», «местоположение» и «проблема»), но поведение шаблона по умолчанию имеет те же проблемы, что и отмечалось ранее: разметка Markdown запутывает, и пользователь может легко её сломать.
Я считаю, что идеальным вариантом была бы обычная форма, где для каждого раздела (имя, местоположение и проблема) есть плейсхолдер, но (вот в чём разница) разделы будут работать независимо. То есть, когда пользователь нажимает на раздел «имя», плейсхолдер «имя» исчезает, но остальные разделы остаются, пока пользователь не нажмёт на них тоже.
Я могу представить, что это возможно (?) с помощью jQuery. Каждый раздел должен иметь свой div с id, а jQuery позволит показывать или удалять текст для этого конкретного id при клике пользователя. Однако для этого потребуется добавлять div-элементы внутрь textarea, и я не уверен, как это сделать.
Я изучаю этот вопрос здесь.
Подход с использованием шаблонов
Вероятно, альтернативой было бы то, что заголовки разделов не «исчезают», когда пользователь нажимает на них. То есть заголовки разделов (например: Имя, Местоположение и Проблема) будут текстом, который останется на странице. Чтобы сделать это более похожим на форму по сравнению с текущим шаблоном по умолчанию:
- Текст заголовка раздела нельзя будет редактировать пользователю (то есть
contenteditable="false"). - Разделительные точки между разделами нельзя будет удалить пользователю.
- Под заголовком раздела будет место, где пользователю будет очевидно, что можно печатать. В текущем шаблоне по умолчанию им пришлось бы перейти туда, где находится текст, нажать
Enter, чтобы создать место для ввода.
Возможно, это более простой способ сделать это?
Я обнаружил, что настройка «применять только к первому сообщению» не работает.
Она не срабатывает, если я хочу, чтобы во всех сообщениях темы был одинаковый плейсхолдер, и отключаю эту настройку. В этом случае я получаю стандартный плейсхолдер.
Есть ли возможность добавить плейсхолдер, специфичный для ответов (не для первого сообщения в теме)? Я надеюсь дать пользователям больше указаний относительно того, что может содержаться в ответе, и плейсхолдер, появляющийся в ответе, был бы полезен.
Я выяснил, что это работает для ответов только в том случае, если текст плейсхолдера состоит более чем из одной строки. Не имею понятия, почему, так как код для меня немного слишком сложен.
P.S.
Пока был там, я отправил небольшой PR, чтобы остановить предупреждения в консоли браузера:
Объединено, спасибо, Натан.
У меня возникла проблема: текст-заполнитель не отображается. Что я упускаю?
Шаблон:
Настройка компонента:
Текст-заполнитель/шаблон не отображается:
При снятии галочки с пункта «Отображать все шаблоны тем как заполнители»:
Шаблон отображается как редактируемый текст (не как текст-заполнитель):
При редактировании текста шаблона он включает [placeholder]:
Текст шаблона исчезает/текст-заполнитель не отображается:
Это происходит на чистой установке Discourse без установленных плагинов или компонентов — версия Discourse 3.4.0.
Да, похоже, этот компонент темы перестал работать. ![]()
Этот компонент перестал работать у меня.
Ну что ж, могу подтвердить, что это не работает. Вероятно, из-за недавних существенных изменений в Discourse.
Привет, есть ли надежда, что это обновится? ![]()
Привет ![]()
Я создал PR, чтобы возродить этот компонент темы и сделать его совместимым с последней версией Discourse. ![]()
Спасибо, @Don! Я принял ваш pull request. Пожалуйста, проверьте, что всё работает у вас. ![]()
Я только что переустановил и использовал его — похоже, теперь всё работает нормально.
Поэтому я убрал тег broken.
[Уведомление администратора] Тема «Текст-заполнитель шаблона темы» содержит код, требующий обновления. (id:discourse.resolver-resolutions)
[ТЕМА 50 «Текст-заполнитель шаблона темы»] УВЕДОМЛЕНИЕ О УСТАРЕВАНИИ: «site:main» устарел, используйте «service:site» [устарело с версии Discourse 2.9.0.beta7] [id устаревания: discourse.resolver-resolutions]
Я внес это изменение и выпустил обновление. Всё должно работать сейчас.






