如何在DedeCMS中调用上级栏目的内容?

DedeCMS中,调用上级栏目的方法可以使用以下代码:,,“,{dede:field name='topid'/},“,,这段代码会输出当前栏目的上级栏目ID。

TrueInfos($info)

标题:调用上级栏目名称和链接的方法

DedeCMS系统中,调用当前栏目的上级栏目名称和链接是常见的需求,以下是一些有效的方法来实现这一功能:

调用上级栏目名称

1、使用PHP代码

可以在模板标签中嵌入PHP代码来调用上级栏目的名称,具体代码如下:

     {dede:field name='position' runphp='yes'}
     $tc=""; //分隔符
     $tw=$GLOBALS['cfg_list_symbol']; //调用位置分隔符
     $tf=split($tw,@me); //分解成数组
     $ta=1;
     $tk=trim($tf[$ta]);
     $tk=substr($tk,0);
     @me=$tk; //赋值给@me
     {/dede:field}

另一种方法是通过直接查询数据库来获取上级栏目的名称:

     {dede:field.reid runphp='yes'}global $dsql;$reid = @me;$query = "SELECT * FROM#@__arctype where id =$reid ";$dsql>Execute('a', $query);$arctype = $dsql>GetObject('a');@me = $arctype>typename;{/dede:field.reid}

2、修改include文件

在include文件夹中找到common.func.php文件,并在底部添加以下代码:

     function GetTopTypename($id) {
         global $dsql;
         $row = $dsql>GetOne("SELECT typename,topid FROM dede_arctype WHERE id= $id");
         return $row['typename'];
     }

在需要调用顶级栏目的地方使用以下代码:

     {dede:field.typeid runphp='yes'}global $GetTopTypename;echo GetTopTypename(@me);{/dede:field.typeid}

3、自动获取上级栏目的标题、关键字、描述

打开/include/typelink.class.php文件,找到并修改以下代码段:

     $this>TypeInfos = $this>dsql>GetOne($query);

在其下面添加三行代码:

     $this>TypeInfos['keywords'] = $this>TypeInfos['keywords'] ? $this>TypeInfos['keywords'] : $this>GetTrueInfos('keywords');
     $this>TypeInfos['seotitle'] = $this>TypeInfos['seotitle'] ? $this>TypeInfos['seotitle'] : $this>GetTrueInfos('seotitle');
     $this>TypeInfos['description'] = $this>TypeInfos['description'] ? $this>TypeInfos['description'] : $this>GetTrueInfos('description');

添加一个调用方法GetTrueInfos($info):

     function GetTrueInfos($info) {
         $infos = array('reid'=>$this>TypeID,$info=>'');
         while(empty($infos[$info]) && $infos['reid']!=0) {
             $this>dsql>SetQuery("SELECT reid,".$info." FROM idea_arctype WHERE id='".$infos['reid']."'");
             $infos = $this>dsql>GetOne();
         }
         return empty($infos[$info]) ? '' : $infos[$info];
     }

调用上级栏目链接

1、使用频道模型函数

可以通过频道模型函数来调用上级栏目的链接,具体代码如下:

     {dede:field name='position' runphp='yes'}
     $tc=""; //分隔符
     $tw=$GLOBALS['cfg_list_symbol']; //调用位置分隔符
     $tf=split($tw,@me); //分解成数组
     $ta=1;
     $tk=trim($tf[$ta]);
     $tk=substr($tk,0,2);
     @me=$tk; //赋值给@me
     {/dede:field}

另一种方法是通过直接查询数据库来获取上级栏目的链接:

如何在DedeCMS中调用上级栏目的内容?
     {dede:field.reid runphp='yes'}global $dsql;$reid = @me;$query = "SELECT * FROM#@__arctype where id =$reid ";$dsql>Execute('a', $query);$arctype = $dedu>GetObject('a');@me = str_replace('{cmspath}','',$arctype>typedir);{/dede:field.reid}

2、使用自定义模板标签

可以创建一个新的模板标签来实现调用父类或其他平行子类的内容,具体代码如下:

     <?php
     /**
      * 父分类内容调用标签
      * 用于调用父类或其他平行子类的内容,标签中可使用self参数进行设置是否包含父类自身,1为包含,0为不选,默认为0
      * 模板可用字段与arclist一致可用的参数
      * row : 调用数量
      * titlenlen : 标题长度
      * infolen : 摘要长度
      * orderby : 排序字段,rand为随机排序
      * orderby : 排列顺序,asc升序、desc降序,当orderby为rand时此参数无效
      * self : 是否包含父类自身实例
      * {dede:parentlist row='10' titlelen='34'}
      *     <li><span>[field:pubdate function="MyDate('md', @me)"/]</span> <a href="[field:arcurl/]" title="[field:fulltitle/]">[field:title/]</a></li>
      * {/dede:parentlist}
      */
     if (!defined('DEDEINC'))exit('Request Error!');
     function lib_parentlist(&$ctag, &$refObj) {
       // 省略具体实现代码...
     }

表格归纳

方法 代码示例 说明
使用PHP代码调用上级栏目名称 php{dede:field name='position' runphp='yes'}$tc="";$tw=$GLOBALS['cfg_list_symbol'];$tf=split($tw,@me);$ta=1;$tk=trim($tf[$ta]);$tk=substr($tk,0);@me=$tk;{/dede:field} 通过PHP代码解析栏目层级关系
修改include文件 php function GetTopTypename($id){global $dsql;$row=$dsql>GetOne("SELECT typename,topid FROM dede_arctype WHERE id= $id");return $row['typename'];}$this>TypeInfos['keywords']=$this>TypeInfos['keywords']?$this>TypeInfos['keywords']:$this>GetTrueInfos('keywords');$this>TypeInfos['seotitle']=$this>TypeInfos['seotitle']?$this>TypeInfos['seotitle']:$this>GetTrueInfos('seotitle');$this>TypeInfos['description']=$this>TypeInfos['description']?$this>TypeInfos['description']:$this>GetTrueInfos('description');function GetTrueInfos($info){...} 在include文件中增加函数实现自动获取上级栏目信息
使用频道模型函数 php{dede:field name='position' runphp='yes'}$tc="";$tw=$GLOBALS['cfg_list_symbol'];$tf=split($tw,@me);$ta=1;$tk=trim($tf[$ta]);$tk=substr($tk,0,2);@me=$tk;{/dede:field} 通过频道模型函数实现上级栏目信息的调用
使用自定义模板标签 php{dede:parentlist row='10' titlelen='34'}

  • [field:pubdate function="MyDate('md', @me)"/][field:title/]
  • {/dede:parentlist}

    通过自定义模板标签实现上级栏目内容的调用

    FAQs

    1、如何在DedeCMS中调用当前顶级栏目的名称?:要在DedeCMS中调用当前顶级栏目的名称,可以使用以下代码:“php{dede:field.typeid runphp='yes'}{global $dsql;$reid = @me;$query = "SELECT * FROM#@__arctype where id =$reid ";$dsql>Execute('a', $query);$arctype = $dsql>GetObject('a');@me = $arctype>typename;}{/dede:field.typeid}`这段代码通过查询数据库表#@__arctype`来获取顶级栏目的名称。

    2、如何在DedeCMS中调用上级栏目的链接?:要在DedeCMS中调用上级栏目的链接,可以使用以下代码:“php{dede:field.reid runphp='yes'}{global $dsql;$reid = @me;$query = "SELECT * FROM#@__arctype where id =$reid ";$dsql>Execute('a', $query);$arctype = $dsql>GetObject('a');@me = str_replace('{cmspath}','',$arctype>typedir);}{/dede:field.reid}`这段代码通过查询数据库表#@__arctype`来获取上级栏目的链接,并将其中的路径替换为相对路径。

    方法 描述 示例代码
    { field=typename,arearcats=1, linkage=1,orderby=sortorder } 获取上级栏目的名称 { field=typename,arearcats=1, linkage=1,orderby=sortorder } 将返回当前栏目的上级栏目的名称
    { field=arearcats, linkage=1, orderby=sortorder } 获取上级栏目的ID { field=arearcats, linkage=1,orderby=sortorder } 将返回当前栏目的上级栏目的ID
    { field=arearcats, linkage=1, orderby=sortorder, type=1 } 获取上级栏目的所有信息 { field=arearcats, linkage=1,orderby=sortorder, type=1 } 将返回当前栏目的上级栏目的所有信息,包括名称、ID等
    { field=typename, arearcats=1, linkage=1, linkflag=1, linktype=1, orderby=sortorder } 获取上级栏目的链接地址 { field=typename, arearcats=1, linkage=1, linkflag=1, linktype=1,orderby=sortorder } 将返回当前栏目的上级栏目的链接地址
    { field=arearcats, linkage=1, orderby=sortorder, type=1, infolen=50 } 获取上级栏目的简介 { field=arearcats, linkage=1,orderby=sortorder, type=1, infolen=50 } 将返回当前栏目的上级栏目的简介,长度为50字符

    表格展示了使用dede调用上级栏目的方法,包括获取名称、ID、信息、链接地址和简介等,可以根据实际需求选择合适的方法。

    原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1189623.html

    (0)
    未希的头像未希新媒体运营
    上一篇 2024-10-09
    下一篇 2024-10-09

    相关推荐

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注

    免费注册
    电话联系

    400-880-8834

    产品咨询
    产品咨询
    分享本页
    返回顶部
    云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入