如何在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 03:48
    下一篇 2024-10-09 03:50

    相关推荐

    • 如何使用DedeCMS创建并管理我的网站?

      您的网站使用DedeCMS(织梦内容管理系统)构建,这是一个流行的开源PHP网站管理平台,适用于创建和管理动态网站。如果您需要进一步的帮助,请提供更多详细信息。

      2024-11-20
      012
    • DEDECMS中的时间显示如何设置为多少分钟前?

      您的问题似乎不完整,请提供更详细的信息或上下文,以便我能更准确地回答您。如果您是在询问dedecms(一个内容管理系统)的安装、配置、使用或其他相关问题,请具体说明需要了解的内容,我会很乐意为您提供帮助。

      2024-11-08
      020
    • Dede如何查看文章数量?

      在 DedeCMS(织梦内容管理系统)中,查看文章数量的方法如下:,,1. 登录后台管理系统。,2. 进入“内容管理”模块。,3. 选择“文章管理”。,4. 在右侧列表中即可看到所有文章的标题、作者、发布时间等信息。

      2024-11-07
      019
    • 织梦DedeCMS核心目录知识有哪些要点?

      织梦DedeCMS核心目录知识大全背景介绍织梦DedeCMS是一款流行的开源内容管理系统(CMS),广泛用于企业建站和信息管理,了解其目录结构和文件功能对于开发者进行二次开发、安全管理和界面定制至关重要,本文将详细介绍织梦DedeCMS的核心目录结构及其主要文件的作用,以帮助开发者更好地理解和使用该CMS,目录……

      2024-11-02
      0313

    发表回复

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

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