Тема-компонент, который включает иконки социальных сетей в качестве кликабельных элементов в профиле пользователя и карточках пользователей, если вы используете компонент темы «Каталог карточек пользователей».
Это решение на 99% скопировано из обсуждения и примеров кода, предоставленных @LeoMcA в этом обсуждении на Meta, а также в теме «Namati User Card Profile». Однако я решил вынести это из ветки обсуждения и сделать его немного более универсальным.
Примечания
Пользователи, которые не указали значение для какого-либо поля, не будут видеть соответствующую иконку на своей карточке профиля.
Пользовательские поля для Instagram и Twitter ожидают только имена пользователей (без символа “@”); имя добавляется к базовому URL.
Я рекомендую настроить пользовательские поля, для которых будут отображаться иконки, так, чтобы они не показывались на карточке пользователя, иначе наличие текста и кликабельных иконок может показаться избыточным. Это лишь мое мнение, но тема не скрывает их автоматически.
Настройки сайта
Каждое имя пользовательского поля должно совпадать с тем, как вы назвали соответствующее поле в вашем экземпляре Discourse. По умолчанию компонент темы ожидает имена, указанные ниже, но вы, конечно, можете изменить их. Строки чувствительны к регистру.
Отличная работа! Единственная проблема, которую я вижу, заключается в том, что из-за этого значок аватара смещается вниз. Иконка дерева должна накладываться на мой аватар.
Кажется, у меня в сообществах нет флейров. Я посмотрел у вас и думаю, что дело в размере иконок, из-за чего карточка становится больше. Я не особо разбираюсь в CSS, но, похоже, мне придётся условно применять отступ к аватару для пользователей с иконками.
Обнаружена несовместимость с плагином Follow: этот TC работает корректно при авторизованном пользователе, но при доступе к сайту как анонимный пользователь карточки пользователей и страница профиля пользователя некорректно отображаются.
Обновление: это не связано с TC ссылок на иконки социальных сетей. Я сообщу об этом в теме плагина Follow.
В /logs я вижу:
NoMethodError (undefined method id' for nil:NilClass) /var/www/discourse/plugins/discourse-follow/plugin.rb:74:in block (2 levels) in activate!’
Мне это нравится! Единственная проблема в том, что имя поля и URL отображаются на карточке и в профиле вместе с иконкой. Как можно скрыть текстовую часть поля/URL?
Спасибо, да, я пришел к такому же выводу, хотя пока не до конца разобрался с условным применением стилей, извините. Постараюсь найти кого-то с большим опытом в таких вопросах.
Это работает как по маслу, но я вижу, что вы «зашиваете» использование каналов YouTube. Некоторые пользователи, возможно, предпочтут указывать там своё имя пользователя? (У некоторых пользователей каналов нет). Думаю, было бы лучше, если бы вы позволяли людям просто вставлять ссылку на YouTube вместо канала или имени пользователя.
Ещё одна мысль насчёт полей Instagram и Twitter: несмотря на то, что вы добавили примечание о том, что в эти поля профиля нужно вводить только имена пользователей, многие люди всё равно вводят целую ссылку — полагаю, на многих сайтах это более распространённый способ. Это навело меня на мысль: возможно, вы могли бы определять наличие «https://» в значении и, если оно есть, больше не добавлять базовый URL? Это сделало бы процесс чуть более гибким и надёжным.
Отлично, я добавил это предложение, и теперь оно должно работать для обоих типов ввода.
К сожалению, я не совсем понимаю разницу между каналами и профилями пользователей на YouTube. Что вы предлагаете в качестве базового URL для YouTube? Просто https://youtube.com/?
По-моему, есть ссылки /c/ и /u/ на каналы и пользователей соответственно. Честно говоря, думаю, лучший подход здесь — просто позволить людям вводить URL и не усложнять, делая интерфейс слишком красивым?
Да, верно, я просто уберу функцию базового URL для ссылок на YouTube, чтобы пользователи могли вводить полные ссылки, как это уже сделано для LinkedIn. Спасибо за предложение, только что обновил.
Приносим извинения за крайне запоздалый ответ — надеемся, что вы уже смогли найти решение.
Мы добавили новую настройку, которая позволяет выбрать цвет иконки в панели конфигурации темы.
Теперь вы можете просто изменить его на белый или любой другой цвет, более совместимый с тёмной темой. Обновление уже доступно!
Сначала спасибо за этот компонент темы Я включил его на своём сообществе, и он выглядит отлично.
Не знаю, сталкивался ли кто-то ещё с этой проблемой, но при включённом компоненте темы на мобильной версии карточка пользователя имеет наложение элементов:
В качестве обходного решения я использовал этот CSS для мобильных устройств, чтобы карточка выглядела так же, как и раньше, когда социальные ссылки не указаны:
Не знаю, связано ли это с каким-то недавним изменением в ядре: если я авторизован под своим аккаунтом, ссылки отображаются на карточках пользователей, но если я не авторизован (тестирую в анонимной вкладке), в консоль выводится ошибка, потому что в этой строке переменная userFields не определена. В этом случае на карточке пользователя отображаются только аватар и имя пользователя, ничего больше.
Если я проверяю наличие userFields перед её первым использованием, как я тестировал здесь, карточка отображается полностью, но ссылки на иконки социальных сетей отсутствуют.