• 1039阅读
  • 1回复

织梦dedecms获取当前栏目路径及栏目名称

楼层直达
  1. 标签如下:
  2. 当前:
  3. {dede:type}
  4. <a href=" [field:typelink  /] "> [field:typename/] </a>
  5. {/dede:type}
  6. 因为{dede:field  name='arcurl'/} 这个获取当前页面路径的标签只能在内容页使用,栏目页没有效果的。所以在栏目页想获取当前栏目的路径及名称的话,就要用上面这个标签。
  7. 而获取网站所有栏目名称及路径列表的话,就要用到另一个标签: {dede:channel},调用方式如下:
  8. 所有栏目
  9. <ul>
  10. {dede:channel  type='top' row='11'}
  11. <li class="navbg"><a  href='[field:typelink/]'>[field:typename/]</a></li>
  12. {/dede:channel}
  13. </ul>
  14. 织梦dedeCMS网站栏目页获取当前栏目的顶级栏目名称的标签教程:
  15. 我们在使用做一些网站的时候,时常会碰到需要调用当前栏目的顶级栏目名称的时候,织梦默认{dede:field name='typename' /}  可以获取当前栏目页上一级栏目的名称,而不是当前栏目顶级栏目名称。
  16. 下面拓展出一个方法来实现这个效果、:
  17. 在include/common.func.php的最下方加入:
  18. 内容来自
  19. 顶级栏目名
  20. function GetTopTypename($id)
  21. {
  22.     global $dsql;
  23.      $row = $dsql->GetOne("SELECT typename,topid FROM jiemou_arctype WHERE id=  $id");
  24.     if ($row['topid'] == '0')
  25.     {
  26.         return  $row['typename'];
  27.     }
  28.     else
  29.     {
  30.         $row1 =  $dsql->GetOne("SELECT typename FROM jiemou_arctype WHERE id=  $row[topid]");
  31.         return $row1['typename'];
  32.     }
  33. }
  34. 在文章页或者栏目列表页调用时,在所要调用栏目名称的位置加上下面这行代码即可实现。 内容来自
  35. {dede:field name='typeid' function="GetTopTypename(@me)" /} 内容来自
  36. 在文章页中用下面这个方法来调用
  37. 获取当前栏目的父栏目
  38. 写成一个函数放入include/extend.func.php文件中
  39. function GetParentCategoryNameByID($CurrentID){
  40. $tsql = new DedeSql(false);
  41. $typelink2 = '';
  42. $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'");
  43. $tsql->Execute('t');  
  44. while($row = $tsql->GetArray('t',MYSQL_ASSOC))  
  45. {
  46. $typelink2 .= $row['typename'];  
  47. }
  48. return $typelink2;
  49. }
  50. 调用方法:{dede:field name='id' function='GetParentCategoryNameByID(@me)' /}
Y?%MPaN:  
S1uW`zQ!+_  
只看该作者 安逸沙发  发表于: 2017-12-12
我们在使用dedecms中会发现,当我们打开栏目的列表页和文章页的时候,无论我们使用什么标签,都无法获得当前栏目的标题信息。究其原因是因为这两个页面所读取的信息主要来源于dedecms的dede_archives表及其附加表,仅通过传递栏目的id编号来区别不同栏目,因此我们通过类似{dede:field name=’typename’/}这样的方法是无法直接获得栏目名称的。但是我们依然可以通过程序的改造,利用栏目的唯一id编号,获得栏目名称。以下是实现方法: F}ukZ DB  
YT2'!R 1  
找到include/inc_functions.php(此函数为公共函数,当程序运行时自动加载) #GqTqHNE<  
在尾部添加新的函数如下: W7G9Kx1Y  
'UDBV  
复制代码 代码如下: (N U0T w  
_GbE ^  
//通过栏目ID获取栏目的名称   m7 XjP2   
function GetTypeName($typeid){   O<,r>b,  
   $dsql = new DedeSql(false);   4'At.<]jL  
   $row = $dsql->GetOne("select typename From #@__arctype where ID=$typeid; ");   shi Hy*(v  
   return $row['typename'];   |"}4*V_*  
} V;[p438o  
yU`: IMz  
调用方法示例: cgNt_8qC  
复制代码 代码如下: x1DVD!0~{  
zHx mA  
{dede:field name='typeid' function=”GetTypeName(@me)”/} b:B [3|  
快速回复

限100 字节
安逸网提示:如果您在写长篇帖子又不马上发表,建议存为草稿
 
认证码:
上一个 下一个