如何在织梦Dedecms列表页获取当前地址链接和分页链接?
include/arc.listview.class.php
文件来获取当前页面的URL和分页链接。具体步骤如下:,,1. 打开include/arc.listview.class.php
文件。,2. 找到else if($PageNo!=1 && $ctag>GetName()=='field' && $ctag>GetAtt('display')!='')
代码段,在其上方添加以下代码:, ``php, else if($ctag>GetName()=="itemcururl") {, if($i***ake==0) {, $this>dtp>Assign($tagid,$this>GetItemsCurUrlDM());, } else {, $this>dtp>Assign($tagid,$this>GetItemsCurUrlST());, }, },
`,3. 继续查找并添加以下函数:,
`php, /**, * 获得当前的页面文件的url, * 获得当前栏目链接与当前分页链接, * @access public, * @return string, * @return {dede:itemcururl/}, */, function GetItemsCurUrlDM() {, global $cfg_basehost, $cfg_multi_site;, $purl = $this>GetCurUrl();, // 如果开启为静态,则对规则进行替换, if ($cfg_rewrite == 'Y') {, $nowurls = preg_replace("//", ".php?", $purl);, $nowurls = explode("?", $nowurls);, $purl = $nowurls[0];, }, if ($this>PageNo == 1) {, $geturl = "tid=".$this>TypeID;, $purl .= '?'.$geturl;, } else {, $geturl = "tid=".$this>TypeID."&TotalResult=".$this>TotalResult."&";, $purl .= '?'.$geturl."PageNo=".$this>PageNo;, }, $cururl = ($cfg_multi_site == 'Y') ? $purl : $cfg_basehost.$purl;, return $cururl;, }, function GetItemsCurUrlST() {, global $cfg_basehost;, $tnamerule = $this>GetMakeFileRule($this>Fields['id'],"list",$this>Fields['typedir'],$this>Fields['defaultname'],$this>Fields['namerule2']);, $tnamerule = preg_replace("/^(.*)\//", '', $tnamerule);, $cfg_basehost = preg_replace('#/$#','',$cfg_basehost);, $tnamerule = MfTypedir($this>Fields['typedir']).'/'.$tnamerule;, if ($this>PageNo == 1) {, $purl = MfTypedir($this>Fields['typedir']).'/';, } else {, $purl = str_replace("{page}",$this>PageNo,$tnamerule);, }, $cururl = ($cfg_multi_site == 'Y') ? $purl : $cfg_basehost.$purl;, return $cururl;, },
`,4. 在列表页模板中使用标签
{dede:itemcururl/}`即可获取当前地址链接和分页链接。织梦DedeCms是一款功能强大的内容管理系统,广泛应用于各类网站建设中,在列表页获取当前地址链接和分页链接对于提升用户体验和SEO优化都具有重要意义,以下是关于如何在织梦DedeCms列表页获取当前地址链接和分页链接的详细方法:
获取当前地址链接
1、修改arc.listview.class.php文件:
打开include/arc.listview.class.php文件,找到else if($PageNo!=1 && $ctag>GetName()=='field' && $ctag>GetAtt('display')!='')这一行代码。
在其上方加入以下代码:
else if($ctag>GetName()=="itemcururl") { if($ismake==0) { $this>dtp>Assign($tagid,$this>GetItemsCurUrlDM()); } else { $this>dtp>Assign($tagid,$this>GetItemsCurUrlST()); } }
继续在该文件中查找获得当前的页面文件的URL的相关注释,并在其上方加入以下两个函数:
/** * 获得当前栏目链接与当前分页链接 * @access public * @return string */ function GetItemsCurUrlDM() { global $cfg_basehost,$cfg_multi_site; $purl = $this>GetCurUrl(); // 如果开启为静态,则对规则进行替换 if($cfg_rewrite == 'Y') { $nowurls = preg_replace("//", ".php?", $purl); $nowurls = explode("?", $nowurls); $purl = $nowurls[0]; } if($this>PageNo==1) { $geturl = "tid=".$this>TypeID; $purl .= '?'.$geturl; } else { $geturl = "tid=".$this>TypeID."&TotalResult=".$this>TotalResult."&"; $purl .= '?'.$geturl."PageNo=".$this>PageNo; } $cururl = ($cfg_multi_site=='Y') ? $purl : $cfg_basehost.$purl; return $cururl; } function GetItemsCurUrlST() { global $cfg_basehost; $tnamerule = $this>GetMakeFileRule($this>Fields['id'],"list",$this>Fields['typedir'],$this>Fields['defaultname'],$this>Fields['namerule2']); $tnamerule = preg_replace("/^(.*)\//", '', $tnamerule); $cfg_basehost = preg_replace('#/$#','',$cfg_basehost); $tnamerule = MfTypedir($this>Fields['typedir']).'/'.$tnamerule; if($this>PageNo==1) { $purl = MfTypedir($this>Fields['typedir']).'/'; } else { $purl = str_replace("{page}",$this>PageNo,$tnamerule); } $cururl = ($cfg_multi_site=='Y') ? $purl : $cfg_basehost.$purl; return $cururl; }
这样,通过{dede:itemcururl/}
标签即可在模板中调用当前地址链接。
获取分页链接
1、修改list_template.htm文件:
打开模板文件夹中的list_template.htm文件。
在需要显示分页链接的位置插入以下代码:
<div class="pagination"> <ul> <li><a href="{dede:global.cfg_basehost/}{dede:field name='typeurl'/}">首页</a></li> {dede:prenext get='pre'/} <li><a href="{dede:prepage/}">上一页</a></li> {/dede:prenext} {dede:pagelist listsize='5' listitem='index,1' doViewList='yes' viewType='block'/} <li><a href="{dede:typelink/}{dede:pagelist listitem='index,1' type='current'/}" class="{dede:pagelist listitem='index,1' type='current'?' active : ''}/">{dede:pagelist listitem='index,1'/}</a></li> {/dede:pagelist} {dede:prenext get='next'/} <li><a href="{dede:nextpage/}">下一页</a></li> {/dede:prenext} </ul> </div>
这段代码使用了织梦自带的分页标签{dede:pagelist/}
来生成分页链接,并结合{dede:global.cfg_basehost/}
标签来确保链接的正确性。
示例表格
功能 | 实现方式 | 备注 |
当前地址链接 | {dede:itemcururl/} | 需修改arc.listview.class.php文件 |
分页链接 | {dede:global.cfg_basehost/}{dede:field name='typeurl'/} 、{dede:prepage/} 、{dede:nextpage/} 、{dede:pagelist/} 等 | 使用织梦自带分页标签 |
常见问题及解答(FAQs)
Q1: 如何修改arc.listview.class.php文件?
A1: 要修改arc.listview.class.php文件,请按照以下步骤操作:
1、登录到您的服务器或本地开发环境。
2、定位到织梦DedeCms的安装目录。
3、找到include文件夹下的arc.listview.class.php文件。
4、使用文本编辑器(如Notepad++、Sublime Text等)打开该文件。
5、根据上述说明,在指定位置添加或修改代码。
6、保存文件并上传回服务器(如果是在本地修改的话)。
7、刷新网站列表页,查看修改效果。
Q2: 分页链接中的“首页”链接为什么总是指向第一页而不是当前栏目的第一页?
A2: 这是因为在默认情况下,“首页”链接是通过{dede:global.cfg_basehost/}{dede:field name='typeurl'/}
生成的,它直接指向了网站的根目录,如果您希望将“首页”链接修改为当前栏目的第一页,可以自定义一个变量来存储当前栏目的第一页链接,然后在模板中引用这个变量,具体实现方法如下:
1、在arc.listview.class.php文件中定义一个获取当前栏目第一页链接的函数(类似于GetItemsCurUrlDM())。
2、在模板中调用这个新函数来生成“首页”链接。