1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Решение проблем

Формирование во views кликабельной ссылки на телефон, Viber, WhatsApp, Skype, Telegram

Главные вкладки

Уважаемые коллеги, есть тип материала где пользователь вводит отдельные в текстовые поля для ввода номера телефона, WhatsApp, Viber, Telegram, Skype и для теста добавлен вывод всех нужных ссылок в содержание (скрин 1):

<ul><li><a href="tel:79261234567">+79261234567</a></li>
<li><a href="https://api.whatsapp.com/send?phone=79261234567" >WhatsApp</a></li>
<li><a href="viber://chat?number=79261234567">Viber</a></li>
<li><a href="tg://resolve?domain=79261234567">Telegram</a></li>
<li><a href="skype:nicskype?chat">Skype</a></li></ul>

Я пытаюсь на основании данных веденных пользователем сформировать во views следующие ссылки (скрин 2,3):

<ul><li><a href="tel:[field_phone]">+[field_phone]</a></li>
<li><a href="https://api.whatsapp.com/send?phone=[field_whatsapp]" >WhatsApp</a></li>
<li><a href="viber://chat?number=[field_viber]">Viber</a></li>
<li><a href="tg://resolve?domain=[field_telegram]">Telegram</a></li>
<li><a href="skype:[field_skype]?chat">Skype</a></li></ul>

Но т.к. Views обрезает html то ссылки на вайбер, скайп и телеграмм оказываются не рабочие (скрин 4)

<span>Пользовательский текст: </span>
<span>
<ul><li><a href="tel:79261234567">+79261234567</a></li>
<li><a href="https://api.whatsapp.com/send?phone=79261234567" >WhatsApp</a></li>
<li><a href="//chat?number=79261234567">Viber</a></li>
<li><a href="//resolve?domain=79261234567">Telegram</a></li>
<li><a href="nicskype?chat">Skype</a></li></ul>
</span>

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

Как можно реализовать желаемую функциональность?

ВложениеРазмер
Иконка изображения 1._stranica_s_kontaktami.png 11.32 КБ
Иконка изображения 2._nastroyka_views.png 7.85 КБ
Иконка изображения 3._nastroyki_polzovatelskogo_teksta.png 17.52 КБ
Иконка изображения 4._rezultat_formirovaniya_sylok_vo_views.png 13.11 КБ

Лучший ответ

Аватар пользователя Tinnka Tinnka 7 мая 2018 в 22:31
1

А хорошая мысля приходит опосля Smile Не давало мне покоя использование Views PHP для такого пустяка как настройки, вообщем самый простой пусть оказался самым очевидным.

Для формирования кликабельной ссылки на телефон, в материале создано текстовое поле в котором нужно вводить полный номер телефона вместе с кодом но без символа "+", а во Views в настройках поля включила "перезаписать и там указала:
<a href="tel:[field_phone]">+[field_phone]</a>

Для email:
<a href="mailto:[field_email]">[field_email]</a>

По аналогии добавлены текстовые поля для ввода WhatsApp, Viber, Skype и Telegram (причем с Skype и Telegram можно вводить как номер (без "+") там и NickName).

Для формирования ссылок на мессенджеры для каждого из них добавлены и скрыты текстовые поля с пользовательским текстом:

Глобальный: Пользовательский текст (Viber):
viber://chat?number=
Содержимое: Viber (Viber):
<a href="[nothing][field_viber]">+[field_viber]</a>

Глобальный: Пользовательский текст (WhatsApp):
https://api.whatsapp.com/send?phone=
Содержимое: WhatsApp (WhatsApp):
<a href="[nothing_1][field_whatsapp]">+[field_whatsapp]</a>

Глобальный: Пользовательский текст (Skype):
skype:
Содержимое: Skype (Skype):
<a href="[nothing_2][field_skype]?chat ">[field_skype]</a>

Глобальный: Пользовательский текст (Telegram):
https://t.me/
Содержимое: Telegram (Telegram):
<a href="[nothing_3][field_telegram]">[field_telegram]</a>

Наслаждайтесь Smile

Комментарии

Аватар пользователя gun_dose gun_dose 5 марта 2018 в 0:08

Semantics wrote:

Проблемы вывести ссылку нет и быть не может.

С нестандартными протоколами проблема вполне может быть, и в данном случае есть.
Я бы такую штуку делал через double field + кастомный форматтер. Хотя, стоило бы ещё попробовать через стандартный модуль link

Аватар пользователя Tinnka Tinnka 5 марта 2018 в 15:00

Я бы такую штуку делал через double field + кастомный форматтер. Хотя, стоило бы ещё попробовать через стандартный модуль link

Через линк пробовала, тоже самое.
А можно подробней про решение с double field + кастомный форматтер?

Аватар пользователя Tinnka Tinnka 5 марта 2018 в 21:18

gun_dose wrote:

Я бы такую штуку делал через double field + кастомный форматтер. Хотя, стоило бы ещё попробовать через

Установила double field (список выбора и текстовое поле), подскажите пожалуйста как с помощью Custom formatters сформировать нужные мне ссылки?

Аватар пользователя gun_dose gun_dose 5 марта 2018 в 21:49
1

Суть в том, что в одну половинку поля надо записать урл, а в другую текст ссылки. Т.е. обе половинки - текстовые поля. Модуль Custom Formatters тут не нужен (наверное). И в принципе, можно вытащить поле через views и переопределить шаблон конкретно этого поля наподобие

<?php
<a href="<?php print $field['first']; ?>"><?php print $field['second']; ?></a>
?>

Названия переменных взяты условно, т.к. надо смотреть по ситуации.

Аватар пользователя Tinnka Tinnka 8 марта 2018 в 21:56

Задача в результате была решена с помощью Views PHP следующим образом:
1. В материал были добавлены текстовые поля для ввода контактных данных, с возможностью ввести неограниченное количество значений, из формы поля были скрыты.
2. С помощью Views был создан блок для вывода полей и отображен на странице с контактными данными.

Для вывода полей с помощью php с формированием ссылки на лету был использован следующий код (это код для вывода всех номеров телефона через запятую, с убиранием последней запятой).:

<?php
foreach ( $data->field_field_phone as $key =>$value) {
$phone=$data->field_field_phone[$key]['raw']['value'];
$html[] = '<a href="tel:+'.$phone.'">+'.$phone.'</a>'.',';}
echo rtrim (implode (' ', $html), ',');
?>

Я с PHP достаточно на ВЫ, поэтому уверенна эти данные можно вывести более оптимально, но мне не хватило знаний, но работает Smile

На скриншотах запечатлен весь путь и результат. Надеюсь мое решение кому нибудь пригодиться.

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

Конечно я бы предпочла выполнить эту задачу без Views PHP, ну или хотя бы с помощью Double Field чтобы не плодить поля, но моих знаний php не хватило для вытаскивания данных из Double Field.

Любые дельные детальные советы по улучшению будут приняты с удовольствием! Smile

Аватар пользователя Tinnka Tinnka 7 мая 2018 в 22:31
1

А хорошая мысля приходит опосля Smile Не давало мне покоя использование Views PHP для такого пустяка как настройки, вообщем самый простой пусть оказался самым очевидным.

Для формирования кликабельной ссылки на телефон, в материале создано текстовое поле в котором нужно вводить полный номер телефона вместе с кодом но без символа "+", а во Views в настройках поля включила "перезаписать и там указала:
<a href="tel:[field_phone]">+[field_phone]</a>

Для email:
<a href="mailto:[field_email]">[field_email]</a>

По аналогии добавлены текстовые поля для ввода WhatsApp, Viber, Skype и Telegram (причем с Skype и Telegram можно вводить как номер (без "+") там и NickName).

Для формирования ссылок на мессенджеры для каждого из них добавлены и скрыты текстовые поля с пользовательским текстом:

Глобальный: Пользовательский текст (Viber):
viber://chat?number=
Содержимое: Viber (Viber):
<a href="[nothing][field_viber]">+[field_viber]</a>

Глобальный: Пользовательский текст (WhatsApp):
https://api.whatsapp.com/send?phone=
Содержимое: WhatsApp (WhatsApp):
<a href="[nothing_1][field_whatsapp]">+[field_whatsapp]</a>

Глобальный: Пользовательский текст (Skype):
skype:
Содержимое: Skype (Skype):
<a href="[nothing_2][field_skype]?chat ">[field_skype]</a>

Глобальный: Пользовательский текст (Telegram):
https://t.me/
Содержимое: Telegram (Telegram):
<a href="[nothing_3][field_telegram]">[field_telegram]</a>

Наслаждайтесь Smile

Логотип drupal.ru

Содержимое сайта публикуется на условиях CreativeCommons Attribution-ShareAlike 3.0 или более поздней версии. Программные коды в тексте статей — на условиях GNU GPL v2 или более поздней версии.

Документация по совместной работе с репозиторием drupal.ru – https://docs.drupal.ru/code

Drupal – торговая марка Дриса Бёйтарта

12+

AltStyle によって変換されたページ (->オリジナル) /