dedecms如何在列表页调出文章内容【body字段】

我们可以用截取文章前100个字作为文章简介,这里要组合使用用两个函数cn_substr和html2text,对文章转义后截取。测试代码:[field:body function="cn_substr(html2text(@me),200)"/],结果发现还是不行,因为body和description不在同一张表里。所以只好从程序上入手了。

打开include文件下extend.func.php添加以下代码:



function GetOneArchiveBody($aid,$length)  
{  
global $dsql;  
$aid = trim(ereg_replace('[^0-9]','',$aid));  
$body = '';  
$query = " Select art.body From `#@__addonarticle` art, `#@__archives` arc where art.aid='$aid' and art.aid=arc.id ";  
$arcRow = $dsql->GetOne($query);  
if(!is_array($arcRow)) {  
return $body;  
}  
if(isset($arcRow['body'])) {  
if ($length>0)
 $body = cn_substr(html2text($arcRow['body']),$length);  
else
 $body =$arcRow['body'];  
}  
return $body;  
}  


在前台模板调用:

{dede:list pagesize='10'}

[field:title/]

[field:id function="GetOneArchiveBody(@me,200)"/]...

作者:[field:writer/]

发表于:[field:pubdate function="GetDateTimeMK(@me)"/] 评论:[field:scores/] 点击:[field:click/]

{/dede:list}


如果你想调用单一文章 栏目id是2 文章id是2

{dede:arclist typeid="2" idlist="2"}

[field:id function="GetOneArchiveBody(@me,700)"/]...

{/dede:arclist}


一般来说,在列表页面要获取文章内容简单描述的话我们可以直接使用description标签就可以了,但是如果要有很多估计我们需要进行一些简单的修改。

在制作织梦模板的时候,有的时候我们需要调用文章部分内容,用[field:description/]标签字数不够多(数据库设计字段是varchar(255)的),另外修改了文章内容但是摘要还需要手动修改,所以只能调用文章正文内容了.

实现织梦DedeCMS列表页调用文章正文的方法有两种,不过都是使用的dede:arclist标签,如果使用dede:list标签的话,第一种方法是调用不出结果的.

以下是织梦DedeCMS列表页调用文章正文的第一种方法,代码如下:

复制代码
代码如下:
{dede:arclist flag='h' row='10′}  
<h1><a href='[field:arcurl/]'>[field:title/]</a></h1>  
<p>[field:id runphp='yes'] $aid = @me; $row = $GLOBALS['dsql']->GetOne("Select body From 'dede_addonarticle' where aid='$aid' "); @me =  
cn_substr(strip_tags("{$row['body']}"),400);[/field:id]<a href='[field:arcurl/]'>【阅读详细】</a></p>
{/dede:arclist}

代码中的数字400是用来设置需要调用多少内容的,因为调用的是body里面的内容,如果有里面包含代码的话也会被调用出来,这点比较不好,不过可以使用html2tex()函数解决一下.

第二种方法则是利用了织梦可以自定义模型内容数据,并调用的原理,把文章模板的body字段看做在自定义的,调用的代码如下:

复制代码
代码如下:
{dede:arclist row='10' addfields='body' channelid='1'}  
<p> [field:body function='cn_substr(html2text(@me),600)'/]...</p>  
<span class="more">  
<a href=" [field:arcurl/]" style="text-decoration:none; color:#990000;"& gt; [详 情]  
</a>  
</span>  
{/dede:arclist}

以下是这种方法的详细说明:  

1.addrields=”字段一,字段二…”

2.idlist:文章编号,调用指定内容

3.function=’cn_substr(html2text(@me),600)’ 将文章内容转化为文字格式

4.channelid,模型编号,文章默认为1,查看位置:后台–核心–内容模型管理

两种方法各有优劣,第一种方法比较繁琐,不是那么容易看懂,还是比较推荐采用第二种方法实现织梦DedeCMS列表页调用文章正文的功能的.

谁说dede:list 标签不能调用body内容,现在就告诉你,直接就可以调用

第一步,打开后台 核心-->频道模型-->内容模型管理-->普通文章,在列表附加字段中添加body.

第二步,在dede:list语句中指定addfields='body',然后直接用[field:body/]调用全部内容.

实例代码如下:

复制代码
代码如下:
{dede:list pagesize='18' addfields='body'}  
<li>  
<p>[field:body/]</p>  
<p><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></p>  
</li>  
{/dede:list}

另外,如果像摘要一样调用可以用,代码如下:

复制代码
代码如下:
[field:body function='cn_substr(html2text(@me),200)'/]

替代:
复制代码
代码如下:
[field:description /]

调出文章前200个字符内容,经过这两步,可以彻底关掉系统默认的文章摘要功能,最后还有就是官方的一个[field:description/]字段了,这个如果对于要求几十个字的完全可以了,但是如果太多字此字段就无效了.

希望本文所述对大家的dedecms建站有所帮助。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值