Пытаюсь добавить пользователям ссылки для верификации в Mastodon, нужна помощь

Привет! Я пытаюсь добавить ссылку для верификации профиля Mastodon на страницы профиля пользователя:

Верификация

Вы можете подтвердить, что являетесь владельцем ссылок в метаданных вашего профиля. Для этого на связанном сайте должна быть ссылка обратно на ваш профиль Mastodon. Обратная ссылка должна иметь атрибут rel="me". Текст ссылки не имеет значения. Вот пример:

<a rel="me" href="https://mastodon.social/@BartV">Mastodon</a>

Я форкнул тему с Clickable Social Icon Links on Profile, и ссылка на Mastodon корректно отображается на страницах профиля пользователя. Однако, поскольку она рендерится как шаблон Handlebars, она не видна в версии «HTML/без JavaScript», и краулер Mastodon её не увидит.

Я заметил, что в HTML-версии есть следующий блок:

<div class="user-crawler">
<img src='https://blenderartists.org/user_avatar/blenderartists.org/bartv/45/529382_2.png' alt='bartv' title='bartv' />
<h2 class='username'>bartv</h2>

Есть ли способ добавить строку с необходимой ссылкой в этот раздел из компонента темы?

Просто добавьте это в подвал, возможно. А если не хотите, чтобы это отображалось, можно добавить CSS, чтобы скрыть этот div.

Ах, я плохо объяснился: пользователи могут вводить свой URL Mastodon как пользовательское поле, и я хотел бы добавить для них личную ссылку на их профили на моём форуме.

По сути, вы предлагаете, чтобы каждый сайт мог верифицировать всех своих пользователей. То есть, если у меня есть аккаунт на mastodontti.fi, я могу добавить теги в свой профиль и получить верификацию.

Ну… это не совсем идея верификации в стиле Mastodon.

Не совсем, там лишь указано, что вы — тот же человек на другом сайте, и ничего более. GitHub готовится к запуску аналогичной функции.

Но в любом случае, я здесь не для споров, а просто пытаюсь найти решение своего вопроса :slight_smile:

Нет необходимости использовать CSS. Это просто ссылка, поэтому достаточно <a rel="me" .. ></a>.

Вот что

Да, но она должна быть доступна для краулера. Скрипты Ember/Handlebars не сработают, так как они рендерятся через JavaScript.

Вы упускаете суть. Тогда для этого можно было бы использовать любой публичный сервер Mastodon. Кроме того, вы используете довольно широкое определение пользователя какого-либо сайта.

Да, вы спорите, потому что от этого зависит, верно ли ваше решение.

И оно доступно. Когда между открывающим и закрывающим тегом A пусто или значение nil, всё работает отлично: это не отображается посетителям и не требует дополнительного правила CSS.

Извините, но это не так. Посмотрите на ссылку под иконкой Mastodon на моей странице профиля здесь:

Если вы проверите элемент, то увидите код rel=“me”, но если вы откроете исходный код страницы или загрузите её с помощью wget или подобного инструмента, этого кода там не будет, так как он генерируется на стороне клиента. Краулер не увидит этот код.

Если вы так говорите…

Я знаю, что могу добавить HTML в подвал страницы, чтобы подтвердить только себя, но я хочу, чтобы мои пользователи могли вводить свой URL Mastodon в виде пользовательского поля, чтобы он отображался на их страницах профиля и использовался ими для подтверждения своей личности.

Чтобы убедиться, что мы говорим об одном и том же, вы пытаетесь позволить пользователям подтверждать свои аккаунты в Mastodon через ваш сайт на Discourse, действуя аналогично описанному здесь: Get verified on Mastodon with your website | Opensource.com?

Если да, то, возможно, стоит предложить пользователям добавить ссылку либо в обычное сообщение, либо в раздел «О себе». В любом из этих случаев ссылка будет видна при сканировании сайта поисковыми ботами. Я не думаю, что можно переопределить шаблон для бота через компонент темы: Header Submenus - #134 by awesomerobot.

Проблема, с которой я столкнулся, заключается в том, что Discourse автоматически удаляет атрибут rel="me" из ссылок. Если нет обходного пути, этот атрибут, возможно, придётся добавлять в AllowLister через плагин. Я не глубоко погружён в интеграцию Discourse и Mastodon, но это может быть полезно и для других сайтов.

А, это другое.

По-моему, если у вас включена настройка отображения на странице профиля (так что оно будет доступно на странице), вы можете добавить тему-компонент в какой-то плагин outlet, а затем добавить CSS, чтобы скрыть его отображение по умолчанию.

Больше я не знаю, не открыв редактор и не посмотрев существующий код. Но, возможно, этого достаточно как подсказки.

Я сделал это, но проблема остаётся: (как я понимаю) компоненты темы всегда рендерятся на стороне клиента, и их вывод не будет виден поисковым роботам. Пока отложу эту идею, она сводит меня с ума :slight_smile:

Ой! Извините. Я не мог одновременно уделить внимание всему этому. Да. Вам понадобится плагин, чтобы добавить это в версию без JavaScript, так что, полагаю, вам нужно будет переопределить шаблон Rails.