2016-10-15 9 views
0

У меня есть страница блога на моем веб-сайте, в которой для создания сообщений используется Smarty, и я хочу добавить к ним кнопку общего доступа WhatsApp. Я уже искал на весь интернет, и я нашел это:

{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI} 

Я пытаюсь использовать это прямо сейчас в моем blog.tpl файле:

<a class="whatsapp" href="whatsapp://send?text={$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}">Compartilhar</a> 

Что случилось с моим кодом, и как я могу это исправить?

+0

что конкретная ошибка/проблема вы столкнулись? –

ответ

0

Ваш код не работает из-за нескольких причин:

  • Очевидным является то, что сообщение, которое вы генерировать не является URL. Он читает что-то вроде: stackoverflow/questions/40062450/.... URL начинается с протокола (обычно http://). Текст, который вы должны отправить:

    http://{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI} 
    
  • URL (как один порожденный выше кодом) содержит специальные символы, которые должны быть закодированы, когда он используется в качестве аргумента в другой URL (F.E. &). Неправильное кодирование &, когда вы хотите использовать его в качестве параметра в URL-адресе, приводит к генерации другого URL-адреса, чем вы думаете. Для этой цели Smarty предоставляет переменный модификатор escape.

  • Вы создаете HTML и, поскольку некоторые символы также являются специальными в HTML, вы должны их правильно кодировать, иначе созданный HTML может быть недействительным, и браузер может подумать, что URL-адрес заканчивается раньше, чем вы планируете. Модификатор escape также поможет вам здесь.

Собираем все вместе, лучший способ заключается в создании URL в отдельном Smarty variable затем записать его в href атрибута:

{!-- 
    * Generate the URL we want to send using WhatsApp 
    * and store it in the $url Smarty variable 
    * There is no encoding here 
    * --} 
{capture assign=url}{strip} 
    http://{$smary.server.HTTP_HOST}{$smarty.server.REQUEST_URI} 
{/strip}{/capture} 

{!-- 
* The URL to invoke the WhatsApp app (and ask it to send $url as message) is: 
*  whatsapp://send?text={$url|escape:url} 
* --} 

{!-- 
* Generate correct HTML that contains the correct whatsapp URL 
* that contains as parameter the URL generated in $url 
* --} 
<a class="whatsapp" href="whatsapp://send?text={$url|escape:url|escape:html}">Compartilhar</a>