템플릿 엔진을 처음 접하는 PHP 디자이너들은 Smarty를 들으면 어려울 것입니다. 사실 저자도 예외는 아니며 감히 건드릴 수 없습니다. 하지만 나중에 XOOPS의 프로그램 아키텍처를 분석해 보니 Smarty가 실제로 어렵지 않다는 것을 알게 되었습니다. Smarty의 기본 기술을 익히기만 하면 일반적인 응용 프로그램에는 충분합니다. 물론 기초를 잘 다질 수 있다면 나중에 고급 응용 프로그램에 대해 걱정할 필요가 없습니다. 이 글의 주요 목적은 공식 사용 지침에 완전히 설명되어 있는 Smarty의 사용법을 탐구하는 것이 아닙니다. 저자는 스마티를 이해하고 싶지만 접하지 못하는 친구들이 영감을 얻을 수 있도록 자신이 사용해 본 경험 중 일부만을 적어 놓았다. 이 글의 내용이 그다지 깊이 있지는 않기 때문에 스마티 사용법을 아는 친구들이라면 조금은 간단하다고 느낄 수도 있을 것입니다. 이 글은 이제 세 번째 수정이 되었습니다. 더 많은 정보를 추가하고 싶었지만, 시간의 제약으로 인해 작성자가 스마티의 고급 기술을 많이 연구하지 않았기 때문에 감히 보여드릴 수는 없습니다. 저자 나는 이 글이 Smarty를 배우고 싶어하는 대부분의 초보자들을 만족시킬 수 있을 것이라고 믿습니다. 물론, 이 글에 잘못된 부분이 있다면 알려주시면 감사하겠습니다. 다음 개정판에서는 저자가 이를 바로잡을 것입니다. Smarty 소개 템플릿 엔진이란 언제부터 HTML에 Server Script를 삽입하는 것에 불만을 느끼시는 분들도 계셨는지 모르겠습니다. 그러나 마이크로소프트의 ASP든 오픈소스 PHP든 모두 서버 스크립트가 내장된 웹 서버측 언어다. 그러므로 프로그램 적용 로직(혹은 비즈니스 적용 로직)과 웹 페이지 표현(레이아웃) 로직을 분리할 수 있으면 더 좋겠다는 생각을 하시는 분들도 계시죠? 사실 이 문제는 오랫동안 존재해 왔습니다. 대화형 웹 페이지가 대중화되었을 때 ASP와 PHP를 모두 사용하는 사용자는 프로그램 개발자이자 시각 디자이너였습니다. 그런데 보통 이런 유저들은 프로그래밍을 잘하거나 미술을 잘하는 경우가 있는데, 이 두 가지를 동시에 관리하려 하면 뇌세포가 많이 손실되거든요... 그래서 템플릿 엔진이 탄생하게 된 거죠! 템플릿 엔진의 목적은 위에서 언급한 논리적 분리 기능을 구현하는 것입니다. 이를 통해 프로그램 개발자는 데이터 제어 또는 기능 구현에 집중할 수 있고, 시각적 디자이너는 웹 페이지 레이아웃에 집중할 수 있어 웹 페이지가 더욱 전문적으로 보입니다. 따라서 템플릿 엔진은 회사의 웹사이트 개발팀이 사용하기에 적합하여 모든 사람이 자신의 전문 지식을 활용할 수 있습니다! 작가가 접한 템플릿 엔진은 데이터가 표현되는 방식에 따라 크게 두 가지 유형으로 나뉜다. 프로그램에 의해 처리되어야 하는 템플릿 엔진과 프로그램에 의해 완전히 결정되는 템플릿 엔진이다. 템플릿 자체. 프로그램에서 처리해야 하는 템플릿 엔진에서 프로그램 개발자는 변수의 표시 논리를 책임져야 합니다. 즉, 변수를 템플릿으로 출력하기 전에 변수의 내용을 처리해야 한다는 의미입니다. 과제를 수행하십시오. 즉, 프로그램 개발자는 변수의 모양을 결정하기 위해 더 많은 프로그램을 작성해야 합니다. 템플릿 자체에 의해 완전히 결정되는 템플릿 엔진을 사용하면 변수를 템플릿에 직접 할당할 수 있으므로 비주얼 디자이너가 템플릿을 디자인할 때 변수가 표시되는 방식을 결정할 수 있습니다. 따라서 제어 변수 표시를 용이하게 하기 위해 자체 템플릿 프로그램 구문(예: Smarty)의 또 다른 세트가 있을 수 있습니다. 하지만 이런 식으로 시각 디자이너도 템플릿 언어를 사용하는 방법을 배워야 합니다. 템플릿 엔진의 작동 원리를 먼저 살펴보겠습니다. 일반 템플릿 엔진(예: PHPLib)은 템플릿 객체 생성 시 구문 분석할 템플릿을 얻은 후, 변수를 사용하여 템플릿을 구문 분석하고 마지막으로 웹 페이지를 출력합니다. Smarty 사용자의 경우 프로그램에서 구문 분석 작업을 수행할 필요가 없으며 Smarty가 자동으로 수행합니다. 또한, 컴파일된 웹페이지의 템플릿이 변경되지 않은 경우 Smarty는 자동으로 컴파일 작업을 건너뛰고 컴파일된 웹페이지를 직접 실행하여 컴파일 시간을 절약합니다. Smarty의 일부 개념 사용 일반적인 템플릿 엔진에서는 소위 블록이라는 개념을 종종 볼 수 있습니다.
이러한 블록의 대부분은 PHP 프로그램에서 표시 상태를 제어하기 위해 if 또는 for를 사용합니다. 훨씬 간단하지만 템플릿이 다른 표시 방법으로 변경되자마자 PHP 프로그램을 다시 변경해야 합니다! Smarty에서는 모든 것이 변수를 기반으로 하며 모든 프레젠테이션 로직은 템플릿에 의해 제어됩니다. Smarty에는 자체 템플릿 언어가 있으므로 블록을 표시하거나 반복해야 하는지 여부에 관계없이 Smarty의 템플릿 구문(if, foreach, section)과 변수 콘텐츠를 사용하여 표시됩니다. 이렇게 해서 템플릿이 좀 복잡해진 느낌이 들지만, 제대로만 계획하면 PHP 프로그램의 한 줄도 변경할 필요가 없다는 장점이 있습니다. 위의 설명을 통해 Smarty를 사용하려면 한 가지 원칙이 필요하다는 것을 알 수 있습니다. 즉, 프로그램 응용 로직과 웹 페이지 렌더링 로직을 명확하게 분리해야 한다는 것입니다. 즉, PHP 프로그램에는 HTML 코드가 너무 많아서는 안 됩니다. 프로그램에서는 템플릿에 어떤 변수를 삽입할지 결정하고 템플릿이 이러한 변수를 표시하는 방법(또는 전혀 표시하지 않는 방법)을 결정하도록 하면 됩니다. Smarty의 기본 Smarty 설치 먼저 프로그램을 어디에 배치할지 결정합니다. Windows에서는 "d:appservwebdemo"와 유사한 위치가 있을 수 있습니다. Linux에서는 위치가 "/home/jaceju/public_html/"과 유사할 수 있습니다. Smarty 공식 웹사이트(http://smarty.php.net)로 이동하여 최신 Smarty 패키지를 다운로드하세요. Smarty 2.6.0을 잠금 해제하면 libs 폴더를 포함한 많은 파일이 표시됩니다. libs에는 class.php 파일 3개, debug.tpl 1개, 플러그인 폴더 1개, 코어 폴더 1개가 있어야 합니다. 그런 다음 libs를 프로그램의 기본 폴더에 직접 복사한 다음 이름을 class로 바꿉니다. 그게 다야? 좋아요! 이 설치 방법은 비교적 간단하며 일반적으로 자체 호스트가 없는 사용자에게 적합합니다. Smarty 공식 매뉴얼에서 좀 더 복잡한 설치 방법을 소개하는 이유는 무엇인가요? 기본적으로 공식적인 방법에 따라 설치되며, 호스트에 한 번만 설치하면 호스트 아래의 모든 디자이너에게 제공되어 여러 프로그램을 개발할 때 Smarty를 너무 많이 반복 설치하지 않고도 직접 참조할 수 있습니다. 저자가 제시하는 방법은 프로그램을 여기저기로 옮기고 싶은 프로그램 개발자에게 적합하기 때문에 호스트에 스마티가 설치되어 있는지 걱정할 필요가 없다. 프로그램 폴더 설정 작성자가 Windows에 Appserv를 설치한 경우를 예로 들어보겠습니다. 프로그램의 기본 폴더는 "d:appservwebdemo"입니다. Smarty를 설치한 후 기본 폴더 아래에 다음과 같은 폴더를 만듭니다. Linux에서는 template_c의 권한을 777로 변경하는 것을 잊지 마세요. Windows에서는 읽기 전용으로 취소하세요. Smarty로 작성된 첫 번째 작은 프로그램 먼저 Smarty의 경로를 설정합니다. 다음 파일의 이름을 main.php로 지정하고 기본 폴더에 배치하세요. main.php: php include "class/Smarty.class.php"; define(@#__SITE_ROOT@#, @#d:/appserv/web/demo@#) // 끝에 슬래시 없음 $tpl = new Smarty(); $tpl->template_dir = __SITE_ROOT . $tpl->compile_dir = "/templates_c/"; ->config_dir = __SITE_ROOT . $tpl->cache_dir = "/cache/" $tpl-<{@ #; 🎜>$tpl->right_delimiter = @#}>@#; ?> 위와 같이 설정한 목적은 프로그램을 다른 곳에 이식해야 할 경우 __SITE_ROOT만 변경하면 된다는 것입니다. 그것. (이것은 XOOPS 참조용입니다.) Smarty의 템플릿 경로가 설정된 후 프로그램은 이 경로를 따라 모든 템플릿의 상대 위치를 가져옵니다(예에서는 @#d:/appserv/web/demo/templates/). @#). 그런 다음 display() Smarty 메서드를 사용하여 템플릿을 표시합니다. 다음으로 template 폴더 아래에 test.htm을 넣습니다. (확장자는 무엇이든 상관없지만, 비주얼 디자이너가 개발하기 편리해서 주로 .htm을 사용합니다.) templates/test .htm :
$tpl->compile_dir = __SITE_ROOT . "/template_c/"; $tpl->config_dir = __SITE_ROOT . $tpl->cache_dir = "/cache/"; left_delimiter = @#<{@#; $tpl->right_delimiter = @#}>@#; ?> 이 폴더는 프로그램 모듈을 배치하는 데 사용됩니다. 프로그램을 여기저기 던지지 않고 전체적인 구조가 한눈에 알 수 있습니다 상수 정의, 외부 프로그램 로딩, 공유 변수 생성 등 전체 프로그램의 주요 핵심인 main.php에 대해서도 위에서 언급했습니다. 모든 것은 여기에서 시작됩니다. 따라서 모든 후속 모듈에는 이 파일만 포함되어야 합니다. 따라서 프로그램을 계획하는 동안 main.php에 무엇을 배치해야 하는지 신중하게 고려해야 합니다. 각 링크를 명확하게 구분하는 것이 가장 좋습니다. 이전 섹션에서 언급한 Smarty 프로그램의 5단계에서 main.php는 처음 3단계를 먼저 수행하도록 돕고, 후속 모듈 프로그램은 마지막 두 단계만 수행하면 됩니다. 그냥 단계. 변수로 시작 변수 사용 방법 이전 장의 예에서 두 개의 표시 기호 <{ 및 }>를 사용하여 변수를 래핑하는 것을 분명히 볼 수 있습니다. 기본 마킹 기호는 { 및 } 이지만 중국어 코딩과 자바스크립트를 위해 저자는 여전히 XOOPS를 모방하여 마킹 기호를 대체합니다. 변수 이름 짓는 방법은 PHP와 똑같고, 앞에 $글꼴도 붙는다(일반 템플릿 엔진과 다르다). 표시 기호는 PHP의
과 약간 유사하므로(실제로는 이것으로 대체됨) 다음과 같은 템플릿 변수 작성 방법이 가능합니다. 1 . <{$var}> 2. <{ $var }> }> Smarty에서는 변수가 기본적으로 전역이므로 한 번만 지정하면 됩니다. 두 번 이상 지정된 경우 변수 내용은 마지막으로 지정된 내용을 기준으로 합니다. 기본 템플릿에 외부 하위 템플릿을 로드하더라도 하위 템플릿의 동일한 변수도 교체되므로 하위 템플릿에 대해 다른 구문 분석 작업을 수행할 필요가 없습니다. PHP 프로그램에서는 Smarty의 할당을 사용하여 템플릿에 변수를 배치합니다. Assign의 사용법은 공식 매뉴얼에 많이 나와 있는데, 사용법은 앞 절의 예시와 같다. 그러나 블록을 반복할 때 템플릿에 변수를 할당하기 전에 변수를 일부 조작해야 합니다. 이에 대해서는 다음 장에서 설명합니다. 변수 수정 위에서 Smarty 변수의 모양이 템플릿에 의해 결정된다고 언급했으므로 Smarty는 변수 수정을 위한 다양한 기능을 제공합니다. 사용 방법은 다음과 같습니다. <{Variable | 수정된 함수}> <{Variable|수정된 함수: " 필요없음, 함수에 따라 다름)"}> 예제는 다음과 같습니다. <{$var|nl2br}> < ; !-- 변수의 개행 문자를
<{$var|string_format:" d"}> ; 그렇다면 왜 템플릿이 변수의 모양을 스스로 결정하게 합니까? 먼저 아래 HTML을 살펴보세요. 장바구니 결제 화면의 일부입니다.
총액: 21,000위안 일반 템플릿 엔진의 템플릿은 다음과 같이 작성할 수 있습니다. < input name="total" type="hidden" value="{total}" /> 총 금액: {format_total}위안 이 내용은 PHP 프로그램에 작성해야 합니다. < ;?php $total = 21000; $tpl->assault("total", $total); $tpl->ass("format_total", number_format($total)); ?> Smarty 템플릿은 다음과 같이 작성할 수 있습니다. (Smarty 공식 홈페이지에서 number_format 수정 기능을 다운로드하세요.)
총액: <{$total|number_format:""}> 위안 Smarty의 PHP 프로그램에서는 다음과 같이 작성하세요: php $total = 21000; $tpl->ass("total", $total); ?> 따라서 Smarty에서는 변수를 한 번만 지정하고 그대로 두시면 됩니다. 나머지는 템플릿에 따라 결정됩니다. 그게 다입니다. 이것을 이해합니까? 이는 템플릿이 변수가 스스로 어떻게 보일지 결정하도록 하는 이점입니다! 템플릿 내용 제어 블록 복제 Smarty 템플릿에는 foreach와 섹션이라는 두 가지 블록 반복 방법이 있습니다. 프로그램에서 배열의 배열을 포함할 수 있는 배열을 할당해야 합니다.다음 예와 같습니다. 먼저 PHP 프로그램이 어떻게 작성되는지 살펴보겠습니다. test2.php: require "main.php"; array(1 => "사과", 2 => "파인애플", 3 => "바나나", 4 => "구아바") $tpl->ass("array1", $ array1); $array2 = array( array("index1" => "data1-1", "index2" => "data1-2", "index3" => "data1- 3) "), array("index1" => "data2-1", "index2" => "data2-2", "index3" => "data2-3"), 배열( "index1" => "data3-1", "index2" => "data3-2", "index3" => "data3-3"), array("index1" => " data4 -1", "index2" => "data4-2", "index3" => "data4-3"), array("index1" => "data5-1", "index2" = > "data5-2", "index3" => "data5-3")) $tpl->할당("array2", $array2); "test2.htm"); ?> 템플릿은 다음과 같이 작성됩니다. templates/test2.htm: ;meta http-equiv="Content-Type" c/html; charset=big5"> 중복 블록 테스트
< body>
array1을 표시하기 위해 <{foreach item=item1 from=$array1}> foreach}> 섹션을 사용하여 array1 표시 <{section name=sec1 loop=$array1}> <{$array1[sec1]}> 섹션}> foreach를 사용하여 array2 표시 <{foreach item=index2 from=$array2}> <{foreach key=key2 item=item2 from=$index2}> 🎜><{$key2}>: <{$item2}> <{/foreach}> <{/foreach}> 배열1 표시 🎜><{섹션 이름=sec2 루프=$array2}> index1: <{$array2[sec2].index1}> index2: <{$array2[sec2]. > index3: <{$array2[sec2].index3}> <{/section}>
위 예제를 실행해본 결과 foreach든 section이든 두 실행 결과가 동일한 것을 확인했습니다. 그렇다면 둘 사이의 차이점은 무엇입니까? 첫 번째 차이점은 명백합니다. 즉, foreach는 중첩된 처리 방법을 사용하여 우리가 할당한 2단계 배열 변수를 표시하는 반면 섹션은 "기본 배열 [루프 이름]. 하위 배열 인덱스"를 사용하여 전체 배열은 다음과 같습니다. 렌더링되었습니다. Smarty 템플릿의 foreach는 PHP의 foreach와 동일하며 섹션은 위에 나열된 배열 변수를 처리하기 위해 Smarty에서 개발한 설명입니다. 물론 섹션의 기능은 그 이상입니다. 다음 섹션에서 설명하는 중첩 데이터 표현 외에도 공식 매뉴얼에서는 섹션의 여러 응용 예도 제공합니다. 단, 섹션에 던져지는 배열 인덱스는 0부터 시작하는 양의 정수, 즉 0, 1, 2, 3, ...이어야 한다는 점에 유의해야 합니다. 배열 인덱스가 0부터 시작하는 양의 정수가 아닌 경우 대신 foreach를 사용하여 데이터를 표시해야 합니다. section 및 foreach 의 사용법을 논의하는 공식 포럼에서 이 토론을 참조할 수 있습니다. 중첩 데이터 표시 아마도 템플릿 엔진에서 가장 문제가 되는 것은 중첩 데이터 표시일 것입니다. 많은 유명한 템플릿 엔진이 이 점을 특별히 강조하지만 이는 Smarty에게는 어린이 장난입니다. 가장 흔히 볼 수 있는 중첩 정보는 토론 프로그램의 토론 주제 영역입니다.제시할 결과는 공지 영역 사이트 서비스 공지 문학 영역 좋은 책 소개 좋은 글 감상 컴퓨터 영역 하드웨어라고 가정한다. 주변기기 소프트웨어 토론 프로그램에서는 먼저 정적 데이터를 예로 들어 보겠습니다. test3.php: require "main.php" $ forum = array( array( "category_id" => 1, "category_name" => "공지사항 영역", "topic" => array( array("topic_id" => 1, "topic_name" => " 사이트 공지사항") ) ), array("category_id" => 2, "category_name" => "문학존", " topic" => array( array("topic_id" => 2, "topic_name" => "좋은 책 소개"), array("topic_id" => 3, "topic_name" => "멋진 글 감상 공유") ) ), array("category_id" => 3, "category_name" => "컴퓨터 존", "topic" => array( array(" topic_id" => 4, "topic_name" => "하드웨어 주변기기"), array("topic_id" => 5, "topic_name" => " 소프트웨어 토론") ) ) ); $tpl->할당("forum", $forum); $tpl->display("test3.htm" ); ?> 템플릿은 다음과 같이 작성됩니다.
< /html> 실행 결과는 같습니다. 제가 제시한 예시도 같습니다. 따라서 프로그램에서는 반복되는 값을 레이어별로 배열에 채우는 방법을 찾은 다음 <{첫 번째 레벨 배열 [루프 1]을 사용하면 됩니다. ] ].세 번째 수준 배열 [Loop 3]. ... .Array index}> 각 중첩 루프에 값을 표시하는 방법입니다. 어떤 방법을 사용해야합니까? 다음 섹션에서 데이터베이스를 사용할 때 다시 언급하겠습니다. 데이터베이스의 데이터 변환 위에서 중첩 루프를 표시하는 방법을 언급했지만 실제로 적용할 때 데이터베이스에서 데이터가 캡처될 수 있으므로 데이터를 데이터베이스에서 변환하는 방법을 찾아야 합니다. 데이터베이스를 위의 다중 배열 형태로 변환합니다. 여기서 저자는 DB 카테고리를 사용하여 데이터베이스의 데이터를 캡처합니다. 원하는 방법을 사용할 수 있습니다. PHP 프로그램만 수정하고 템플릿은 여전히 위와 같습니다(템플릿 엔진의 장점이죠~) $db 객체는 main.php에서 생성된 것으로 가정하고 캡처된 데이터는 다음과 같습니다. 위의 예. test3.php: require "main.php" // 먼저 첫 번째 레벨 배열을 만듭니다. $category = array()$ db ->setSQL($SQL1, @#CATEGORY@#) if (!$db->query(@#CATEGORY@#)) die($db->error()); // 첫 번째 레벨 루프의 데이터를 가져옵니다. while ($item_category = $db->fetchAssoc(@#CATEGORY@#)) { // 두 번째 레벨 배열 생성 $ topic = array(); $db->setSQL(sprintf($SQL2, $item_category[@#category_id@#]), @#TOPIC@#); query(@#TOPIC@#)) die($db->error()); // 두 번째 레이어 루프의 데이터를 가져옵니다 while ($item_topic = $db->fetchAssoc (@ #TOPIC@#)) { // 캡처된 데이터를 두 번째 레이어 배열로 푸시합니다 array_push($topic, $item_topic) } / / 두 번째 수준 지정 첫 번째 수준 배열에서 캡처한 데이터의 구성원인 배열 $item_category[@#topic@#] = $topic // 첫 번째 수준 데이터를 첫 번째 수준 배열에 푸시 array_push; ($category, $item_category) $tpl->할당("forum", $category) $tpl->display ("test3.htm"); ?> 데이터베이스에서 데이터 조각을 가져온 후 해당 데이터가 포함된 배열을 얻습니다. while 문과 array_push 함수를 통해 데이터베이스의 데이터를 하나씩 배열에 밀어 넣습니다. 단일 루프 레이어만 사용하는 경우 루프의 두 번째 레이어(빨간색 부분)만 제거하세요. 콘텐츠 표시 여부 결정 콘텐츠 표시 여부를 결정하려면 if 구문을 사용하여 선택할 수 있습니다. 예를 들어, 사용자가 로그인한 경우 템플릿은 다음과 같이 작성할 수 있습니다. <{if $is_login == true}> 사용자 작업 메뉴 표시 <{else}> 계좌 번호 및 비밀번호 입력 양식 표시 <{/if}> "==" 기호 양쪽에 공백이 하나 이상 있어야 합니다. 그렇지 않으면 Smarty는 이를 구문 분석할 수 없습니다. if 구문의 일반적인 적용은 공식 사용설명서를 참고하시면 되므로 여기서는 자세히 소개하지 않겠습니다. 그러나 저자는 흥미로운 응용 프로그램을 발견했습니다. 프로그램에서 다음과 같은 테이블이 생성되는 것을 자주 봅니다. (숫자는 데이터 세트의 순서를 나타냅니다) 1 2 3 4 5 6 7 8 저자는 이것을 '수평반복표'라고 부른다. 이전 섹션에서 본 반복 테이블은 모두 위에서 아래로 이루어지며 한 열에 하나의 데이터만 포함되어 있는 기존의 수직 반복과 그 특성이 다릅니다. 수평 반복 테이블은 수평으로 한 열에 n개의 데이터를 생성한 후 전체 주기가 끝날 때까지 다음 열로 변경될 수 있습니다. 이러한 기능을 달성하기 위한 가장 간단한 방법은 섹션과 if를 일치시키는 것입니다. 다음 예를 살펴보겠습니다. test4.php: require "main.php"; $my_array = array( array(" value " => "0"), array("value" => "1"), array("value" => "2"), array("value" = > "3"), array("값" => "4"), array("값" => "5"), 배열("값" => ; "6"), array("value" => "7"), array("value" => "8"), array("value" => " 9 ")); $tpl->할당("my_array", $my_array); $tpl->display(@#test4.htm@#); ?> 템플릿은 다음과 같이 작성됩니다. templates/test4.htm: ;/ 머리>
;{ 섹션 이름=sec1 루프=$my_array}>
<{$my_array[sec1].value}>
<{if $smarty.section. sec1.rownum은
<{/if}> < /tr>
Smarty 변수인 $smarty.section.sec1.rownum에 있습니다. 섹션 루프의 변수는 1부터 시작하는 인덱스 값을 가져오므로 rownum을 2로 나눌 수 있으면 출력
앞
따라서 숫자 2는 열에 표시하려는 데이터 항목의 수입니다. 이를 사용하여 다른 프레젠테이션 방법을 변경할 수 있습니다. 외부 콘텐츠 로드 두 가지 Smarty 템플릿 구문 include_php 및 include를 사용하여 템플릿에 PHP 프로그램 코드 또는 다른 하위 템플릿을 로드할 수 있습니다. include_php는 작성자가 거의 사용하지 않으며 사용 방법을 찾을 수 있습니다. 공식 매뉴얼에서는 여기에 설명되지 않습니다. include를 사용할 때 하위 템플릿을 미리 로드하거나 하위 템플릿을 동적으로 로드할 수 있습니다. 사전 로드는 일반적으로 공통 파일 헤더가 있을 때 사용되며 동적 로드는 Winamp와 같은 교체 가능한 스킨을 추가로 구현하기 위해 통합 프레임 페이지에서 사용할 수 있습니다. 물론 상황에 따라 이 두 가지를 섞어서 사용할 수도 있습니다. 다음 예를 살펴보겠습니다. test5.php: require "main.php"; $tpl->ass("title", " 테스트 포함"); $tpl->ass("content", "이것은 템플릿 2의 변수입니다.") $tpl->ass("dyn_page", "test5_3.htm" ) ; $tpl->display(@#test5_1.htm@#); ?> 템플릿 1은 다음과 같이 작성됩니다. templates/test5_1.htm: < ;html>
<{$title}> < /제목>
<{include file="test5_2.htm"}> file= $dyn_page}> <{include file="test5_4.htm" custom_var="맞춤 변수 내용"}> > 템플릿 2는 다음과 같이 작성됩니다. templates/test5_2.htm: <{$content}> 템플릿 3은 다음과 같이 작성됩니다. templates/test5_3.htm: 이것이 템플릿입니다. 3 템플릿 4의 내용은 다음과 같이 작성되었습니다. templates/test5_4.htm: <{$custom_var}> 여기서 몇 가지 핵심 사항에 유의하세요. 1. 템플릿의 위치는 모두 이전에 정의된 template_dir을 기반으로 합니다. 2. 포함된 모든 하위 템플릿에서 해당 변수도 해석됩니다. 3. 포함에서는 "변수 이름 = 변수 내용"을 사용할 수 있습니다. " 가져온 템플릿에 포함된 변수를 지정합니다. 위의 템플릿 4와 같습니다.
위 내용은 스마트 플래시 복구에 대한 소개, 스마트 플래시 복구에 대한 내용을 포함하여 PHP를 배우는 초보자를 위한 스마티 소개입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.