织梦如何实现像文章列表一样调用子栏目列表,并可以分页

987seo/2020-07-14/ 分类:dede织梦学院/阅读:
今天有客户提出了一个需求,客户的网站是连锁品牌加盟的站点,所以需要把每个品牌做成一个栏目,然后再在品牌栏目下添加产品,那么如果要在品牌中心调用子栏目,并可以像文章列表那样全部调用出来,并可以分页该怎么实现呢?我们知道分页只能调用文章的分页 ...
  今天有客户提出了一个需求,客户的网站是连锁品牌加盟的站点,所以需要把每个品牌做成一个栏目,然后再在品牌栏目下添加产品,那么如果要在品牌中心调用子栏目,并可以像文章列表那样全部调用出来,并可以分页该怎么实现呢?我们知道分页只能调用文章的分页,栏目的分页就要对程序做修改了,今天987seo工作室就和大家分享下该如何操作哦!
 
不影响程序其他功能文档分页
 
支持动态、生成静态、伪静态
 
可扩展其他分页,例如会员分页,自定义表单分页等等

具体方法:

打开 /include/arc.listview.class.php 找到 大概在248行,找到


<span style="font-family:tahoma,geneva,sans-serif;"><span style="font-size:16px;">$ctag = $this->dtp->GetTag("page");</span></span>

在它下面加入

<span style="font-family:tahoma,geneva,sans-serif;"><span style="font-size:16px;">if(!is_object($ctag))
{
	$ctag = $this->dtp->GetTag("listsql");
	if(is_object($ctag))
	{
		$this->addSql = " WHERE ishidden<>1 ";
		if($cfg_list_son=='N')
		{
			if($this->CrossID=='') $this->addSql .= " AND (id='".$this->TypeID."') ";
			else $this->addSql .= " AND (id in({$this->CrossID},{$this->TypeID})) ";
		}
		else
		{
			$sonids = GetSonIds($this->TypeID,$this->Fields['channeltype'],0);
			if(!preg_match("/,/", $sonids)) {
				$this->addSql .= " AND id = '$sonids' ";
			}
			else {
				$this->addSql .= " AND id IN($sonids) ";
			}
		}
		$sql = $ctag->GetAtt("sql");
		$sql = preg_replace("/SELECT(.*?)FROM/is", " SELECT count(*) as dd FROM ", $sql);
		$sql = preg_replace("/ORDER(.*?)SC/is", "", $sql);
		$sql = $sql.$this->addSql;
		$row = $this->dsql->GetOne($sql);
		if(is_array($row))
		{
			$this->TotalResult = $row['dd'];
		}
		else
		{
			$this->TotalResult = 0;
		}
	}
}</span></span>

继续找到

<span style="font-family:tahoma,geneva,sans-serif;"><span style="font-size:16px;">else if($ctag->GetName()==“pagelist”)</span></span>

在它上面加入

<span style="font-family:tahoma,geneva,sans-serif;"><span style="font-size:16px;">else if($ctag->GetName()=="listsql")
{
    $limitstart = ($this->PageNo-1) * $this->PageSize;
    $row = $this->PageSize;
    if(trim($ctag->GetInnerText())=="")
    {
        $InnerText = GetSysTemplets("list_fulllist.htm");
    }
    else
    {
        $InnerText = trim($ctag->GetInnerText());
    }
    $this->dtp->Assign($tagid,
    $this->GetSqlList(
    $limitstart,
    $row,
    $ctag->GetAtt("sql"),
    $InnerText
    ));
}</span></span>

继续找到

<span style="font-family:tahoma,geneva,sans-serif;"><span style="font-size:16px;">function GetPageListST</span></span>

在它上面加入

<span style="font-family:tahoma,geneva,sans-serif;"><span style="font-size:16px;">function GetSqlList($limitstart = 0, $row = 10, $sql = '', $innertext)
{
    global $cfg_list_son;
    $innertext = trim($innertext);

    if ($innertext == '')
    {
        $innertext = GetSysTemplets('list_fulllist.htm');
    }
    //处理SQL语句
    $limitStr = " LIMIT {$limitstart},{$row}";
	$sql = $sql.$this->addSql.$limitStr;
    $this->dsql->SetQuery($sql);
    $this->dsql->Execute('al');
    $t2 = ExecTime();

    //echo $t2-$t1;
    $sqllist = '';
    $this->dtp2->LoadSource($innertext);
    $GLOBALS['autoindex'] = 0;

    //获取字段
    while($row = $this->dsql->GetArray("al"))
    {
		$row['typeurl'] = GetTypeUrl($row['typeid'],MfType<a href="http://www.987studio.com/dedecms/361.html" target="_blank"><u>dir</u></a>($row['typedir']),$row['isdefault'],$row['defaultname'],
                    $row['ispart'],$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);
		$row['typelink'] = GetOneTypeUrlA($row);
        $GLOBALS['autoindex']++;
        if(is_array($this->dtp2->CTags))
        {
            foreach($this->dtp2->CTags as $k=>$ctag)
            {
                if($ctag->GetName()=='array')
                {
                    //传递整个数组,在runphp模式中有特殊作用
                    $this->dtp2->Assign($k,$row);
                }
                else
                {
                    if(isset($row[$ctag->GetName()]))
                    {
                        $this->dtp2->Assign($k,$row[$ctag->GetName()]);
                    }
                    else
                    {
                        $this->dtp2->Assign($k,'');
                    }
                }
            }
        }
        $sqllist .= $this->dtp2->GetResult();
    }//while
    $t3 = ExecTime();
    //echo ($t3-$t2);
    $this->dsql->FreeResult('al');
    return $sqllist;
}</span></span>

注意:上面添加代码,有的是添加在上面有的是添加在下面的,看清楚了。源文件记得备份哦!如果出错可以及时还原哦!

下面是我修改后的调用源码,可以正常调用当前栏目下的所有子栏目,切可以分页展示,时间,地址等标签需对栏目新增自定义字段,这个后面如果大家有需要再分享教程出来哦!

<span style="font-family:tahoma,geneva,sans-serif;"><span style="font-size:16px;">{dede:listsql sql="select * from dede_arctype" pagesize="10"  type='son' noself='yes'}
	<li>
          <div class="p"> <a href="[field:typelink/]" title="[field:typename/]"></a> <img src="[field:jgzt/]" alt="[field:typename/]" width="278" height="159" /> </div>
          <div class="t">
            <h3><a href="[field:typelink/]" title="[field:typename/]">[field:typename/]</a></h3>
            <p>时间:<span></span><em>[field:tjsj/]</em></p>
            <p>地址:<span></span><em>[field:yydz  function='cn_substr(Html2text("@me")."...",36)'/]...</em></p>
            <p>等级:<span></span><em>[field:jgdj /]</em></p>
            <p>日期:<span></span><em>[field:yyrq /] </em></p>
            <p>[field:description function='cn_substr(Html2text("@me")."...",50)'/] ...</p>
            <div class="price">当前有[field:tagnum runphp='yes']@me = mt_rand(5,200);[/field:tagnum]人正在浏览<a href="[field:typelink/]" target="_blank">查看详情</a></div>

          </div>
        </li>
	{/dede:listsql}</span></span>

pagesize=“10” 每页显示10个栏目

[field:typelink/] 栏目链接

[field:typename/] 栏目名称

[field:其他字段/] 栏目其他自定义字段都可以直接调用

好了,这个方法可以用在连锁品牌,小说站点等等需要把栏目做成一本书或者做成一个品牌,或者做成一个门店的时候使用,希望对大家有帮哈!

阅读:
扩展阅读:
精彩评论:
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!
腾讯云服务器优惠
腾讯云服务器-全球

热门文章

HOT NEWS
  • 周榜
  • 月榜
阿里云服务器优惠券
987seo网络工作室 - 关注SEOer,站长和创业者的网站
微信二维码扫一扫
关注微信公众号
987studio.com 联系QQ:256707691 邮箱:256707691@qq.com Copyright © 20120-2029 987seo网络工作室 版权所有 闽ICP备18029221号-1
987SEO工作室专注seo教程分享,seo技术,网站关键词排名优化,dedecms织梦模板建站教程,技术分享等知识资讯,关键词上百度首页的方法及网站建设相关软件资源下载!一个关注SEOer、站长和创业者的网站
二维码
意见反馈 扫码关注987seo网络工作室官方公众号