Встраивание списка тем Discourse на другой сайт

Что можно изменить, чтобы указать несколько категорий?

2 лайка

Можно ли ожидать, что это будет работать, если «другой сайт» запущен локально на http://localhost:8000, а сайт Discourse находится не локально на поддомене https? Или же «другому сайту» тоже потребуется «настоящий» домен?

Файл скрипта, похоже, загружается корректно, и в консоли JS я не вижу ошибок. «Другой сайт» — это Gatsby/React-сайт; я добавляю элемент <d-topics-list>, когда страница отрисована в браузере, используя useEffect, и в живом DOM всё выглядит правильно (см. скриншот)…

Screen Shot 2021-05-19 at 9.21.08 AM

2 лайка

Переход с https на http обычно вызывает проблемы, но вы можете убедиться в этом, открыв консоль браузера F12.

4 лайка

Ага, проблема, похоже, в том, что React вмешивается в клиентский DOM, сбрасывая его до состояния, соответствующего серверному рендерингу (с элементом <d-topics-list> в исходном виде), сразу после того, как скрипт embed-topics.js вставляет iframe.

5 лайков

Кто-нибудь знает, в чём причина этой ошибки??

Последняя сборка Discourse
Последняя версия Chrome

Отказано во встраивании ‘https://vapingcommunity.co.uk/’, так как один из предков нарушает следующую директиву политики безопасности контента: “frame-ancestors ‘self’”.

3 лайка

Скорее всего, это связано с данным изменением: (cc @falco)

Зарегистрирован ли ваш основной сайт в разделе Администрирование > Настройка > Встраивание?

7 лайков

Бинго! Не заметил этого изменения, теперь всё работает идеально, большое спасибо :wink:

5 лайков

У кого-нибудь возникают ошибки «Refused to frame»?

Я включил встраивание тем и получаю:

Refused to frame 'https://myforumurl.com/', так как предок нарушает следующую директиву Content Security Policy: "frame-ancestors 'self'".
1 лайк

Пытаетесь ли вы встроить весь форум на другой сайт? Это не сработает.

Автор оригинального поста описывает, как встроить списки тем на другой сайт, но вы не можете запускать Discourse в iframe по причинам, которые вы описали.

3 лайка

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

3 лайка

Это связано с настройками безопасности вашего сайта, а не со стороны Discourse.

4 лайка

Всё заработало. Просто не прочитал инструкции достаточно внимательно :slight_smile:

4 лайка

Всё работает отлично, единственная проблема в том, что Google индексирует сам URL iframe.

Например, я встроил темы Discourse на эту страницу.

Google вроде бы правильно индексирует указанную выше страницу… но также индексирует следующие URL, которые я хотел бы исправить:

https://discuss.flynumber.com/embed/topics?discourse_embed_id=de-zse3f2nh3&template=complete&search=Romania&per_page=5

Можно ли добавить мета-тег noindex на эти страницы? Или ещё лучше — внедрить новый тег Google на эти страницы:

5 лайков

Интересно, спасибо за совет @nader. Нужно ли нам по умолчанию добавлять этот новый тег в <iframe> @falco или сделать это настройкой?

4 лайка

Этого должно быть достаточно

6 лайков

Просто хотел отметить, что сейчас всем поисковым роботам отправляется заголовок ' noindex, indexifembedded ', хотя поддержку нового параметра indexifembedded предоставляет только Google согласно их документации.

Вероятно, стоит изменить это на x-robots-tag: googlebot:noindex, indexifembedded

Или вовсе убрать, так как директива noindex может иметь непредвиденные последствия для других поисковых систем.

1 лайк

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

(В большинстве случаев при написании такого кода вы обычно игнорируете любые теги HTML, которые не ожидаете — это своего рода стандарт для HTML.)

3 лайка

Я этого не вижу, но на странице Google действительно указано:

В настоящее время только Google поддерживает тег indexifembedded.

Я согласен, что они проигнорируют indexifembedded, но меня беспокоит, что noindex может вызвать проблемы с SEO для страницы, на которой он размещен.

Итак, пусть Bing просканирует URL, содержащий встроенные темы. Он просканирует этот URL, а также URL встраивания:

/embed/topics?discourse_embed_id=XXXXXX....

Если вышеуказанный URL помечен как noindex, я беспокоюсь, что это навредит SEO страницы, на которой размещена встроенная тема.

Это решается использованием x-robots-tag: googlebot:noindex, indexifembedded, но я понимаю, почему Discourse может не хотеть отдавать предпочтение одной поисковой системе. Надеюсь, это станет стандартом, но пока, похоже, это касается только Google.

3 лайка

Привет! Хотелось бы уточнить, нет ли пока встроенного способа заставлять встроенные темы открываться с атрибутом target="_blank" вместо target="_parent"?

3 лайка

Просто интересно, почему отображается только одна тема? Кто-нибудь знает?

Вот категория (в которой много тем): Amazon Specific - eCommerce Sellers Forum

И код для вставки:
<d-topics-list discourse-url="https://forum.flowster.app" template="complete" top_period="all" category="17" per-page="5"></d-topics-list>

Но отображается только одна тема:

:thinking:

2 лайка