Баннер приветственной ссылки

Я провожу некоторые тесты (уже несколько месяцев… не спрашивайте).

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

Есть ли способ сделать так, чтобы панель отображалась для всех — независимо от статуса авторизации?

Спасибо,

Мартин

1 лайк

Я немного протестировал это и не вижу такой проблемы. Возможно, вы закрыли баннер, нажав на x в углу? Если это так, вам нужно очистить localStorage вашего браузера, чтобы увидеть его снова.

3 лайка

Хорошая идея — посмотрю.
Спасибо.

Пытался очистить локальное хранилище — пытался очистить данные браузера — пробовал в Edge (мне, похоже, придется неделями «отмываться»!) … но все равно ничего не получилось :frowning:

Как вы настроили параметры «max trust level» и «hide for staff»?
Пробовали ли вы создать нового пользователя для тестирования?

3 лайка

Я хотел бы сделать разные баннеры видимыми для зарегистрированных и незарегистрированных пользователей, или, возможно, не все ссылки в баннере должны быть видны незарегистрированным пользователям. Возможно ли это?

1 лайк

@Aurora

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

Затем с помощью CSS скрыть одну или другую группу.
Можно использовать CSS-класс anon.

Например, предположим, что у вас есть две ссылки для авторизованных пользователей и три для неавторизованных:

  • ссылка для авторизованных 1
  • ссылка для авторизованных 2
  • ссылка для неавторизованных 1
  • ссылка для неавторизованных 2
  • ссылка для неавторизованных 3

В CSS это можно реализовать так:

/* Для неавторизованных пользователей: скрывает первые две ссылки */
html.anon .featured-banner-link > div:nth-child(-n+2) {
    display: none !important;
}

/* Для авторизованных пользователей: скрывает последние три ссылки */
html:not(.anon) .featured-banner-link > div:nth-last-child(-n+3) {
    display: none !important;
}

Подойдёт ли вам такой вариант?

5 лайков

Да! Большое спасибо! Это действительно полезно!

3 лайка

В области ссылок, в поле иконки, разве нельзя сделать автозаполнение, чтобы было проще найти нужную иконку?

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

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

РЕДАКТИРОВАНИЕ: Я использовал название с их сайта, но иконки не добавляются:

Например, этот:

image

который, кажется, бесплатный:

Так какие же из них нам следует использовать?

Я также заметил проблему с кратким описанием здесь, в этой теме. В нём сказано: «Welcome Link Banner — это простой баннер, который позволяет добавлять пользовательский текст и от 1 до 4 ссылок», но на самом деле я могу добавить больше ссылок. Я смог добавить 6 (и если продолжать нажимать, ссылки добавляются дальше).

Если целью действительно является ограничение в 4 ссылки, то, по моему мнению, было бы лучше, если бы после добавления четвёртой ссылки кнопка «+ banner link» исчезала или становилась неактивной (серой).

1 лайк

Я согласен, что это было бы удобно. Однако это не специфично для данного TC. Некоторые типы ввода недоступны в TC по сравнению с ядром/плагинами.

Я посмотрю, могу ли я создать PR для улучшения описания.

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

В этом, скорее всего, и заключается ваша проблема.

Да, вы можете добавить столько, сколько захотите. Ограничений нет.
Это подразумевает, что система оптимизирована для работы с 1–4 ссылками.

2 лайка

Спасибо.

О, я не знал, что не загружаются все доступные иконки. Я думал, что они подгружаются напрямую с сайта FA. Я добавил иконку, которая не отображалась, и теперь она видна. Большое спасибо.
Как я могу узнать, какие иконки доступны? Есть ли список, или нужно добавлять, проверять, отображается ли она, и если нет — добавлять другую?

Понятно. Тогда, вероятно, проблема в формулировке. Может быть, что-то вроде:
Welcome Link Banner — это простой баннер, позволяющий добавлять пользовательский текст и ссылки (рекомендуется: до 4 ссылок). или что-то в этом роде.

Большое спасибо за вашу помощь. Рад, что иконки теперь видны! :slight_smile:

2 лайка

Да, это самый простой способ.

2 лайка

Обновление темы «Welcome Link Banner» вызвало ошибку компиляции SCSS и сбой сайта

Здравствуйте,

Недавно я столкнулся с критической проблемой при обновлении темы “Welcome Link Banner” на моём форуме Discourse.

:stop_sign: Краткое описание проблемы:

  • После обновления темы сайт сразу же перестал работать.
  • Безопасный режим (/safe-mode) также был недоступен.
  • В логах была зафиксирована следующая ошибка:
CssSyntaxError: Missed semicolon in common.scss (MiniRacer::RuntimeError)
  • Эта ошибка SCSS помешала Discourse скомпилировать ресурсы, что привело к полному сбою фронтенда.

:magnifying_glass_tilted_left: Коренная причина:

  • В обновлённом файле common.scss внутри темы «Welcome Link Banner» была ошибка синтаксиса (отсутствовала точка с запятой ;).
  • В результате сбилась компиляция ресурсов, и Discourse не смог даже отобразить базовый интерфейс.

:hammer_and_wrench: Как я решил проблему:

Поскольку доступ к веб-интерфейсу был невозможен (даже в безопасном режиме), мне пришлось исправить всё вручную:

  1. Подключиться к серверу по SSH.

  2. Войти в контейнер приложения:

    ./launcher enter app
    
  3. Открыть консоль Rails:

    RAILS_ENV=production rails c
    
  4. Отключить проблемную тему:

    Theme.where(name: "Welcome Link Banner").update_all(enabled: false)
    
  5. Выйти из консоли Rails.

  6. Очистить все скомпилированные ресурсы:

    RAILS_ENV=production rake assets:clobber
    
  7. Пересобрать приложение:

    ./launcher rebuild app
    

После выполнения этих шагов форум снова стал доступен.


:light_bulb: Предложение:

  • Возможно, стоит добавить дополнительную проверку синтаксиса SCSS при загрузке или обновлении темы, до её применения на рабочих сайтах.
  • Это могло бы помочь избежать полных сбоев сайта из-за мелких ошибок в CSS.
1 лайк

Это странно. В CSS для этого компонента нет пропущенной точки с запятой.
В истории изменений тоже ничего не видно. :thinking:

Кстати, если /safe-mode не работает, попробуйте добавить прямо в URL ?safe_mode=no_themes.

3 лайка

Хм, я тоже проверил и не вижу этой проблемы. Компонент был кастомизирован? Или, возможно, что-то пошло не так в процессе обновления?

1 лайк

Может конфликтовать с другим компонентом, который я разрабатываю

2 лайка

1 - Я закрыл баннер, но хочу протестировать несколько вещей, поэтому мне нужно вернуть его. Как это сделать?
2 - Я заметил, что по крайней мере на мобильном устройстве, когда я нахожусь на странице каналов, баннер полностью нарушает всю структуру:

3 - Можно ли исключить баннер с определённых страниц, не используя CSS? Я знаю, что есть выпадающее меню с опциями homepage,discovery,all, но это слишком ограничительно.

Думаю, очистка кэша может помочь, так как он хранится в localStorage:

Я сделал это:

но это не помогло. Я использую Cloudflare и у меня уже были проблемы с их кэшем. Стоит ли подождать немного дольше, или, раз речь о localStorage, это не связано?

Я не эксперт в этом, просто предполагаю…

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

Обновление: Я попросил ChatGPT помочь мне на основе вашего ответа, и вот что получилось:

Очистка кэша браузера не влияет на localStorage, где хранится состояние скрытия. Вам нужно вручную удалить этот элемент из localStorage.

Сделайте следующее:

  1. Откройте сайт Discourse.

  2. Нажмите F12 или щелкните правой кнопкой мыши → Просмотреть код (Inspect), чтобы открыть инструменты разработчика.

  3. Перейдите на вкладку Console (Консоль).

  4. Вставьте этот код и нажмите Enter:

    localStorage.removeItem("discourse_dismissedWelcomeLinkBanner");
    
  5. Обновите страницу.

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


Затем я спросил, можно ли сделать это вручную, и да, можно: перейдите на вкладку Application (Приложение), затем в боковом меню выберите Storage > Local Storage и удалите запись:

image


Спасибо, что указали мне верное направление!

Теперь мой вопрос: если на рабочем столе я делаю это так, как можно сделать то же самое на мобильном устройстве? ChatGPT сказал, что я могу добавить это в адресную строку и «запустить», но это не помогло:

javascript:localStorage.removeItem("discourse_dismissedWelcomeLinkBanner");

РЕДАКТИРОВАНИЕ: сработало! Я делал это неправильно. ChatGPT теперь ясно объяснил, что нужно открыть форум, а затем в той же вкладке выполнить javascript:localStorage.removeItem("discourse_dismissedWelcomeLinkBanner");, а не в новой вкладке, как я делал ранее.

Еще раз спасибо за ваш ответ, он действительно помог сузить круг поиска. :raising_hands:

1 лайк