织梦DedeCMS内容页调用指定相关文章ID的完整实现方法
在织梦DedeCMS后台模型管理中,首先需要添加自定义字段。进入后台核心设置,找到内容模型管理,选择需要添加字段的模型,点击添加新字段。字段数据类型选择单行文本(varchar),用于存储要调用的相关文章ID。字段名称建议使用英文,例如likeids。在字段说明中提示用户,填写多个文章ID时请用英文逗号隔开,例如:3,5,6,8,9。
完成字段添加后,在内容页模板中编写dede:sql标签代码。以下为完整的调用代码示例:
{dede:sql sql="SELECT * FROM dede_archives WHERE arcrank>-1 AND id in(~自定义字段名~) ORDER BY FIELD(id,~自定义字段名~)"}
<a href="[field:id runphp=yes]$id=@me;$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]"><img src="[field:litpic/]">[field:title/]</a>
<p>[field:description/]</p>
{/dede:sql}
代码中的~自定义字段名~共有两处,请将其替换为你实际添加的字段名称。例如,如果字段名称为likeids,则替换为~likeids~。
接下来需要修改织梦系统核心文件,以支持自定义字段中的逗号分隔ID。打开 /include/taglib/sql.lib.php 文件,找到以下代码行:
preg_match_all("/~([A-Za-z0-9]+)~/s", $sql, $conditions);
将其修改为:
preg_match_all("/~([A-Za-z0-9_]+)~/s", $sql, $conditions);
继续在同一个文件中找到以下代码:
$sql = str_replace($conditions[0][$key], "'".addslashes($refObj->Fields[$value])."'", $sql);
将其修改为以下完整代码段:
if(is_numeric(str_replace(',','',$refObj->Fields[$value])))
{
$sql = str_replace($conditions[0][$key], addslashes($refObj->Fields[$value]), $sql);
}
else
{
$sql = str_replace($conditions[0][$key], "'".addslashes($refObj->Fields[$value])."'", $sql);
}
完成以上修改后,保存文件。在后台更新系统缓存,即可在内容页中正常调用指定ID的相关文章。此方法适用于织梦DedeCMS任意版本,能够灵活控制内容页展示的关联文章列表。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
