织梦5.7如何调用文章?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 织梦建站 正文

下面我将从基础调用、常用高级调用、SQL自由调用以及调用性能优化四个方面进行详细说明。

织梦5.7 文章调用
(图片来源网络,侵删)

基础调用:最常用的文章列表

这是最常见的需求,比如在首页、栏目页调用指定栏目或全站的文章列表。

全站最新文章调用

调用全站最新发布的文章,不限栏目。

{dede:arclist row='10' titlelen='30'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
{/dede:arclist}

参数说明:

  • row='10':调用10条记录,len='30'`:标题长度,最多显示30个字符(一个汉字算2个字符)。
  • [field:arcurl/]:文章的链接地址。
  • [field:title/]:文章的标题。
  • [field:pubdate function="MyDate('Y-m-d', @me)"/]:文章发布日期,function="MyDate('Y-m-d', @me)" 是一个函数,用于将时间戳格式化为 年-月-日 的格式。

指定栏目文章调用

调用某个特定栏目(或多个栏目)下的文章。

织梦5.7 文章调用
(图片来源网络,侵删)
{dede:arclist row='8' titlelen='24' typeid='2,5,8'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    </li>
{/dede:arclist}

新增参数:

  • typeid='2,5,8':指定要调用的栏目ID,多个ID用英文逗号隔开,如果留空,则调用所有栏目的文章(即全站调用)。

带缩略图的文章调用

这是非常实用的一个功能,可以调用文章的缩略图。

{dede:arclist row='6' titlelen='20' typeid='2' imgwidth='150' imgheight='100'}
    <li>
        <a href="[field:arcurl/]">
            <img src="[field:picname/]" alt="[field:title/]" width="150" height="100" />
            <span>[field:title/]</span>
        </a>
    </li>
{/dede:arclist}

新增参数:

  • imgwidth='150':缩略图宽度。
  • imgheight='100':缩略图高度。
  • [field:picname/]:文章缩略图的地址。

注意: 文章需要有缩略图才能显示,如果某些文章没有缩略图,可以使用 if 条件语句进行判断,或者使用 default 属性设置一个默认图片。

织梦5.7 文章调用
(图片来源网络,侵删)

带摘要(简介)的文章调用

{dede:arclist row='5' typeid='3' titlelen='26' infolen='100'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        <p>[field:description function='cn_substr(@me, 100)'/]</p>
    </li>
{/dede:arclist}

新增参数/用法:

  • infolen='100':指定摘要的长度(字符数)。
  • [field:description/]:文章的摘要内容。
  • function='cn_substr(@me, 100)':同样是一个函数,用于截取摘要的前100个字符,防止过长。

常用高级调用

调用带图的文章列表(带判断)

这个模板可以更智能地处理没有缩略图的文章,如果有图则显示图,没有图则只显示标题。

{dede:arclist row='4' typeid='5' titlelen='30'}
    <li>
        [field:array runphp='yes']
            if(@me['litpic'] != "" && @me['litpic'] != "/images/defaultpic.gif"){
                @me = '<a href="'.@me['arcurl'].'" title="'.@me['title'].'"><img src="'.@me['litpic'].'" alt="'.@me['title'].'" /></a>';
            } else {
                @me = '';
            }
        [/field:array]
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    </li>
{/dede:arclist}

说明:

  • [field:array runphp='yes']:将当前文章的所有信息(如标题、链接、缩略图等)以数组形式取出,并通过 runphp='yes' 执行PHP代码。
  • if(@me['litpic'] != "" && @me['litpic'] != "/images/defaultpic.gif"):判断缩略图字段 litpic 是否为空,并且不是默认的占位图。
  • @me = '...':如果条件成立,则将整个 <a><img> 标签字符串赋值给 @me,最终在模板中输出。
  • @me = '':如果条件不成立,则赋值为空,不显示图片。

调用指定时间范围内的文章

调用最近7天发布的文章。

{dede:arclist row='10' titlelen='40' subday='7'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}

参数说明:

  • subday='7':调用发布时间在7天内的文章。

调用热门文章(按点击量)

调用点击量最高的文章。

{dede:arclist row='10' titlelen='30' orderby='click'}
    <li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a> ([field:click/])</li>
{/dede:arclist}

参数说明:

  • orderby='click':按点击量(click)字段排序。
  • [field:click/]:显示文章的点击量。

SQL自由调用(最灵活)

{dede:arclist} 无法满足复杂需求时,可以使用 {dede:sql} 标签直接执行SQL语句。

基本语法:

{dede:sql sql='SELECT * FROM `dede_archives` WHERE typeid = 2 LIMIT 0, 10'}
    <li>
        <a href="/plus/view.php?aid=[field:id/]">[field:title/]</a>
    </li>
{/dede:sql}

说明:

  • sql='...':在这里写你的SQL查询语句。
  • 注意表前缀:如果你的数据表前缀不是默认的 dede_,需要修改成你的实际前缀。
  • 注意字段[field:id/] 对应的是 dede_archives 表中的 id 字段,[field:title/] 对应的是 title 字段。
  • 链接地址:使用 /plus/view.php?aid=[field:id/] 来构造文章链接。

高级SQL调用示例:

调用指定栏目及其所有子栏目下的文章(需要用到SQL的 IN 语句和织梦的 GetSonIds 函数)。

{dede:sql sql='SELECT a.id, a.title, a.typeid, a.litpic, c.typename FROM `dede_archives` a LEFT JOIN `dede_arctype` c ON a.typeid = c.id WHERE a.typeid IN (~GetSonIds(@me,2)~) AND a.arcrank > -1 ORDER BY a.pubdate DESC LIMIT 0, 5'}
    <li>
        <a href="/plus/view.php?aid=[field:id/]" title="[field:title/]">[field:title/]</a>
        <span>栏目:[field:typename/]</span>
    </li>
{/dede:sql}

说明:

  • ~GetSonIds(@me,2)~:这是织梦的函数,它会获取ID为2的栏目及其所有子栏目的ID,并替换成 IN (2,5,8,...) 这样的格式。
  • LEFT JOIN:通过左连接 dede_arctype 表,可以直接获取到文章的栏目名称 typename
  • a.arcrank > -1:这是一个常用条件,表示只调用已审核通过的文章(arcrank = -1 为未审核或待审核)。

调用性能优化建议

  1. 尽量使用 typeid:如果可能,尽量给 arclist 指定 typeid,这能让织梦的缓存机制更高效,减少数据库查询压力。
  2. 减少调用数量:不要在一个页面上调用过多文章列表,row='50',这会严重影响页面加载速度。
  3. 善用缓存:织梦默认对 arclist 有缓存,在后台“系统” -> “SQL命令行工具”中,可以执行 DedeCache 相关命令来清理缓存,或者在修改模板后手动更新首页。
  4. 避免复杂SQL:虽然 {dede:sql} 很灵活,但如果SQL语句过于复杂或频繁调用,也会拖慢网站速度,对于常用且复杂的调用,建议直接修改织梦的核心文件来生成一个专门的标签(这需要一定的PHP开发能力)。

希望这份详细的指南能帮助你在织梦5.7中自如地调用文章!如果你有更具体的需求,可以随时提问。

-- 展开阅读全文 --
头像
dede 幻灯片设置
« 上一篇 今天
织梦CMS分类信息如何高效搭建与管理?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]