Как добавить протокол в filter_protocols
В 8ке - любую ссылку не соорудить.
Например, если нужно добавить ссылку на чатик телеграм (или viber, или watsup, или любой другой с нестандартным протоколом):
<a href="tg://join?invite=invite_link">Join Group</a>
<a href="viber://add?number=phone_number">
<a href="whatsapp://send?text=message">
Такие ссылки Drupal нам сделать не даст.
Все дело в том, что производится дополнительная проверка протоколов, и допускаются только те что в "белом списке".
Дефолтный список находится в /core/core.services.yml, секция parameters, свойство filter_protocols.
Вот все что "из коробки":
- http
- https
- ftp
- news
- nntp
- tel
- telnet
- mailto
- irc
- ssh
- sftp
- webcal
- rtsp
В принципе, не плохо, но нам не хватит )))
Внести дополнительные протоколы можно 2мя способами:
1. Внести нужные значения в дефолтные сервисы (файл файл должен находится в /sites/default/services.yml, или его мультисайтовые аналоги). Если у Вас еще нет такого файла - скопируйте файл /sites/default/default.services.yml.
2. И второй вариант - программно подправить список фильтров:
// Получаем список доступных протоколов
$allowedProtocols = UrlHelper::getAllowedProtocols();
// Проверяем его, и если нужного нет ..
if (!in_array($settingType, $allowedProtocols)) {
// .. добавляем
$allowedProtocols[] = $settingType;
UrlHelper::setAllowedProtocols($allowedProtocols);
}
ЗЫ - не забываем заюзать UrlHelper:
use Drupal\Component\Utility\UrlHelper;
Вот так, не хитро, можно добавить нужный фильтр протоколов в Drupal 8+.
Успехов!
Делитесь полезными материалами в социальных сетях.