Категория:
Опубликовано:

Как добавить протокол в 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+.

Успехов!

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