2013-08-17 4 views
1

Мне нужно использовать PHP file_get_contents() в файле smarty tpl. Я не могу использовать его в PHP и назначить его шаблону smarty. Поскольку URL-адрес генерируется динамически через цикл внутри файла шаблона smarty. Поэтому я использую функцию smarty plugin для достижения этой задачи. Но я хочу знать, есть ли способ, которым я могу использовать его в файле шаблона напрямую, вместо того, чтобы разбирать его из файла плагина.замена php file_get_contents в шаблоне smarty?

Я приложил код плагина, который я использую для достижения этой функции. Пожалуйста, дайте мне знать, как использовать его непосредственно в файле smarty tpl.

function smarty_function_getTitle($params) 
{ 
if ($params['id']) { 
    $content = file_get_contents("http://youtube.com/get_video_info?video_id=".$params['id']); 
    parse_str($content, $ytarr); 
    return $ytarr['title']; 
} 
} 

Я использовал ниже код для вызова его в Smarty шаблон:

{getTitle id=$videoId} 

Предложения приветствуются!

+0

Почему бы вам не сделать это? Точка Smarty - это отделить ваш код шаблона от вашего кода PHP. Плагины Smarty существуют специально для того, чтобы делать то, что вы вставили выше. Это красота движка шаблонов. – verv

+0

Я знаю. Но мой босс отказывается использовать файлы плагинов. Он хочет, чтобы я делал все в файле tpl. Это действительно сумасшествие, чтобы быть кодером. – vignesh

+1

Eek. Я знаю, что вам не нужно это слышать от меня, но если ваш босс не является разработчиком, ему негде сказать, как кодировать. Если он разработчик ... Он либо не знает, как работает Смарти ... Или он не очень хороший, я посмотрю, смогу ли я подумать о том, как это сделать в шаблоне. – verv

ответ

3

Для тех из вас, кто читал, что не читал комментарии выше, я и ОП оба знают, что это не то, как вы используете механизм шаблонов. У него, похоже, есть причины, по которым он хочет сделать это прямо в шаблоне, а не в плагине или раньше времени в своем коде. Так что не смей меня, чтобы продемонстрировать, как, пожалуйста :)

Вот как вы можете это сделать в Smarty.

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

+0

Спасибо большое! Я у тебя в долгу! – vignesh