Встроенный твит от Twitter

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

У нас точно есть Discourse :slight_smile:

1 лайк

Это особенность. Чтобы предотвратить многократную загрузку iframe во время редактирования, я не позволил включить компонент в режиме редактирования.

6 лайков

После установки я заметил, что при переходе к теме сначала открывается «последнее сообщение», затем загружается встроенный твит, и страница автоматически прокручивается назад на несколько сообщений. Это происходит каждый раз.

Есть ли решение этой проблемы?

2 лайка

У нас всё ещё проблема… встраивание пока не работает, хотя всё кажется настроенным… есть какие-нибудь идеи?

1 лайк

Этот компонент темы не использует Twitter API, поэтому в этом аспекте вы не будете ограничены.

1 лайк

Однобокс Twitter был изменён согласно этому коммиту: FIX: Use Twitter API v2 for oneboxes and restore OpenGraph fallback (… · discourse/discourse@24c9053 · GitHub

Я попробовал этот компонент темы на своём тестовом экземпляре, и медиа не отображается:

Это связано?

1 лайк

Этот компонент темы будет работать только в том случае, если onebox не работает

1 лайк

Отлично :+1:.

Я протестировал, и если однобокс не работает корректно (например, не отображает медиа), то необходимо добавить twitter.com в заблокированные домены для однобокса, чтобы компонент работал. :slight_smile:

Было:

Стало:

Я не широко использовал компонент темы и не сталкивался с этой проблемой, но, по моему предположению, Discourse не знает, какой высоты будет iframe Twitter до загрузки контента. Когда iframe загружается, он сдвигает окружающий контент, создавая такое поведение.

Можете снять видео этого процесса?

2 лайка

Однострочный блок снова начал работать для твитов, переопределяя этот компонент. Кто-нибудь заметил это сегодня?

Я запустил пересборку приложения примерно 10 часов назад, текущая версия 3.1.0.beta5 (09feb03056)

Так что это может быть связано с внезапным откатом.

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

В настройках я вижу «Разрешённые iframe для однострочного блока», однако я не могу перечислить все возможные src, которые хочу, чтобы просто исключить Twitter. Есть ли способ отключить один или несколько src таким образом? Если нет, то как насчёт этого?

Или, возможно, что-то снова изменилось на стороне Twitter, и всё это совпадение.

Заметил ли это кто-нибудь ещё? @Lhc_fl

1 лайк

@jancernik исправил это после недавних изменений в API Twitter :raised_hands:

Да, именно так. Именно поэтому мы не используем «официальный» виджет Twitter в ядре Discourse — он заставляет темы «прыгать» по мере загрузки iframe.

4 лайка

Эх, надо было прочитать последние несколько постов! :melting_face:

3 лайка

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

3 лайка

Именно так я и думал, что это снова произошло. Это всплывало в различных сборках, насколько я помню Discourse jumps back 20 posts in post history when navigating to new topic

1 лайк

Есть ли способ минимизировать этот сдвиг? Он очень заметен и раздражает, если на загруженной странице несколько ссылок на Twitter. Я посмотрел код плагина и бегло ознакомился с используемым им API. Было бы полезно оценить высоту контента и установить её для элемента blockquote, чтобы уменьшить сдвиг, или всё это всё равно зависит от асинхронного JavaScript Twitter? Я не знаком с API Discourse, поэтому не знаю порядок рендеринга элементов и т. д., и у меня сейчас нет времени углубляться в это, чтобы определить, есть ли разумный способ решить эту задачу.

1 лайк

Этого решения мне было недостаточно, поэтому я добавлю кое-что ещё.

Нам нужно добавить что-нибудь (на самом деле, подойдёт любой случайный набор символов) в twitter consumer key и twitter consumer secret.

Скорее всего, у вас всё ещё был настроен старый API.

После этого компонент темы снова заработает.

2 лайка

Думаю, у меня его не было, но Twitter очень часто меняет поведение своего ПО (даже результат, который мы получаем через curl). Меня бы не удивило, если бы у вас недавно был другой опыт из-за этого.

2 лайка

Для повторения: используете ли вы компонент темы с включенными ключами потребителей и доменом twitter.com в списке заблокированных доменов для одностраничного отображения?

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

В последнем обновлении 3.6.0.beta6 для вставок Twitter снова был возвращён Onebox, несмотря на то, что twitter.com указан в blocked_onebox_domains в настройках.

В версии beta5 блоки доменов onebox были достаточны, поэтому, что бы ни изменилось в последнем обновлении, приведённый выше дополнительный совет помог снова заставить компонент отображать твиты.