sql,SELECT t1.typename FROM dede_arctype AS t1 LEFT JOIN dede_arctype AS t2 ON t1.id = t2.parentid WHERE t2.id IS NULL;,
`,,2. 在 PHP 代码中使用 SQL 查询:,,
`php,$dsql = new DedeSql();,$query = "SELECT t1.typename FROM dede_arctype AS t1 LEFT JOIN dede_arctype AS t2 ON t1.id = t2.parentid WHERE t2.id IS NULL";,$result = $dsql>GetOne($query);,echo $result['typename'];,
`,,3. 使用 DedeCMS 的标签调用:,,
`html,{dede:channel type='top' name='顶级栏目'},[field:typename/],{/dede:channel},
“在织梦CMS(DEDECMS)中,获取当前顶级栏目名称是一项常见需求,默认情况下,{dede:field name='typename' /}
标签只能获取当前栏目的上一级栏目名称,而不是顶级栏目名称,为了解决这一问题,可以通过自定义函数来实现从数据库查询顶级栏目信息的功能。
自定义函数实现方法
1、添加自定义函数:
在include/common.func.php
文件的底部加入以下代码:
function GetTopTypename($id) { global $dsql; $row = $dsql>GetOne("SELECT typename,topid FROM dede_arctype WHERE id= $id"); if ($row['topid'] == '0') { return $row['typename']; } else { $row1 = $dsql>GetOne("SELECT typename FROM dede_arctype WHERE id= $row[topid]"); return $row1['typename']; } }
2、调用自定义函数:
在需要显示顶级栏目名称的位置使用以下标签:
{dede:field name='typeid' function="GetTopTypename(@me)" /}
表格示例
功能 | 代码片段 | 描述 |
获取顶级栏目名称 | {dede:field name='typeid' function="GetTopTypename(@me)" /} | 在模板中调用顶级栏目名称 |
获取顶级栏目URL | {dede:field name='typeid' function="GetTopTypeurl(@me)" /} | 在模板中调用顶级栏目的URL |
获取顶级栏目ID | {dede:field.typeid function="GetTopid(@me)"/} | 在模板中调用顶级栏目的ID |
FAQs
Q1: 如何在DEDECMS中获取当前顶级栏目的URL?
A1: 可以在include/common.func.php
文件中添加一个名为GetTopTypeurl
的函数,并在模板中使用{dede:field name='typeid' function="GetTopTypeurl(@me)" /}
标签来调用。
function GetTopTypeurl($id) { global $dsql; $row = $dsql>GetOne("SELECT sitepath,topid FROM dede_arctype WHERE id= $id"); if ($row['topid'] == '0') { return $row['sitepath']; } else { $row1 = $dsql>GetOne("SELECT sitepath FROM dede_arctype WHERE id= $row[topid]"); return $row1['sitepath']; } }
Q2: 如何获取当前栏目的父栏目名称?
A2: 可以编写一个名为GetParentCategoryNameByID
的函数,并将其放入include/extend.func.php
文件中,然后使用{dede:field name='id' function='GetParentCategoryNameByID(@me)' /}
标签来调用。
function GetParentCategoryNameByID($CurrentID){ $tsql = new DedeSql(false); $typelink2 = ''; $tsql>SetQuery("Select i.typedir,i.typename From zz5unet_arctype t left join zz5unet_arctype i on i.id=t.reid where t.id='$CurrentID'"); $tsql>Execute('t'); while($row = $tsql>GetArray('t',MYSQL_ASSOC)) { $typelink2 .= $row['typename']; } return $typelink2; }
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1220793.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复