2012-06-30 4 views
1

Smarty를 사용하고 있습니다. 3.18include 함수를 다른 사용자 정의 함수에서 사용하는 방법은 무엇입니까?

tpl 파일을 여러 번 호출해도 페이지에 한 번만 포함하고 싶습니다. 새로운 맞춤 함수를 작성하지 않고 Smarty로 그 일을 할 수 있다는 것을 알고 있습니다. . 그래서 나는 이것을 위해 새로운 커스텀 include 함수를 작성하려고 생각한다.

사용자 정의 include 함수에서 smarty의 include 기능을 사용할 수 있습니까?

주어진 템플릿을 컴파일하기 위해 내 custom include 함수에 smarty include 함수를 사용하고 싶습니다. 어떻게해야합니까?

나는 다음과 같이 사용할

:

{include_js file="script.users.tpl"} 
+0

어쩌면 나는 다만 당신의 질문을 이해하지 못한다. 그러나 템플릿은 단지 '한번 포함'하는 것이 아니다. 이는 데이터를 표현하기위한 청사진 일뿐입니다. 그런 다음 데이터를 데이터에 적용합니다. 그래서 나는 템플릿 파일을 포함하여 당신이 의미하는 바를 얻지 못했습니다 ... – Quasdunk

+0

죄송합니다. 영어가 거의 모릅니다. 그래서 내가 원하는 것을 정확하게 설명하지 않았습니다. include_js 함수에서 템플릿을 컴파일 할 수 있다면 include_js 함수에 주어진 것입니다. 매개 변수로, 전에 템플릿이로드되었는지 확인하고 템플릿이로드 된 경우 템플릿을 다시 포함하지 않을 것입니다. 이해 해주시겠습니까? –

+1

당신이 지금 무슨 뜻인지 알 것 같아요 : 당신은'include_js ($ template_name)'함수에 template-name을 전달하기를 원합니다. 함수 내에서이 템플릿이 이전에 렌더링되었는지 확인하고 싶다면 그렇지 않으면 지금 렌더링하십시오 . 음, 그래, 꽤 가능하지만, 코딩 언어를 아는 것이나 코드를 보는 것이 도움이 될 것입니다 ... 패턴은 아주 간단합니다 : ($ tmpl_1 = $ smarty-> fetch (...);'PHP에서) 그리고 나서'include_js()'안에서 변수가 설정되었는지 아닌지를 체크하면된다. 나는 이것이 당신의 질문에 어떻게 든 응답하기를 바랍니다. – Quasdunk

답변

0

당신이 PHP를 사용하고 있습니까? 그렇다면 다음을 시도하십시오 :
Smarty에 있더라도, include_once ("/ dir/filename"); 기능.

사용 smarty_bc 또는 smarty2 :

{some_smarty.tpl}

<html> 
    <p>ex paragraph one</p> 
    <p>ex paragraph two</p> 
    {php} include_once("script.users.tpl"); {/php} 
</html> 

당신이 파일을 한 번만 삽입되는 PHP 모니터를 가진 신뢰할 수있는이 방법.

+0

PHP는 tpl 파일에서 직접 사용할 수 없으므로 멋진 함수를 작성하고 함수 내에서 지정된 경로를 검사하고 있습니다. .tpl 파일이 포함되어 있지 않으면 html로 푸시 렌더링됩니다. 나는 이것이 최선의 방법이라고 생각합니다. '{include_once file = "user_scripts.tpl"} ' –

+0

죄송합니다. 귀하의 의견을 반영하도록 답변을 업데이트했습니다. 그것이 당신을 위해 작동하지 않는다면, 그것이 호출되었는지 아닌지를 추적하고 그것이 이미 사용 되었다면 빈 값을 반환하는 정적 클래스가 필요할 수도 있습니다. – RightHandedMonkey

+0

고마워요. @ RightHandedMonkey. 정적 클래스를 사용하여 적용 할 수 있지만 더 좋은 방법을 사용하여 멋진 함수를 생각합니다. –

관련 문제