Настройте пользовательскую ссылку в боковой панели для открытия в новой вкладке

Возможно ли сделать так, чтобы ссылка на пользовательский раздел открывалась в новой вкладке (_blank)? Многие компоненты темы также предоставляют такую возможность.

3 лайка

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

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

2 лайка

Конечно. Возможно, наш подход просто отличается. Я искренне считаю, что если ссылка внешняя, то гораздо вежливее перенаправлять браузер пользователя на новую вкладку. Это предотвращает прерывание его опыта, который он имеет или имел, находясь на страницах форума.

Наш форум очень активен, не уверен, что пользователю будет удобно, если его отвлекут, полностью покинув сайт, перейдя по ссылке. В данном случае ссылка ведёт на наш канал в Telegram.

В конечном счёте, я не предлагаю, чтобы внешние ссылки открывались по умолчанию в новом окне (_blank). Я предлагаю предоставить администраторам Discourse возможность контролировать, как открываются ссылки из этого конкретного компонента/функции конфигурации.

3 лайка

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

Согласен, ваш прогресс никогда не будет прерван, когда ссылки открываются в новой вкладке.

Я склонен согласиться с этим. Как и в вышеописанном случае с каналом Telegram, очевидно, что будут ситуации, когда переопределение предпочтений пользователя идеально подходит для пользовательских ссылок, созданных администратором. В компонентах тем мы часто используем _blank, поэтому не понимаю, почему эта опция не может быть здесь как часть модального окна конфигурации пользовательской боковой панели (если только это не вопрос места и там просто нет пространства).

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

2 лайка

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

Люди, использующие скринридеры, больше всего страдают от открытия ссылок в новых вкладках, когда они этого не ожидают. Именно поэтому обычно рекомендуется не перехватывать ссылки для открытия в новой вкладке (хотя вы и я предпочитаем именно это).

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

4 лайка

Это действительно важный момент.

5 лайков

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

5 лайков

Как отключить открытие кастомной ссылки на сайт-партнёр из боковой панели в новой вкладке? Поскольку на другом сайте тоже есть ссылка для возврата в Discourse. В настоящее время это приводит к появлению множества лишних вкладок.

Предпочтительнее, чтобы эта внешняя ссылка открывалась в _self.

Спасибо.

1 лайк

Обычно все ссылки должны открываться в том же окне (_self). Пользователь указывает, когда и какие именно ссылки должны открываться в новой вкладке или окне.

1 лайк

В разделе администратора — настройки убедитесь, что следующее отключено:

Обратите внимание, что авторизованные пользователи могут переопределять настройки администратора в своих настройках пользователя на вкладке «Интерфейс»:

2 лайка

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

2 лайка

Хм, возможно. Они хотят переопределить настройки пользователя? Это единственные настройки, которые мне известны и которые влияют на ссылки в отдельных вкладках/окнах.

1 лайк

Да, я не хочу отключать target _blank глобально для внешних сайтов. Просто хочу отключить это для одного элемента меню.

Спасибо за объяснение.

2 лайка

Custom Header Links позволяет выбрать целевую страницу для добавляемых ссылок. Возможно, это поможет.

https://github.com/discourse/discourse-custom-header-links/blob/main/javascripts/discourse/components/custom-header-links.hbs#L18

3 лайка

Спасибо. Так что использовать это для боковой панели?

1 лайк

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

Кажется, что в боковой панели всё ещё нет мест для плагинов (!?), поэтому, возможно, потребуется изобретательный JavaScript, чтобы найти элемент, который вы хотите изменить. Что-то вроде этого, возможно.

3 лайка

Это сделано намеренно; в идеале боковую панель следует расширять с помощью API. Это помогает нам поддерживать любые пользовательские ссылки или разделы, добавленные сюда.

В настоящее время, похоже, поведение открытия внешних ссылок зависит целиком от настройки пользователя external_links_in_new_tab — то есть даже при наличии пользовательского раздела или ссылки, добавленных через API, нет способа изменить цель для конкретной ссылки. Добавить такую возможность технически возможно, однако исторически мы склонны уважать предпочтения пользователя относительно того, как открываются ссылки.

4 лайка

Это всё объясняет. Кажется, я пропустил это сообщение. Но, посмотрев чуть внимательнее, я вижу addSidebarPanel и addSidebarSection в plugin-api.js, однако только последний приводит к посту, и это далеко не руководство how-to. Но есть вот это:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/lib/plugin-api.js#L2306-2310

4 лайка