Das Beispiel in diesem Artikel beschreibt die Verwendung der intelligenten Schleifenverschachtelung. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
test3.php:
<?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->assign("forum", $forum); $tpl->display("test3.htm"); ?>
Die Beispiel-Schreibmethode ist wie folgt:
templates/test3.htm:
<html> <head> <title>循环嵌套测试</title> </head> <body> <table width="200" border="0" align="center" cellpadding="3" cellspacing="0"> <{section name=sec1 loop=$forum}> <tr> <td colspan="2"><{$forum[sec1].category_name}></td> </tr> <{section name=sec2 loop=$forum[sec1].topic}> <tr> <td width="25"> </td> <td width="164"><{$forum[sec1].topic[sec2].topic_name}></td> </tr> <{/section}> <{/section}> </table> </body> </html>
test2.php:
<?php require_once('./include/db_fns.php'); include_once("./Smarty/libs/Smarty.class.php"); //包含Smarty类文件 $smarty = new Smarty(); //建立Smarty实例对象$Smarty $smarty->template_dir = "./templates/dedecms";//设置模板目录 $smarty->compile_dir = "templates/templates_c"; //设置编译目录 $smarty->assign("template_url", "./"); $smarty->assign("$site_url", "http://www.php.net/"); $smarty->assign("$site_name", "文章管理系统"); $smarty->left_delimiter = "<{"; //设置左边界符 $smarty->right_delimiter = "}>"; //设置右边界符 $db_conn = db_connect(); $query = "SELECT cat_ID,cat_name FROM categories ORDER BY cat_ID DESC"; $result = mysql_query($query); $i = 5; while(($row = mysql_fetch_array($result)) && $i > 0) { $query2="SELECT ID, post_title, post_date FROM post WHERE post.post_category =$row[cat_ID] AND post_status <> 'unpbulish' ORDER BY post_date DESC"; $result2=mysql_query($query2); $i = 5; while(($row2 = mysql_fetch_array($result2)) && $i > 0) { $row2[post_date]=date('m-d',strtotime($row2[post_date])); $category = array("cat_ID"=>"$row[cat_ID]","cat_name"=>"$row[cat_name]", "post"=>array("ID"=>"$row2[ID]", "post_title"=>"$row2[post_title]" , "post_category"=>"$row2[post_category]" , "post_date"=>"$row2[post_date]")); $i--; } } $smarty->assign("forum", $category); $smarty->display("test2.htm"); ?>
test2.htm:
<html> <head> <title>嵌套循环测试</title> </head> <body> <table width="200" border="0" align="center" cellpadding="3" cellspacing="0"> <{section name=sec1 loop=$forum}> <tr> <td colspan="2"><{$forum[sec1].cat_id}></td> </tr> <{section name=sec2 loop=$forum[sec1].post}> <tr> <td width="25"> </td> <td width="164"><{$forum[sec1].post[sec2].post_title}></td> </tr> <{/section}> <{/section}> </table> </body> </html>
test4.php:
<?php require "main.php"; $my_array = array( array("value" => "0"), array("value" => "1"), array("value" => "2"), array("value" => "3"), array("value" => "4"), array("value" => "5"), array("value" => "6"), array("value" => "7"), array("value" => "8"), array("value" => "9")); $tpl->assign("my_array", $my_array); $tpl->display('test4.htm'); ?>
Die Vorlage ist wie folgt geschrieben:
templates/test4.htm:
<html> <head> <title>横向重复表格测试</title> </head> <body> <table width="500" border="1" cellspacing="0" cellpadding="3"> <tr> <{section name=sec1 loop=$my_array}> <td><{$my_array[sec1].value}></td> <{if $smarty.section.sec1.rownum is div by 2}> </tr> <tr> <{/if}> <{/section}> </tr> </table> </body> </html>
Der entscheidende Punkt ist die Smarty-Variable $smarty.section.sec1.rownum. In der Abschnittsschleife erhält diese Variable den Indexwert beginnend bei 1. Wenn rownum also durch 2 geteilt werden kann, wird ausgegeben. tr>< ;tr> bewirkt, dass die Tabelle die Spalten wechselt (Achtung! steht vorne und
-Operatoren haben folgendes :
eq, ne, neq, gt, lt, lte, le, gte, ge, ist gerade, ist ungerade, ist nicht gerade, ist nicht ungerade, not, mod, div by, even by, odd by
Beispiel:
<!--{if $bigsize ge '650'}--> <img src="photo/<!--{$photo}-->" border="0" width="650" class="product_photo" /> <!--{else}--> <img src="photo/<!--{$photo}-->" border="0" class="product_photo" /> <!--{/if}-->
Ich habe smarty in der Vergangenheit nicht oft verwendet, aber die Website eines Freundes musste in den letzten zwei Tagen geändert werden. Ich habe es ausprobiert und es ist ziemlich interessant.
Anleitung zur Aufnahme:
Die Funktion der Erfassungsfunktion besteht darin, die von der Vorlage ausgegebenen Daten in einer Variablen zu sammeln, anstatt sie auf der Seite auszugeben
Alle Daten zwischen {capture name="foo"} und {/capture} werden in der Variablen empfangen, die durch das Namensattribut der Funktion ($foo) angegeben wird
Die gesammelten Informationen können in der speziellen Variablen $smarty verwendet werdenCapture.foo erfasst beispielsweise die oben genannten Daten. Wenn die Funktion kein Namensattribut hat, wird „default“ verwendet
Jedes {capture} muss {/capture} entsprechen und die Capture-Funktion kann nicht verschachtelt werden.Leser, die an weiteren Smarty-bezogenen Inhalten interessiert sind, können sich die speziellen Themen auf dieser Website ansehen: „Grundlegendes Tutorial für den Einstieg in Smarty-Vorlagen“, „Zusammenfassung der PHP-Vorlagentechnologie“, „Zusammenfassung der auf PHP-Datenbanken basierenden Fähigkeiten“. zu PDO“, „Zusammenfassung der Verwendung von PHP-Operationen und -Operatoren“, „Zusammenfassung der Fähigkeiten zur PHP-Netzwerkprogrammierung“, „Einführungs-Tutorial in die grundlegende PHP-Syntax“, „Einführungs-Tutorial in die objektorientierte PHP-Programmierung“, „Zusammenfassung der Verwendung von PHP-Strings (Strings)“, „Einführungs-Tutorial zum PHP-MySQL-Datenbankbetrieb“ und „Zusammenfassung allgemeiner Datenbankbetriebsfähigkeiten in PHP“
Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf Smarty-Vorlagen hilfreich sein wird.