Über die Verwendung der Smarty-Loop-Verschachtelung

不言
Freigeben: 2023-04-01 12:56:02
Original
1649 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Verwendung der Smarty-Schleifenverschachtelung vor und analysiert die Implementierungsfähigkeiten und die damit verbundenen Vorsichtsmaßnahmen von Smarty-Vorlagen-Verschachtelungsschleifen in Form von Beispielen.

Dieser Artikel erzählt Beispiel für die Verwendung von Smarty Nested Loops. 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");
?>
Nach dem Login kopieren

Das Beispielschreiben lautet 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>
Nach dem Login kopieren

test2.php:

<?php
require_once(&#39;./include/db_fns.php&#39;);
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", "//www.jb51.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 <> &#39;unpbulish&#39;
                ORDER BY post_date DESC";
        $result2=mysql_query($query2);
        $i = 5; 
        while(($row2 = mysql_fetch_array($result2)) && $i > 0)
        {
            $row2[post_date]=date(&#39;m-d&#39;,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");
?>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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(&#39;test4.htm&#39;);
?>
Nach dem Login kopieren

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 p by 2}>
</tr>
<tr>
<{/if}>
<{/section}>
</tr>
</table>
</body>
</html>
Nach dem Login kopieren

Der entscheidende Punkt ist die Smarty-Variable $smarty.section. sec1.rownum, das sich in der Abschnittsschleife befindet. Die Variable erhält den Indexwert beginnend bei 1. Wenn also rownum durch 2 geteilt werden kann, wird ausgegeben, um die Tabelle zu ändern (Hinweis! Es steht vor Die Zahl 2 ist also die Anzahl der Datensätze, die wir in einer Spalte darstellen möchten. Sie können damit andere unterschiedliche Präsentationsmethoden ändern.

Zu den Operatoren gehören die folgenden :

eq, ne, neq, gt, lt, lte, le, gte, ge, ist gerade, ist ungerade, ist nicht gerade , ist nicht odd, not, mod, p by, even by, odd by

Beispiel:

<!--{if $bigsize ge &#39;650&#39;}-->
   <img src="photo/<!--{$photo}-->" border="0" width="650" class="product_photo" />
<!--{else}-->
    <img src="photo/<!--{$photo}-->" border="0" class="product_photo" />
<!--{/if}-->
Nach dem Login kopieren

Smarty wurde vorher nicht häufig verwendet , Die Website eines Freundes musste in den letzten zwei Tagen geändert werden. Ich habe sie eine Weile verwendet und sie war ziemlich interessant.

Hinweis zur Erfassung:

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 verwendet werden spezielle Variable $smarty.

Capture.foo erfasst beispielsweise die oben genannten Daten. Wenn die Funktion kein Namensattribut hat, wird „default“ verwendet entspricht { /capture}, und die Aufnahmefunktion kann nicht verschachtelt werden.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich ist die chinesische PHP-Website!

Verwandte Empfehlungen:

Über die Verwendung von section und sectionelse, den integrierten Funktionen der PHP-Template-Engine Smarty


Das obige ist der detaillierte Inhalt vonÜber die Verwendung der Smarty-Loop-Verschachtelung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage