2013-08-17 2 views
1

smarty tpl 파일에 PHP file_get_contents()을 사용해야합니다. 나는 PHP에서 그것을 사용할 수 없으며 현명한 템플릿에 할당 할 수 없다. URL은 똑똑한 템플릿 파일 내부의 루프를 통해 동적으로 생성되기 때문에. 그래서 smarty 플러그인 함수를 사용하여 해당 작업을 수행하고 있습니다. 하지만 필자가 플러그인 파일에서 직접 파싱하는 대신 템플릿 파일에서 직접 사용할 수있는 방법이 있는지 알고 싶습니다.멋진 템플릿에서 PHP file_get_contents를 대체 하시겠습니까?

이 기능을 사용하기 위해 사용하고있는 플러그인 코드를 첨부했습니다. 누구든지 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']; 
} 
} 

나는 유식 템플릿을 호출하는 코드 아래 사용했습니다 :

{getTitle id=$videoId} 

제안을 환영합니다!

+0

왜 템플릿에서이 작업을 수행 하시겠습니까? Smarty의 요점은 PHP 코드에서 템플릿 코드를 분리하는 것입니다. Smarty 플러그인은 위에 붙여 넣은 것을 수행하기 위해 특별히 존재합니다. 그것은 템플릿 엔진의 아름다움입니다. – verv

+0

알아. 하지만 내 상사는 플러그인 파일 사용을 거부합니다. 그는 내가 tpl 파일에서 모든 것을하기를 원한다. 코더가되는 것은 정말 미친 짓입니다. – vignesh

+1

Eek. 나는 당신이 내게서 그것을들을 필요가 없다는 것을 알고 있지만, 당신의 상사가 개발자가 아니라면, 그는 당신에게 코딩하는 법을 말하는 곳이 없다. 만약 그가 개발자라면 ... 그는 멋쟁이가 어떻게 작동하는지 알지 못합니다. 아니면 아주 좋은 사람이 아닙니다. P 템플릿을 어떻게 만드는지 생각해 볼 수 있습니다. – verv

답변

3

위의 설명을 읽지 않은 독자는 나 자신과 OP 모두이 방법이 템플릿 엔진을 사용하지 않는다는 것을 알고 있습니다. 그는 자신의 코드에서 플러그인이나 미리보다는 템플릿에서 직접이 작업을 수행하려는 이유가있는 것 같습니다. 그럼, 어떻게 슬퍼하지 말아주세요 :)

다음은 Smarty에서의 작업 방법입니다.

{"http://youtube.com/get_video_info?video_id=`$videoId`"|file_get_contents|parse_str:$result} 
{$result.title} 

첫 번째 부분을 모두 한 번 호출했지만 두 번째 부분을주의해서 여러 번 호출 할 수 있습니다. 그러나 나는 이것을 로컬에서 테스트했는데 정상적으로 작동했다.

+0

고마워요! 너를 빚 졌어! – vignesh

관련 문제