Я сейчас занимаюсь миграцией своего блога с WordPress (с комментариями Discourse) на Ghost (также с комментариями Discourse). Несмотря на то, что я настроил комментарии, следуя инструкциям на странице Официальная интеграция Ghost + Discourse, я столкнулся с рядом проблем, которые нужно решить. Не сочтите за труд помочь:
В настройках встраивания я не отмечал опцию «Импортированные темы будут скрыты до появления первого ответа», однако при создании новой записи и соответствующей ей темы в Discourse тема оказывается скрытой до тех пор, пока не будет оставлен комментарий. Есть ли способ избежать этого и чтобы темы создавались и отображались сразу после публикации записи в Ghost?
Кроме того, если я неправильно понял назначение этой настройки, подскажите, что она на самом деле делает?
(Несмотря на мои советы, многие мои читатели настаивают на использовании сообщества Discourse как источника новых записей, а не самого блога, и мне необходимо поддерживать их.)
Когда блог работал на WordPress, я использовал плагин WordPress Discourse. При создании тем, соответствующих записям блога, они появлялись в Discourse так, будто там были опубликованы ссылки, как можно увидеть на примере средней темы здесь:
Можно ли изменить код или настройки встраивания, чтобы вернуть такое поведение? Это было удобно: ссылка из индекса и четкое различие между постами «комментарии» и постами «сообщество».
Самое главное: когда я перехожу к записи, у которой уже есть комментарии Discourse (через плагин WordPress), секция комментариев на странице зависает на надписи «Загрузка обсуждения…» навсегда. Я ожидал, и это, конечно, крайне важно, что такие встраивания будут ссылаться на существующую тему, соответствующую этому URL. Кто-нибудь нашел способ реализовать это?
Мне нужно будет внимательнее посмотреть код, но, насколько я понимаю со стороны Discourse, вам просто нужно убедиться, что URL в записи встраивания (точно не помню, как он называется) совпадает с URL, который передаёт ваш новый сайт.
Так что, думаю, всё будет в порядке, если discourseEmbedUrl на новом встраиваемом сайте совпадает с новым (или вы измените его в записи на Discourse).
К сожалению, насколько я могу судить, так и есть. Я проверил страницу блога в инструментах разработчика и увидел следующее, где должны отображаться комментарии Discourse:
Здесь в скрипте указан параметр discourseEmbedUrl со значением
https://eldraeverse.com/2024/10/28/spooooky/
А в теме Discourse я вижу тот же URL как в ссылке в верхней части темы, так и во вставке «Опубликовано изначально на:» в первом сообщении темы. (Не уверен, есть ли где-то ещё в Discourse, где конкретно нужно искать исходную запись встраивания, но всё, что я вижу в самой теме, совпадает.)
Редактирование: Для уточнения: ранее я использовал плагин WP Discourse, и поскольку он не настраивается через конфигурацию встраивания в Discourse, к сожалению, я не могу просто посмотреть старые настройки. Однако я убедился, что все URL-адреса тем и страниц на новом блоге Ghost останутся такими же, как и на блоге WordPress, поэтому всё должно автоматически совпасть.
чтобы увидеть, что там есть, и если это совпадает с вашим, то всё должно работать. Однако, поскольку данные не загружаются, я думаю, это означает, что вы не разрешили вашему другому сайту выполнять встраивание на ваш Discourse.
что, несомненно, должно соответствовать URL-адресам как старого, так и нового сайта? Если не считать слаг, специфичный для конкретного поста, URL-адреса постов, у которых не загружается тема комментариев, идентичны URL-адресам постов, у которых это происходит успешно?
Ох. Извините. Я в основном думаю о само- (или моём-) размещённых решениях. Если вы используете бизнес-хостинг, возможно, вы сможете сделать что-то подобное с помощью плагина Data Explorer.
Попробуйте включить опцию «Встраивать любые источники» и посмотрите, исправит ли это проблему. В худшем случае, как мне кажется, встраивание загрузится, но вы не увидите комментариев, которые ожидаете.
Увы, я всего лишь скромный пользователь, работающий pro bono. К сожалению, научная фантастика не приносит такого дохода, как мне хотелось бы.
Я попробовал embed any origin, но, увы, поведение не изменилось.
(Я также изучил исходный код плагина WP Discourse, который, похоже, взаимодействует исключительно с API Discourse для выполнения своих задач и вообще не использует стандартную поддержку встраивания. Теперь, увидев, как выглядят встроенные комментарии Discourse в Ghost, это не кажется удивительным — комментарии в старом WordPress выглядели и вели себя иначе.
Теперь у меня возникает вопрос: записан ли для этих тем какой-либо URL встраивания на стороне Discourse? Хотя это сразу порождает вопрос: почему я не вижу появления новых тем (встроенных), а вместо этого сталкиваюсь с этой ошибкой? И есть ли способ добавить такой URL к ним?)
Я провел небольшой эксперимент: если удалить тему, созданную плагином WP Discourse, то при последующем посещении этого же поста на блоге Ghost для него автоматически создается новая тема через встраивание. Следовательно, темы WP Discourse способны блокировать работу встраивания, даже если они не отображаются.
Конечно, это не жизнеспособное решение, но это один из фактов.