Я думаю, что это возможно. В обработчике события dpg_displaypage вам нужно использовать $.ajax(), чтобы вызвать ваше внешнее API. Также, я думаю, вам нужно добавить ваше внешнее API в настройку Discourse «content security policy script src».
Похоже, что этот плагин всё ещё поддерживается, но, похоже, я выявил проблему на своём сервере: при включённом плагине страница входа не отображается. Надеюсь, что смогу решить эту проблему.
Если на моём сервере включён этот плагин, я могу подтвердить, что страница входа остаётся пустой, а при отключении плагина страница входа снова отображается как обычно. Если пользователь уже авторизован, проблема не возникает, и сервер работает нормально.
Ищу помощь/поддержку для решения этой проблемы. Готов предоставить любую дополнительную информацию, необходимую для диагностики.
Спасибо, Джордан. Да, мне потребуется ещё немного информации, так как я проверил свои различные экземпляры Discourse и не смог воспроизвести проблему. Когда вы говорите «страница входа не отображается», вы имеете в виду всплывающее окно входа, верно? Пожалуйста, предоставьте больше деталей и/или скриншоты. Также, если возможно, напишите мне в личные сообщения и укажите URL вашего экземпляра Discourse.
Привет, Сил,
Спасибо за ответ.
Когда у меня включён плагин discpage и я захожу на экземпляр Discourse, не авторизовавшись, я вижу полностью пустую страницу. См. ниже:
Я также недавно проверил логи консоли и заметил там несколько ошибок, связанных с discpage. Хотя для меня они ничего не значат. Может, они что-то значат для тебя…
Спасибо за сообщение об этой проблеме. Ошибка зарегистрирована здесь:
До тех пор, пока ошибка не будет исправлена, в качестве временного решения можно отключить настройку Discourse «Требуется вход».
РЕДАКТИРОВАНИЕ: ошибка теперь исправлена.
Привет, Сил,
Чувствую себя немного неловко
Извини за прямоту. Из чистого любопытства, не имея никаких навыков программирования, я посмотрел исходный код плагина и запутался в форматировании файла lib. Предполагаю, что это не техническое решение (но кто я такой, чтобы знать
), и могу представить и понять, откуда это взялось.
Мне кажется, что ты находишься в самом разгаре процесса, и уже сейчас результат отличный, поэтому я совсем не хочу показаться неблагодарным. Но не мог бы ты поделиться более понятной версией своей работы?
По моему мнению, в долгосрочной перспективе темпы обновлений ядра могут быть сложными для отслеживания авторам плагинов. Это могло бы успокоить тех, кто мог бы использовать функции твоего плагина, но колеблется, полагаясь на плечи слишком малого числа людей. А почему бы и нет — это могло бы даже создать позитивный настрой и интерес?
В любом случае, большое спасибо ![]()
Привет, Бенджамин!
Исходный код плагина опубликован в минифицированном виде, потому что мне за него стыдно. Это результат экспериментов в области исследований и разработок, и его необходимо подвергнуть значительной рефакторингу. Я отложил эту задачу до тех пор, пока плагин не привлечёт какой-либо интерес.
![]()
Ну что ж, вы можете записать меня в графу «очень заинтересован»!
Думаю, это очень приятное дополнение к основной функции «цитирование».
Я ищу способ мотивировать моих пользователей заниматься анализом речей (что, я думаю, довольно близко к вашему кейсу с Кастафьор, хотя и гораздо менее развлекательно, увы!), и, надеюсь, этот дизайн подтолкнёт их к написанию текстов.
Пока всё отлично!
Вот моё скромное мнение:
- Что касается заголовка, я бы предпочёл оставить его по центру. Мне кажется, это позволит статическим страницам плагина органичнее вписаться в общий «нормальный» контекст.
- Частный случай: возможно, стоит указать категорию «баллона» для каждой статической категории, если у нескольких статических категорий разные права на чтение/запись.
- Я что-то упускаю, или теги
[dpgb id=titre] [/dpgb](которые, как я понимаю, превращаются в баллоны) нужно прописывать вручную? Я честно (и безуспешно!) попробовал кнопку цитирования в редакторе, ой
. Вероятно, это необходимо, так как нужно задавать слаг тега
. - Не могли бы настройки
discpage hide tagsпереименовать вhide discpage tags? Я не совсем понимаю сложность скрытия только тегов dpg-****, но мне кажется, что они могут немного засорять список предложений при создании темы.
Следующий шаг — тест вовлечённости пользователей!
Спасибо @Benjamin_D, ваши отзывы всегда приветствуются.
Выравнивание заголовка должно подходить для:
- Обычных страниц Discourse (max-width = 1110px),
- Статических страниц DiscPage (max-width = 782px, так как 1110px слишком широко для статической страницы, где нельзя разместить боковые панели, виджеты или изображения),
- Разделённого макета DiscPage, где статическая страница находится слева, а темы — справа (max-width = 100%).
Я провёл множество тестов как с фиксированным выравниванием заголовка, так и с выравниванием, зависящим от макета, и пришёл к выводу, что постоянное выравнивание по левому краю — это правильное решение.
Однако я с радостью рассмотрю любую вашу идею. Пожалуйста, учитывайте три вышеуказанных случая.
Это уже поддерживается. См. этот абзац в документации:
На самом деле, здесь можно указать несколько категорий. Назовём PageCat категорию статической страницы, к которой принадлежит баллон. Если в этом поле указано более одной категории для баллонов, DiscPage выберет первую из них, которая либо является «соседом» PageCat (имеет того же непосредственного родителя), либо является непосредственным родителем PageCat. Если такая категория не найдена, DiscPage выберет первую категорию из списка. Эта функция позволяет сопоставлять [категорию статической страницы, категорию баллона], что полезно, например, для многоязычных форумов или для настройки статических страниц с разными групповыми правами доступа.
Согласен, это не сразу понятно. Любые идеи по улучшению формулировок будут приняты с благодарностью.
Да, баллоны нужно вставлять вручную с помощью текстового синтаксиса.
Когда вы впервые пробовали плагин, почему вы подумали, что кнопка цитирования может быть полезна? (Мне интересно, что вы тогда думали)
Функция hide discpage tags уже реализована: теги DiscPage по умолчанию скрыты на всех страницах и в виджетах Discourse. Другими словами, если вы видите тег DiscPage где-либо (при включённом DiscPage), это ошибка.
Настройка discpage hide tags совсем другая: она позволяет пользователям, которые не хотят включать теги в своём экземпляре Discourse, но были вынуждены сделать это для использования DiscPage, симулировать экземпляр без тегов.
На самом деле, я бы оставил именно max-width = 1110px, даже если при разделённом экране статическая страница под заголовком занимает 100%. Я закомментировал блок html.dpg header.d-header .wrap, и небольшое белое пространство вокруг заголовка над статической разделённой страницей не кажется слишком большим (хотя кнопки «Изменить заголовок» и «Страница» кажутся немного потерянными там, в случае нераспределённой разметки).
Какой же я глупый, RTFM
(в свою защиту, я, вероятно, читал это в прошлом году, но забыл
).
Я не помнил, что DiscPage скрывает категорию «баллон» (только что проверил это как администратор), но это отличная функция.
Так что, если я правильно понимаю, в случае нескольких {категорий статических страниц, прав пользователей} следует сделать соответствующую категорию-«баллон» подкатегорией статической (что логично с точки зрения прав) или сделать обе категории подкатегориями одной и той же третьей родительской категории. Это не так важно, но сработает ли это также, если статическая категория будет подкатегорией категории-«баллона»?
Вероятно, просто форма иконки в виде «баллона», в сочетании с тем, что я, наверное, никогда не использовал кнопку цитирования в редакторе, и, возможно, я подумал: «Эй, это было здесь раньше?» Так что я попробовал ![]()
Мне не сложно написать несколько строк «кода», но я уже слышу, как мои пользователи воют. Возможно, они просто пока не будут настраивать статические страницы. Иногда мне кажется, что каждое нажатие клавиши может стать последней каплей… ![]()
Конечно, извините… Я списываю это на лёгкую лихорадку, не знаю, почему я подумал, что они не скрыты. Возможно, я увидел отблеск одного из них в выпадающем списке тегов в части «баллон» разделённого экрана? Теперь я понимаю ту запятую в конце, которую я видел, пробуя всё возможное, даже тегирование тем в «баллоне»!
Возможно ли позволить пользователям создавать и редактировать свои статические сообщения? Тогда ограничение только для администраторов можно было бы реализовать через настройки безопасности категорий.
редактирование:
может быть, нет, модификация tag_groups, похоже, требует StaffConstraint ![]()
Я могу разрешить пользователю уровня TL4 установить баллон, изменив a = User.current()) && a.admin на User.current()) && a.trust_level >= 4, но тег не будет создан, пока администратор не отредактирует статическую страницу… ![]()
Было бы здорово: модератор категории, который мог бы изменять группу тегов своей категории ![]()
Кстати, я обнаружил, что чек-лист плагинов, похоже, конфликтует с discpage (что-то связанное с getmodel()).
Я предпочитаю текущую раскладку. Однако должен существовать простой способ её настройки. Я подумаю над этим.
Нет, такая комбинация не поддерживается.
Как вы уже поняли, создание статичных страниц не ограничено администраторами, а вот вставка шариков — ограничена. Причина в том, что в Discourse нет простого способа создания тегов (см. эту тему). Чтобы решить это, я решил использовать API tag group, который доступен только администраторам. Были и другие решения, но у каждого из них есть свои недостатки.
Вы имеете в виду этот плагин? В чём проблема?
Действительно, при включении обоих плагинов обновление статической страницы (по сути, отключение Discpage и возврат к обычной разметке) вызывает ошибку в консоли:
Uncaught (in promise) TypeError: postModel is undefined
checklistSyntax javascripts/discourse/initializers/checklist:29
По отдельности оба плагина работают корректно.
Спасибо @Benjamin_D. Проблема зафиксирована здесь:
РЕДАКТИРОВАНИЕ: это исправлено в последней версии (1.0.38).
Привет @syl, не хотел приносить плохие новости
, но я обнаружил ещё одну проблему совместимости, причём более серьёзную: при включённом плагине discpage ссылка для приглашения ведёт на пустую страницу (вместо страницы регистрации).
В консоли браузера указано:
r.site.categories is undefined
Отключение плагина позволяет ссылке для приглашения работать как обычно.
Спасибо большое за сообщение об этой проблеме, @Benjamin_D. Это ещё одна ошибка в режиме «требуется вход», поэтому я снова открыл предыдущий вопрос на GitHub. До тех пор, пока это не будет исправлено, в качестве временного решения можно отключить режим «требуется вход».
РЕДАКТИРОВАНИЕ: это исправлено в последней версии (1.0.38)
Привет @syl!
Кажется, недавнее изменение маршрутов тегов
что-то сломало ![]()
Как минимум, ссылка в пузырях теперь должна вести на /tag/dpg-xxx, а не на /tags/dpg-xxx
Спасибо @Benjamin_D, это исправлено в версии v1.0.38.

