php smarty 二级分类代码和模版循环例子

二级分类的数据表结构如下:

代码如下:

PHP代码如下
/**
@ 文章分类 含二级分类
@ param int $rootnum -- 一级分类数量
@ param int $childnum -- 二级分类数量
@ 返回值 array
@ date 2011.2.24
*/
function temp_articletreecate($rootnum,$childnum){
if(!isnumber($rootnum)){
$rootnum = 10;
}
if(!isnumber($childnum)){
$childnum = 10;
}
$category = array();
$parent_sql = "SELECT cateid,catename FROM ".TABLE_PREFIX."articlecate WHERE parentid=0 AND depth=0 AND flag=1 ORDER BY orders ASC";
if(intval($rootnum)>0){
$parent_sql.=" LIMIT $rootnum";
}
$parent_cate = $GLOBALS['db']->getall($parent_sql);
foreach($parent_cate as $parent_key => $parent_value){
//子类数组名为 childcategory 根据情况自定义名称
$category[] = array('cateid'=>$parent_value['cateid'],'catename'=>$parent_value['catename'],'childcategory'=>array());

//读取子类
$child_sql = "SELECT cateid,catename FROM ".TABLE_PREFIX."articlecate WHERE parentid=".$parent_value['cateid']." AND flag=1 ORDER BY orders ASC";
if(intval($childnum)>0){
$child_sql.=" LIMIT $childnum";
}
$child_cate = $GLOBALS['db']->getall($child_sql);
foreach($child_cate as $child_key => $child_value){
$category[count($category)-1]['childcategory'][] = array('cateid'=>$child_value['cateid'],'catename'=>$child_value['catename']);
}
}
return $category;
}

PHP页面调用分类,如index.php
$goodscatetree = array();
$goodscatetree = temp_goodstreecate(4,0); //调用分类函数(含二级分类)4--表示一级分类只显示4个,0--表示二级分类不限数量
$tpl>assign("goodscatetree",$goodscatetree); //执行smarty引擎
$tpl->display->(index.tpl); //输出smarty模版页面

TPL模版页面输出分类,如index.tpl页面
{section name=p loop=$goodscatetree}
一级分类:{$goodscatetree[p].catename}
{section name=c loop=$goodscatetree[p].childcategory}
二级分类:{$goodscatetree[p].childcategory[c].catename}
{/section}
{/section}

(0)

相关推荐

  • Smarty foreach控制循环次数的一些方法

    1.在 smarty 中数组是经常会用到的,循环遍历数组用 section 或者 foreach ,如何得到数组长度或者判断一个数组个数呢?可以用{$array| count} 来试试. 2. 复制代码 代码如下: {foreach from=$variable key=key name=name iteam=value} {$variable|@count}     // 获取数组长度 {$smarty.foreach.loop.index}    // 获取当前循环数组元素下标,以0开始 {

  • smarty模板引擎使用内建函数foreach循环取出所有数组值的方法

    本文实例讲述了smarty内建函数foreach的使用方法,分享给大家供大家参考.具体如下: 显示文件:index.php: 复制代码 代码如下: <?php //创建smarty对象 require_once("./libs/Smarty.class.php"); $smarty = new Smarty(); $arr1 = array("北京","上海","广州");//索引数组 $smarty->assig

  • php中smarty区域循环的方法

    本文实例讲述了php中smarty区域循环的方法.分享给大家供大家参考.具体实现方法如下: <html> <head> <title>Smarty Test</title> </head> <body> <table border=1> {foreach key=key1 item=item1 from=$array1} <tr> <td>{$key1}</td> <td>{

  • smarty的section嵌套循环用法示例

    本文实例讲述了smarty的section嵌套循环用法.分享给大家供大家参考,具体如下: {section name="sec1" loop=$typeList} <TABLE class=left20 height=25 cellSpacing=0 cellPadding=0 width=624 background=images/indexbg.gif border=0> <TBODY> <TR> <TD class=zi align=le

  • smarty模板嵌套之include与fetch性能测试

    方法一.使用在父模板中使用{include file="child.tpl"}直接将子模板包含进来 优点: 1.有利于模块的划分和模板的重用. 2.嵌套层次不多的时候,模板的结构清晰,一眼过去就知道这个模板的内容和结构. 3.只需要一个smarty实例就能做完所有的事情,减少系统资源的占用. 不足: 1.子模板中的变量可能与父模板的变量发生冲突 2.多重嵌套的时候,变量名冲突的几率增大,为所有的变量赋值的难度也加大. 3.子模板的可操控性差,例如不能通过设置$cache_id, $co

  • Smarty foreach控制循环次数的实现详解

    1.可以用{$array| count} 来试试.2. 复制代码 代码如下: {foreach from=$variable key=key name=name iteam=value}    {$variable|@count}     // 获取数组长度    {$smarty.foreach.loop.index}    // 获取当前循环数组元素下标,以0开始    {$smarty.foreach.loop.iteration}    // 获取当前循环次数,以1开始    {$sma

  • smarty循环嵌套用法示例分析

    本文实例讲述了smarty循环嵌套用法.分享给大家供大家参考,具体如下: test3.php: <?php require "main.php"; $forum = array( array("category_id" => 1, "category_name" => "公告区", "topic" => array( array("topic_id" =>

  • php smarty 二级分类代码和模版循环例子

    二级分类的数据表结构如下: 复制代码 代码如下: PHP代码如下 /** @ 文章分类 含二级分类 @ param int $rootnum -- 一级分类数量 @ param int $childnum -- 二级分类数量 @ 返回值 array @ date 2011.2.24 */ function temp_articletreecate($rootnum,$childnum){ if(!isnumber($rootnum)){ $rootnum = 10; } if(!isnumber

  • PHP如何通过传引用的思想实现无限分类(代码简单)

    无限级分类,主要是通过储存上级分类的id以及分类路径来实现 在我的Simpla中,用到了无限分类,使用了PHP的传引用思想实现无限分类的方法,可以完美展示类似这样的分类模式. id   pid   name 1    0     四川 2    0     重庆 3    1     成都 4    1     绵阳 5    3     高新区 代码如下所示: /** * 数组变成无限级分类--传引用思想 * @param array $items * @return array */ pub

  • JavaScript代码实现图片循环滚动效果

    1.概述 循环滚动图片,不仅可以增添Web页面的动态效果,而且可以节省页面空间,有效地保证在有限的页面中显示更多的图片. 2.技术要点 主要应用setTimeout()方法实现图片的循环滚动效果.setTimeout()方法的语法格式如下: setTimeout(function,milliseconds,[arguments]) 参数说明: a. function:要调用的JavaScript自定义函数名称. b. Milliseconds:设置超时时间(以毫秒为单位). 功能:经过超时时间后

  • JS实现超精简响应鼠标显示二级菜单代码

    本文实例讲述了JS实现超精简响应鼠标显示二级菜单代码.分享给大家供大家参考.具体如下: 这是一款精简版的二级导航菜单,响应鼠标的动作,鼠标放上即显示出菜单,常见的一种菜单样式.喜欢的朋友拿去修改一下,再美化一番,就够用了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-simple-mouse-show-menu-codes/ 具体代码如下: <html> <head> <title>二级菜单,响应鼠标</

  • Thinkphp无限级分类代码

    本篇就一点一点教大家写一个无限级分类出来,其实掌握一个知识,最主要的是要掌握无限级分类的逻辑,那么写起来就很容易的多了. 首先看数据库表:xp_cate 控制器:CateAction.class.php <?php class CateAction extends Action{ function index(){ $cate=M('Cate'); $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath&qu

  • C语言中的指针以及二级指针代码详解

    很多初学者都对C中的指针很迷糊,希望这篇blog能帮助到大家: 1.什么是"指针": 在执行C程序的时候,由于我们的数据是存储在内存中的.所以对于C程序本身来说,如果想找到相应被调用的数据,就要知道存储该数据的内存地址是多少,换言之,C程序通过已知的内存地址到相应的内存位置存储数据. 这里简单说一下内存管理(对于初学者来说.为了避免专业术语引发的理解问题,下面的叙述尽量避免专业定义:),对于现代计算机系统来说,内存空间分为两个区域,一个是"数据区",一个是"

  • Python 如何用一行代码实现for循环初始化数组

    我就废话不多说了,大家还是直接看代码吧~ # 用一行代码实现for循环初始化数组 o = 10 b = [ o + u for u in range( 10 ) ] print( b ) # 结果是 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] x = 2 y = 3 c = [ i * y + x for i in range( 10 ) ] print( c ) # 结果是 [2, 5, 8, 11, 14, 17, 20, 23, 26, 29] 补充:

  • asp.net下使用AjaxPro实现二级联动代码

    复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %> <!DOCTYPE html PUBLIC "-//W3C//Dtd XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1

  • PHP无限分类代码,支持数组格式化、直接输出菜单两种方式

    复制代码 代码如下: <?php /** +------------------------------------------------ * 通用的树型类 +------------------------------------------------ * @author yangyunzhou@foxmail.com +------------------------------------------------ * @date 2010年11月23日10:09:31 +-------

随机推荐