瓦窑源码 快速建站好帮手
客服QQ客服QQ 微信号微信号

织梦DedeCMS文章页调用栏目最新文章列表排除自身文章

在文章内页调用栏目最新的文章作为相关文章,为了避免重复,怎么样才能做到排除自身文章?实际调试时发现并非易事,瓦窑源码不禁感叹Dede中使用if判断怎么这么难呢,相对于Phpcms来说,真是直接打脸。下面说说织梦DedeCMS文章页调用栏目最新文章列表排除自身文章的方法。

织梦网站源码

我们先来聊聊DedeCMS模板中如何写if判断:

Dede在模板中写php语句是用runphp='yes'开启,比如DedeCMS判断当前栏目下是否有子栏目:

{dede:field name=typeid runphp="yes"}
global $dsql;
$sql = "SELECT id From `dede_arctype` WHERE reid='@me' And ishidden<>1 order by sortrank asc limit 0, 10 ";
$row = $dsql->GetOne($sql);
if(@me=is_array($row))
@me="有子栏目";
else @me = "没子栏目";
{/dede:field}

如果在DedeCMS内容页模板,可以用类似写法:

{dede:field.original runphp='yes'}
if(@me<>'')@me="本文原创";
else
@me="原创属性未知";
{/dede:field.original}

从上面两个示范可以看出,DedeCMS模板中写php存在比较大的局限,如果要写多重调用则比较困难。相对来说Phpcms里边写php则可以直接用{php}标记来写,也可以用{if}{else}{/if}直接来if判断,比如Phpcms内容页模板里边调用栏目最新的文章列表排除自身:

{pc:content action="lists" catid="$catid" num="10" order="listorder DESC"}
{loop $data $r}
{if $r[id]!=$id}
  • {$r[title]}
{/if}
{/loop}
{/pc}

可以看出只需要{if $r[id]!=$id}直接判断不等于自身id,就轻松实现。

而Dede在文章内页调用栏目最新的文章怎么排除自身文章?则相对困难,最终费了一番功夫,得出调用如下:

{dede:php}
$typeid = $refObj->Fields['typeid'];
$id = $refObj->Fields['id'];
{/dede:php}
 
{dede:sql sql='Select * from #@__archives where typeid = ~typeid~ AND id!=~id~ LIMIT 0,10'}
  • [field:id function=GetOneArchiveURL(@me)/]
{/dede:sql}

其中GetOneArchiveURL函数是根据\include\helpers\archive.helper.php文件的GetOneArchive函数衍生的,修改这个文件,新增GetOneArchiveURL函数。相当于没能直接在模板中调用出来,借助了修改PHP文件增加函数方法来实现。

以上就是关于“织梦DedeCMS文章页调用栏目最新文章列表排除自身文章”所有内容,如果你对DedeCMS也比较熟悉,对于这个调用方法,在文章内页调用栏目最新文章列表排除自身文章有更好的方法吗?分享下吧。

微信公众号

TAG标签:DedeCMS 织梦文章页调用最新文章

上一个:第一页
下一个:织梦DedeCMS自定义调用父级栏目ID和顶级栏目信息的方法

  • 信息来源:瓦窑源码
  • 发布时间:2020-06-27
  • 阅读人数:

瓦窑源码专注织梦网站源码与静态模板分享,提供织梦模板,dedecms模板,织梦企业源码,dedecms商业源码和织梦免费模板下载

织梦源码 - 织梦模板 - 网页素材 - 织梦教程 - 站长学院 - 热门排行 - Tags标签 - 网站地图 - 免责声明

Copyright©2021 瓦窑源码 Why114.COM 版权所有 鲁ICP备20017802号-2

客服QQ:1847629575 微信号:qilujianzhan

展开