Dedehtml.com

织梦dede:sql根据自定义字段填的文章id获取相关文章

摘要:织梦内容页用dede:sql根据自定义字段填的文章id获取相关文章

1、后台模型添加自定义字段,数据类型用单行文本(varchar),用来填要调用的相关文章的id

填多个文章id用英文逗号隔开,例如:3,5,6,8,9

2、在内容页模板里写dede:sql标签

{dede:sql sql="SELECT * FROM #@__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}

~自定义字段名~ 有2处,改成你自己的字段名,例如 ~likeids~

3、打开 /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);
}

完成

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.dedehtml.com/notes/dede-sql-addfileds.html
(8)
打赏 微信扫一扫 微信 支付宝 QQ 扫码打赏

织梦dede:channelartlist嵌套dede:sql里使用当前文章变量

Dedehtml赞(3)

织梦dede:channelartlist嵌套dede:sql,而在dede:sql里只能使用channelartlist里的栏目变量,例如~id~、~typeid~、~typename~ 如果想要引用当前文章的其他变量,例如~title~、~writer~、~shorttitle~ 等等,这些变量是不会被解析的,如果想要更多的当前文章变量,我们可以这样做