使用织梦程序做网站的时候写文章我们都想调取一些相关性高的文章来展示,那么织梦怎么通过sql语句来获取指定字段变量的文章呢?
常见sql调取文章方式
{dede:sql sql="SELECT * FROM dede_archives WHERE title LIKE '%~shorttitle~%'"}
<li><a href='[field:id runphp='yes']$id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]' title="[field:title/]">[field:title function=cn_substr(@me,40,0)/]</a></li>
{/dede:sql}
参数说明:
1.dede_archives 代表你的数据库表前缀
2. shorttitle 是你要调取的数据库里面信息的字段 title 是检查标题
3. like 进行匹配
4.%正则匹配% 匹配%%中间的文字 是否有一样的 有就调取
5.~?~ 中间的?为你的自定义字段 自己到模型创建设置
6.(重要)打开 include/taglib/sql.lib.php 文件
$sql = str_replace($conditions[0][$key], "'".addslashes($refObj->Fields[$value])."'", $sql);
替换为
$sql = str_replace($conditions[0][$key], addslashes($refObj->Fields[$value]), $sql);
这样就可以正常调取到指定字段变量的文章了。
多个自定义字段调取文章写法
{dede:sql sql="SELECT * FROM dede_archives WHERE title LIKE '%~ziduan1~%' or title LIKE '%~ziduan2~%' or title LIKE '%~ziduan3~%' order by click desc limit 10 offset 1"}
<li><a href='[field:id runphp='yes'] $id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]' title="[field:title/]" target="_blank">[field:title function=cn_substr(@me,40,0)/]</a></li>
{/dede:sql}
参数说明:
1.order by click 按点击排序
2.desc 降序 asc 正序
3.limit 15 调用15条
自定义字段指定id栏目随机调取文章
{dede:sql sql="SELECT * FROM dede_archives WHERE typeid=4 and title LIKE '%~diaoqu2~%' or title not LIKE '%~ziduan3~%' order by rand() limit 10 offset 1"}
<li><a href='[field:id runphp='yes'] $id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]' title="[field:title/]" target="_blank">[field:title function=cn_substr(@me,40,0)/]</a></li>
{/dede:sql}
参数说明:
1.typeid=4 指定id栏目
2.order by rand() 随机调用
3.not 排除标题带ziduan3文章
4.channelid='17' 指定id模型
sql调取文章时排除当前文章
{dede:sql sql="SELECT * FROM dede_archives WHERE title LIKE '%~变量~%' and title != '~title~' order by click desc limit 10 offset 0"}
<li><a href='[field:id runphp='yes'] $id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]' title="[field:title/]" target="_blank">[field:title function=cn_substr(@me,40,0)/]</a></li>
{/dede:sql}
tag通过数据库调取文章
{dede:sql sql="SELECT * FROM dede_archives WHERE title like CONCAT('%',(SELECT tag FROM dede_taglist WHERE aid=~id~),'%')"}
<li><a href='[field:id runphp='yes'] $id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]' title="[field:title/]" target="_blank">[field:title function=cn_substr(@me,40,0)/]</a></li>
{/dede:sql}
参数说明:
先查出tag ,再根据tag 查标题里含tag的文章