901web前端博客

人生就像一副复杂拼图
每个人总有属於自己的记忆碎片
Theme By 网上下载

联系我

RSS

十月 11, 2014

phpcms中点击父栏目跳转到第一个子栏目的方法总结

当我们在使用phpcms制作网站的时候,经常的用到二级导航菜单,也就是父栏目下面有相关的子栏目.当我们点击对应的父栏目的时候,默认的跳转到该父栏目下面的第一个子栏目.在做咪力豆奶的时候就有这个需求访问网址:www.hsmili.com.如下截图(今天有时间特意的总结一下相关的实现思路和方法.)
美华图片2

首先我们的思路是通过传递的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语句进行相关的调试.

相关文章

返回