Как показать полное имя в Embeds

Привет, ребята!

Я только что прочитал эту тему: How to display full name in comments embeds

Я выполнил следующие команды:

cd /var/discourse
./launcher enter app
x86_64 arch detected.
root@discourse-app:/var/www/discourse# cd app/views/embed/
root@discourse-app:/var/www/discourse/app/views/embed# nano comments.html.erb

Nano не был установлен, поэтому я установил его и отредактировал файл comments.html.erb, заменив строки, упомянутые в указанной теме.

Затем я вышел из лаунчера и выполнил:

./launcher rebuild app

После пересборки ничего не изменилось — в встраиваемых комментариях по-прежнему отображаются имена пользователей вместо полных имен.

Где я мог ошибиться?

Спасибо.

Добро пожаловать, Марк! :wave:

При повторной сборке приложения Discourse будет скачан заново, и все изменения, внесённые вами внутри контейнера, будут перезаписаны.

Если вы хотите внести изменения в Discourse, редактирование файлов таким способом не является правильным подходом.

Кастомизация функций Discourse обычно осуществляется либо с помощью компонента темы:

Или плагина:

Если у вас есть навыки программирования, рекомендую ознакомиться с этими ссылками. :slight_smile:


Эта ссылка может быть особенно интересной:

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

@Canapin Спасибо за ваши предложения.

Я создал этот репозиторий https://github.com/OptDev/optuma-discourse-custom-embed,

но не двигаюсь далеко вперёд.

Я запускаю эту команду, и сборка проходит без ошибок:

./launcher enter app

Но я не вижу ожидаемых изменений во встраиваемых элементах. Я добавил несколько пользовательских классов CSS и заменил <%= post.user.username %> на <%= post.user.name %>. Буду признателен за дополнительные подсказки, как правильно настроить это. Не думаю, что переопределить файл шаблона плагина из другого плагина — это слишком сложно.

То, что мне удалось сделать, — это войти в приложение и вручную скопировать версию шаблона из моего плагина в /var/www/discourse/app/views/embed/, затем перезапустить приложение, и я вижу ожидаемые результаты.

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

Есть какие-то идеи, почему это не переопределяет файл /app/views/embed/comments.html.erb тем, что у меня в плагине?

after_initialize do
  ::EmbedController.prepend_view_path File.expand_path("../embed", __FILE__)
end

Хорошо, я всё сделал правильно, проблема была только в пути.

Теперь мне осталось разобраться, как настроить загрузку из частного репозитория Git.

Просто добавьте личный токен доступа к URL клонирования

@merefield Как это будет выглядеть в файле app.yml?

Не беспокойтесь, я нашел это здесь. Install plugins on a self-hosted site

Одно замечание: в документации сказано использовать «токен»…

git clone https://<token>@github.com/owner/repo.git

Однако мне потребовалось использовать имя пользователя GitHub и токен:

git clone https://<github-username>:<token>@github.com/owner/repo.git

В итоге ваш плагин заработал так, как задумывалось? :slight_smile:

@Canapin Да! Всё заработало. Вот как в итоге выглядит файл plugin.rb. Оказалось, у меня была просто проблема с путём: я указывал кастомную версию файла.

В итоге я поместил его в папку /custom_views/embed/comments.html.erb

# frozen_string_literal: true

# name: optuma_discourse_custom_embed
# about: Простой плагин для кастомизации шаблона во встраиваемых элементах форума
# version: 1.0.0
# authors: Optuma Pty Ltd
# url: https://github.com/OptDev/optuma-discourse-custom-embed
# required_version: 2.7.0

after_initialize do
  ::EmbedController.prepend_view_path File.expand_path("../custom_views", __FILE__)
end