当我们在使用phpcms制作网站的时候,经常的用到二级导航菜单,也就是父栏目下面有相关的子栏目.当我们点击对应的父栏目的时候,默认的跳转到该父栏目下面的第一个子栏目.在做咪力豆奶的时候就有这个需求访问网址:
豆奶网站. 如下截图(今天有时间特意的总结一下相关的实现思路和方法.)
首先我们的思路是通过传递的catid来进行跳转.在模板页面中添加一个category_url.html的模板页面即可其代码如下
{pc:content action="category" catid="$top_parentid" num="1" siteid="$siteid" order="listorder ASC"}
{loop $data $r}
<?php header("Location:".$r['url']); ?>
{/loop}
{/pc}
再就是在后台对应的栏目下面封面模板应用该模板即可.当点击的父栏目的时候,跳转到该父栏目下面的第一个子栏目. 在一个就是在左侧显示当前栏目的子栏目.这时,我们可以在phpcms的扩张函数中添加一个自定义的函数,通过地址栏的$catid来查询当前栏目的父栏目,再通过父栏目来查询该父栏目下面所有的子栏目,然后将其显示在左侧.找到phpcms\libs\functions\extention.func.php,在该函数中添加一个自定义的函数,例如:
/**
* extention.func.php 用户自定义函数库
*
* @copyright (C) 2005-2010 PHPCMS
* @license http://www.phpcms.cn/license/
* @lastmodify 2010-10-27
*/
function get_topid($id)
{
if ($id == 0)
{
return NULL;
}
$db = pc_base::load_model ( 'category_model' );
$result = $db->get_one ( "catid=" . $id );
if ($result ['parentid'] != 0)
{
return get_topid ( $result ['parentid'] );
}
else
{
return $result ['catid'];
}
}
再在左侧栏目显示出该父栏目下面的子分类即可.
<ul class="sidebar_navlist">
{pc:content action="category" catid="$pid" order="listorder ASC" siteid="$siteid"}
{loop $data $r}
<li>
<a {if $r[catid]==$catid} class="active" {/if} href="{$r[url]}">
{$r[catname]}
</a>
</li>
{/loop}
{/pc}
</ul>
今后还是要多多熟悉mysql的相关知识.熟悉数据表的相关字段含义,多多打印sql语句进行相关的调试.
Comments
请在后台配置评论类型和相关的值。