Joomla - Самый эффективный способ заставить внешние ссылки без http: // быть внешними

0

Друзья,

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

// Explanation:

Как многие из вас знают, при написании ссылок в Joomla, таких как:

<a href="google.com">Google</a>

или

<a href="<?=JRoute::_('google.com')?>">Google</a>

Он добавляет href к текущему URL сайта.

Например, если мой сайт был http://www.stackoverflow.com/questions/ask

И я нажал на ссылку выше, это приведет меня к http://www.stackoverflow.com/questions/ask/google.com.

... в отличие от того, что казалось бы естественным, просто забрав меня на google.com

// End Explanation

Конечно, я знаю, что preending http://для href решает эту проблему. Однако для контента, представленного пользователем, это означает, что вы используете метод на основе строк для проверки ссылок на пользователя, чтобы убедиться, что http://(или https и т.д.) Является тем, что запускает URL-адрес, а если нет, добавьте его.

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

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

Спасибо, Stackfriends.

Теги:
joomla

2 ответа

1

Этот код будет применять http://для $unknownlink без схемы (протокола):

$link = JUri::getInstance($unknownlink);
if (!$link->getScheme()) $link->setScheme('http');
echo JHtml::link($link, $link, ['target' => '_blank']);

работает в J3.4, не уверен в старых версиях

1

Это не поведение "Joomla", так как URL-адрес должен быть разрешен, как определено стандартом. Речь идет о том, как браузеры и т.д. Должны обрабатывать относительный или абсолютный URL.

Изменение этого поведения - это ИМО, которое может привести к горю.

URL-адрес представляет собой строку, которая представляет собой идентификатор.

URL-адрес - это относительный URL-адрес или абсолютный URL-адрес. Любая форма может сопровождаться фрагментом.

Относительный URL - это URL без схемы. Относительный URL-адрес должен относиться к базовому URL-адресу.

Абсолютный URL - это URL-адрес со схемой.

Базовый URL - это абсолютный URL-адрес с относительной схемой.

Вы можете прочитать больше об этом на http://url.spec.whatwg.org/#urls

Ещё вопросы

Сообщество Overcoder
Наверх
Меню