10月11, 2014

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

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

美华图片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语句进行相关的调试.

本文链接:https://901web.com/post/phpcms中点击父栏目跳转到第一个子栏目的方法总结.html

-- EOF --

Comments

请在后台配置评论类型和相关的值。