菜鸟科技网

织梦如何调用文章摘要?

在织梦(DedeCMS)系统中,调用文章摘要是一个常见需求,无论是首页列表、栏目页还是文章页,合理调用摘要都能提升用户体验和SEO效果,本文将详细解析织梦调用文章摘要的多种方法,包括默认调用、自定义调用、高级技巧及常见问题解决,帮助开发者灵活应对不同场景需求。

织梦如何调用文章摘要?-图1
(图片来源网络,侵删)

织梦默认摘要调用方法

织梦系统默认提供了description字段作为文章摘要,在列表页和内容页中可直接通过底层模板变量调用,默认情况下,文章摘要的调用语法为:

  • 列表页调用:在list_article.htm模板文件中,使用[field:description/]即可调用当前文章的摘要,若摘要为空,系统会自动截取文章内容的前200字符作为摘要,可通过修改include/inc_arcpart_view.php文件中的$this->Fields['description'] = $this->SplitFields($this->Fields['description'], $this->Fields['body'], 200);调整截取长度,页调用**:在文章内容页article_article.htm中,可直接使用{dede:field.description/}调用摘要,该值与后台“文章内容”编辑框下方的“字段同步。

注意事项

  1. 后台发布文章时,需手动填写摘要字段,否则系统自动截取可能包含无关内容(如代码、广告等)。 中包含HTML标签,需使用{dede:field.description function='htmlspecialchars(@me)'/}进行转义,避免页面样式错乱。

自定义摘要长度与样式长度可能无法满足所有需求,例如首页列表需要更简短的摘要,而栏目页需要详细描述,此时可通过自定义函数或修改模板实现灵活控制。

通过自定义函数截取摘要

在织梦后台“模板管理”中,可创建自定义函数库(如userfun.php),添加以下代码实现摘要截取:

function my_description($str, $len) {
    $str = htmlspecialchars(strip_tags($str));
    return mb_substr($str, 0, $len, 'utf-8').'...';
}

在模板中调用时,使用:

织梦如何调用文章摘要?-图2
(图片来源网络,侵删)
{dede:field.description function='my_description(@me, 100)'/}

其中100表示截取100字符,为省略符,可根据需求调整。

使用cn_substr函数按字数截取

织梦内置cn_substr函数支持按中英文字符数截取,语法为:

{dede:field.description function='cn_substr(@me, 80)'/}

此方法适用于需要精确控制字符数的场景,避免英文单词被截断。

添加样式标签需突出显示,可添加CSS类名,

<p class="summary">{dede:field.description function='cn_substr(@me, 80)'/}</p>

在CSS文件中定义:

织梦如何调用文章摘要?-图3
(图片来源网络,侵删)
.summary { color: #666; line-height: 1.6; font-size: 14px; }

高级调用技巧

调用指定栏目的摘要

在首页或栏目页调用特定栏目的文章摘要时,可结合typeid参数使用:

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

上述代码调用ID为1的栏目下5篇文章,标题长度50字符,摘要60字符。

调用带图片的摘要需包含首张图片,可修改织梦标签:

{dede:arclist row='3'}
    <div class="news-item">
        <img src="[field:litpic/]" alt="[field:title/]">
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
        <p>[field:description function='cn_substr(@me, 100)'/]</p>
    </div>
{/dede:arclist}

通过[field:litpic/]调用文章首图,搭配摘要实现图文混排。

多条件摘要调用

结合orderbylimit等参数实现复杂调用,例如按发布时间倒序调用最新文章摘要:

{dede:arclist orderby='pubdate' row='8' subday='30'}
    <span class="date">[field:pubdate function='MyDate('m-d', @me)'/]</span>
    <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    <br>
    <small>[field:description function='cn_substr(@me, 50)'/]</small>
{/dede:arclist}

其中subday='30'限制调用近30天内的文章。

常见问题与解决方案

问题1:摘要为空时如何显示默认内容?

解决方法:使用if标签判断摘要是否为空,若为空则调用文章首段或自定义文本:

{dede:field.description runphp='yes'}
    if(@me=='') @me = cn_substr(strip_tags(@me), 100);
    else @me = cn_substr(@me, 100);
{/dede:field.description}

问题2:摘要中的HTML标签如何去除?

解决方法:通过strip_tags函数过滤标签,

{dede:field.description function='strip_tags(cn_substr(@me, 80))'/}

织梦调用文章摘要的方法灵活多样,从默认调用到自定义函数,再到复杂条件组合,开发者可根据实际需求选择合适方案,关键点在于理解底层模板变量的作用机制,结合PHP函数实现个性化处理,注意摘要内容的规范性和SEO优化,避免因截取不当影响页面效果。


相关问答FAQs

Q1: 为什么织梦调用摘要时显示为空?
A1: 可能原因包括:

  • 后台发布文章时未填写摘要字段,且文章内容无有效文本(如纯图片);
  • 模板标签书写错误,如[field:description]误写为[filed:description]
  • 自定义函数语法错误导致无法解析,解决方法:检查后台摘要字段是否填写,核对模板标签,并测试自定义函数是否正常执行。

Q2: 如何实现摘要自动去除HTML标签并保留换行?
A2: 可结合strip_tagsnl2br函数实现,

{dede:field.description function='nl2br(strip_tags(cn_substr(@me, 100)))/}

此代码先截取摘要前100字符,去除HTML标签,再将换行符<br>转换为HTML换行标签,确保摘要格式清晰。

分享:
扫描分享到社交APP
上一篇
下一篇