Discourse Category Lockdown

Очень легко настроить, и я думаю, что у меня всё работает правильно.

Случайный вопрос: можно ли внедрить собственную иконку? Например, логотип сайта вместо иконок Font Awesome? У меня сейчас есть только png-файл.

1 лайк

Это можно сделать с помощью CSS. Я делал что-то подобное, но код не сохранил.

Если я правильно помню, нужно два шага: скрыть кастомную иконку (в моей кастомной теме я использовал иконку звезды), а затем добавить кастомное изображение перед заголовком.

.topic-list .category-idofyourcategory {
    .topic-status .d-icon-star {
        display: none;
    }
    .title::before {
        content: url("/your_image.png");
    }
}

Я не воспроизводил это снова, поэтому, возможно, вам придётся кое-что подправить, но это должно дать вам направление.

4 лайка

Я перенаправляю пользователя на страницу WordPress (мой провайдер OAuth), где он может зарегистрироваться для подписки на просмотр контента или просто войти в систему.

Проблема в том, что если пользователь входит в систему и возвращается на форум, он не автоматически авторизуется на форуме (и ему приходится снова нажимать кнопку «Войти» на форуме). Что мне нужно изменить, чтобы попытаться обеспечить автоматический вход? Можно ли что-то добавить к моей ссылке?

Если это позволяет перенаправлять на URL, добавьте это в конец вашего URL Discourse: /session/sso?return_path=/top. Вы можете изменить путь перенаправления, но это должно автоматически выполнить вход для пользователя.

2 лайка

Отлично! Раньше я мог делать это на XenForo, поэтому надеялся, что в Discourse будет что-то подобное. Это идеально подходит для платных сообществ, чтобы привлекать людей в премиум-части форума.

Большое спасибо,
Рэй

P.S. @davidkingham Дэвид, заглянул в ваше сообщество. Это одно из лучших, что я видел. Респект и спасибо за то, что поделились.

Рэй

3 лайка

Этот плагин, похоже, вызывает сбои в версии 2.6 beta 2. @fzngagan Discourse не позволяет загружать какие-либо темы при его активации, см. ошибки ниже.

Сообщение (204 копии)

ArgumentError (неверное количество аргументов (передано 1, ожидалось 0))
lib/topic_view.rb:59:in `initialize'
app/controllers/topics_controller.rb:81:in `new'
app/controllers/topics_controller.rb:81:in `show'
app/controllers/application_controller.rb:340:in `block in with_resolved_locale'
app/controllers/application_controller.rb:340:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:334:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'

Трассировка

plugins/discourse-category-lockdown/plugin.rb:41:in `check_and_raise_exceptions'
lib/topic_view.rb:59:in `initialize'
app/controllers/topics_controller.rb:81:in `new'
app/controllers/topics_controller.rb:81:in `show'
actionpack (6.0.3.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.0.3.2) lib/abstract_controller/base.rb:195:in `process_action'
actionpack (6.0.3.2) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.0.3.2) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.0.3.2) lib/active_support/callbacks.rb:112:in `block in run_callbacks'
app/controllers/application_controller.rb:340:in `block in with_resolved_locale'

Env
1 лайк

Это тоже было в моем списке вопросов, которые нужно было разобраться. Похоже, что это было сломано этим изменением (4 дня назад)

5 лайков

Спасибо @RGJ за указание на причину. Я сделаю это приоритетом и займусь этим утром.

4 лайка

@davidkingham @RGJ, @dylanb
Только что выложил исправление. Пожалуйста, обновитесь и подтвердите.

5 лайков

@fzngagan Похоже, всё работает как надо. Спасибо за быстрое исправление.

4 лайка

Хотя плагин сейчас не вызывает сбоев, он больше не работает на ветке tests-passed.

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

Я только что проверил это: плагин работал на версии 2.5, но после перехода на tests-passed он перестал функционировать.

Редакция: похоже, это проблема мультисайта. Функция check_and_raise_exceptions добавляется только при включении плагина на главном сайте мультисайта. Кроме того, после включения плагина необходимо перезапустить Discourse.

3 лайка

У меня есть вопрос и просьба.

Вопрос: насколько сложно было бы разрешить поисковым роботам видеть контент? Я не могу найти способ определить, сделан ли запрос роботом (или строку user agent) изнутри шлюза для анонимных пользователей. Есть ли у кого-нибудь какие-либо подсказки? Я с радостью создам PR, если бы только знал, как получить доступ к этой информации.

Просьба: @fzngagan, не могли бы вы посмотреть на проблему с мультисайтом, которая недавно возникла? Я мог бы создать PR, хотя это было бы тривиальное изменение.

2 лайка

Если вы отключите JavaScript в вашем браузере, вы сможете увидеть макет для краулеров (следовательно, ваши пользователи тоже смогут ;)).
Я создал ветку POC под названием crawl, которую вы можете протестировать и доработать. Если всё сработает, мы добавим эту функцию за настройку сайта, которая по умолчанию будет выключена.

Примечание: я не тестировал эту ветку, но готов помочь :slight_smile:

Я с радостью приму PR здесь. Пока не очень знаком с функционалом мультисайта :slight_smile:

2 лайка

Я отправил pull request.

1 лайк

Обновился до версии 2.6.0.beta5 Discourse, и, похоже, возникла ещё одна проблема с этим плагином. Есть какие-то идеи, @fzngagan?

Когда я пытаюсь перейти в «закрытую категорию» как неавторизованный пользователь, у меня просто крутится индикатор загрузки (и перенаправление не происходит). Похоже, что в URL также добавляется фраза «У вас нет прав для просмотра запрошенного ресурса».

Вот примеры тем:

1 лайк

У кого-нибудь есть идеи по этому поводу?

1 лайк

@dylanb
Да, я понимаю, что это не работает уже какое-то время, и это требует рефакторинга. Скорее всего, я займусь этим в конце этой недели.

2 лайка

Отлично, спасибо!

1 лайк

@dylanb
Вот мой PR с исправлением. Перед слиянием я попросил @RGJ провести ревью.

4 лайка

Отлично — можешь написать здесь, когда это будет слито?

1 лайк