html,{dede:loop table='文章表'},[field:title/],{/dede:loop},
“,,这段代码会在循环中输出文章的标题和链接地址。织梦DEDECMS5.7中的LOOP标签是一个功能强大的循环标签,可以用于调用和展示数据库中的数据,默认情况下,LOOP标签并不支持直接调用文档地址arcurl,这给很多用户带来了困扰,为了解决这一问题,可以通过自定义函数的方式实现。
核心问题解析
1、问题概述:
DEDECMS5.7的LOOP万能循环标签在调用文章链接(即arcurl)时,无法直接解析出[field:arcurl/]标签,导致无法正常显示文章链接。
官方论坛没有提供现成的解决方案,因此需要通过编写自定义代码来解决。
2、解决方案:
打开Include/common.func.php文件,找到第54行,添加一个自定义函数IDReturnURL,该函数的作用是根据文章ID获取完整的文章链接。
在模板中,使用自定义函数来替代原本的[field:arcurl/]标签。
具体步骤
1、添加自定义函数:
打开Include/common.func.php文件。
找到第54行并在其后添加以下代码:
function IDReturnURL($ID) { global $dsql; $query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault, tp.defaultname,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath from dede_archives arc left join dede_arctype tp on arc.typeid=tp.id where arc.id = ".$ID; $row = $dsql>GetOne($query); $ReturnURL = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'], $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']); return $ReturnURL; }
2、修改模板调用方式:
在模板文件中,将原本的[field:arcurl/]标签替换为自定义函数的调用方式。
{dede:loop table='dede_archives' sort='' row='4' if=''} <li>·<a href='[field:id function=IDReturnURL(@me)/]'>[field:title function=cn_substrR(@me,44)/]</a></li> {/dede:loop}
3、使用自定义SQL标签:
如果需要在自定义SQL标签中使用,可以这样写:
[field:id runphp='yes'] $arcRow=GetOneArchive(@me); @me=$arcRow['arcurl']; [/field:id]
示例代码详解
1、自定义函数:
function IDReturnURL($ID)
:定义一个名为IDReturnURL的函数,接受一个参数$ID,表示文章的ID。
global $dsql;
:声明全局变量$dsql,用于执行数据库查询。
$query
:定义SQL查询语句,从dede_archives表中获取文章的信息,并与dede_arctype表进行左连接。
$row = $dsql>GetOne($query);
:执行查询并获取结果。
$ReturnURL
:调用GetFileUrl函数生成文章的完整链接。
return $ReturnURL;
:返回生成的文章链接。
2、模板调用:
{dede:loop table='dede_archives' sort='' row='4' if=''}
:使用LOOP标签循环调用dede_archives表的数据,每页显示4条记录。
<li>·<a href='[field:id function=IDReturnURL(@me)/]'>[field:title function=cn_substrR(@me,44)/]</a></li>
:在循环体内部,使用自定义函数IDReturnURL根据文章ID生成文章链接,并显示文章标题。
3、自定义SQL标签:
[field:id runphp='yes']
:启用PHP运行模式。
$arcRow=GetOneArchive(@me);
:根据当前记录的ID获取文章信息。
@me=$arcRow['arcurl'];
:将文章链接赋值给当前记录。
[/field:id]
:结束PHP运行模式。
FAQs
1、如何在首页调用文章链接?
可以在首页模板文件中使用上述方法,结合LOOP标签和自定义函数,实现文章链接的调用,确保模板文件正确引入了自定义函数。
2、如何在不同页面显示不同数量的文章?
可以在LOOP标签中设置不同的row参数,例如row='4'
表示每页显示4条记录,可以根据需求进行调整。
3、如何调用其他字段的信息?
在自定义函数中,可以根据需要调整SQL查询语句,获取其他字段的信息,在模板调用中,使用相应的字段名称即可。
通过以上步骤,可以在DEDECMS5.7中成功调用文档地址arcurl,实现更加灵活和丰富的内容展示,希望这些方法能够帮助你解决在DEDECMS5.7中调用文章链接的问题。
下面是一个使用表格来展示如何在织梦DEDECMS5.7中使用LOOP标签调用文档地址(arcurl)的方法:
序号 | LOOP标签 | 描述 | 示例 |
1 | {dede:arclist} | 获取文档列表 | {dede:arclist arcurl='true'} |
2 | {dede:arclist arcurl='true'} | 获取文档列表,同时返回文档地址 | {dede:arclist arcurl='true'} |
3 | {dede:arclist arcurl='true' type='image'} | 获取文档列表,同时返回文档地址,且仅显示图片 | {dede:arclist arcurl='true' type='image'} |
4 | {dede:arclist arcurl='true' titlelen='30'} | 获取文档列表,同时返回文档地址,并限制标题长度 | {dede:arclist arcurl='true' titlelen='30'} |
5 | {dede:arclist arcurl='true' infolen='100'} | 获取文档列表,同时返回文档地址,并限制信息长度 | {dede:arclist arcurl='true' infolen='100'} |
6 | {dede:arclist arcurl='true' orderby='id'} | 获取文档列表,同时返回文档地址,并按ID排序 | {dede:arclist arcurl='true' orderby='id'} |
7 | {dede:arclist arcurl='true' row='10'} | 获取文档列表,同时返回文档地址,并限制每页显示数量 | {dede:arclist arcurl='true' row='10'} |
8 | {dede:arclist arcurl='true' pagesize='10'} | 获取文档列表,同时返回文档地址,并设置分页每页显示数量 | {dede:arclist arcurl='true' pagesize='10'} |
9 | {dede:arclist arcurl='true' pagesize='10' listitem='news'} | 获取文档列表,同时返回文档地址,并设置分页每页显示数量及文档类型 | {dede:arclist arcurl='true' pagesize='10' listitem='news'} |
10 | {dede:arclist arcurl='true' listtemp='templet'} | 获取文档列表,同时返回文档地址,并设置列表模板 | {dede:arclist arcurl='true' listtemp='templet'} |
表格中的示例仅供参考,具体使用时请根据实际情况进行修改。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1192921.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复