DEDECMS文章内容页如何动态调用

DEDECMS文章内容页如何动态调用,第1张

通常dedecms列表和内容页可以利用系统内置标签[field:description/]来调用,但有时候后台文章摘要需要其它用处,那么这个时候需要调用部分文章正文内容做为摘要显示

步骤和方法

本操作需要用户对DedeCMS系统有较高的了解,如果您感觉自己不太掌握,可以考虑选择官方安全相关服务

步骤和方法

进入后台 核心 -> 频道模型 -> 内容模型管理 -> 普通文章 -> 更改

调用代码:

{dede:list pagesize='10'}

[field:body/]

[field:title/]

{/dede:list}

将内容转化为文字格式并截取字符串[field:body function='cn_substr(html2text(@me),600)'/]

参考dedecms的帮助文档中的arclist标签

标签名称:arclist

标记简介:织梦常用标记,也称为自由列表标记,其中imglist、imginfolist、specart、coolart、autolist都是由该标记所定义的不同属性延伸出来的别名标记。

功能说明:获取指定文档列表

适用范围:全局使用

基本语法:

{dede:arclist flag='h' typeid='' row='' col='' titlelen='' infolen='' imgwidth='' imgheight='' listtype='' orderby='' keyword='' limit='0,1'}

<a href='[field:arcurl/]'>[field:title/]</a>

{/dede:arclist}

参数说明:

col='' 分多少列显示(默认为单列),53版中本属性可以通过多种方式进行多行显示

如果col='1'要多列显示的可用div+css实现

以下为通过div+css实现多列的示例:

<style type=text/css>

div{width:400px;float:left;}

</style>

{dede:arclist row='10' titlelen='24' orderby='pubdate' idlist='' col='2'}

•[field:textlink/]([field:pubdate function=MyDate('m-d',@me)/])<br/>

{/dede:arclist}

当col>1将使用原来的table多列方式显示

row='10' 返回文档列表总数

typeid='' 栏目ID,在列表模板和档案模板中一般不需要指定,在首页模板中允许用","分开表示多个栏目;

getall='1' 在没有指定这属性的情况下,在栏目页、文章页模板,不会获取以","分开的多个栏目的下级子类

titlelen = '30' 标题长度 等同于titlelength

infolen='160' 表示内容简介长度 等同于infolength

imgwidth='120' 缩略图宽度

imgheight='90' 缩略图高度

listtype='all' 栏目类型 image含有缩略图 commend推荐

orderby='sortrank' 文档排序方式

§ orderby='hot' 或 orderby='click' 表示按点击数排列

§ orderby='sortrank' 或 orderby='pubdate' 按出版时间排列

§ orderby='near'

§ orderby=='lastpost' 按最后评论时间

§ orderby=='scores' 按得分排序

§ orderby='id' 按文章ID排序

§ orderby='rand' 随机获得指定条件的文档列表

keyword='' 含有指定关键字的文档列表,多个关键字用","分

innertext = '' 单条记录样式

aid='' 指定文档ID

idlist ='' 提取特定文档(文档ID)

channelid 频道ID

limit='起始ID,记录数' (起始ID从0开始)表示限定的记录范围(如:limit='1,2' 表示从ID为1的记录开始,取2条记录)

flag = 'h' 自定义属性值:头条[h]推荐[c][p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b]

noflag = '' 同flag,但这里是表示不包含这些属性

orderway='desc' 值为 desc 或 asc ,指定排序方式是降序还是顺向排序,默认为降序

subday='天数' 表示在多少天以内的文档

用arclist调用于附加表字段的方法:

要获取附加表内容,必须符合两个条件

1、指定 channelid 属性

2、指定要获得的字段 addfields='字段1,字段'

如:

{dede:arclist addfields='filetype,language,softtype' row='8' channelid='3'}

[field:textlink /] - [field:softtype /]<br />

{/dede:arclist}

底层模板字段:

ID(同 id),typeid,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,

source,litpic(同picname),pubdate,senddate,mid, lastpost,scores,goodpost,badpost,notpost,

description(同infos),filename, image, imglink, fulltitle, textlink, typelink,plusurl, memberurl, templeturl,

stime(pubdate 的"0000-00-00"格式)

其中:

textlink = <a href='arcurl'>title</a>

typelink = <a href='typeurl'>typename</a>

imglink = <a href='arcurl'><img src='picname' border='0' width='imgwidth' height='imgheight'></a>

image = <img src='picname' border='0' width='imgwidth' height='imgheight' alt=’titile’>

字段调用方法:[field:varname/]

如:

{dede:arclist infolen='100'}

[field:textlink/]

<br>

[field:infos/]

<br>

{/dede:arclist}

注:底层模板里的Field实现也是织梦标记的一种形式,因此支持使用PHP语法,Function扩展等功能。

如: 给当天发布的内容加上 (new) 标志

[field:senddate runphp='yes']

$ntime = time();

$oneday = 3600 24;

if(($ntime - @me)<$oneday) @me = "<font color='red'>(new)</font>";

else @me = "";

[/field:senddate]

我觉得你这个问题有点BC

第一,如果你的文章是手动添加而不是采集的话,你在发表文章的时候可以顺便添加一个“推荐”(flag='c')的属性,然后在“系统”——“系统基本参数”——“性能选项 ”里面这们设置:(如图)

然后你在调用文章{dede:arclist:typeid='1' row='10' (等等)}的时候加上这个 flag='c', 这样做的效果是,你一发表完文章了,系统就会马上自动更新所有相关的栏目和内容页,这样就达到了“动态更新”的效果了,没必要另外去搞……

第二,如果你的是搞论坛或者社区之类的,那没就必要用织梦了。还不如用Dicuz!或者其它的专门做论坛用的CMS了……

<script src="{dede:field name='phpurl'/}/countphpview=yes&aid={dede:field name='id'/}&mid={dede:field name='mid'/}"type='text/javascript' language="javascript"></script> 用这个调用,动态的,刷新一次+1,起始数可以在编辑文章高级参数里修改,没出过你这个问题

方法:typeid='top' 或者typeid='asdas'任意字母不为空不为数字 写上这一个属性就可以了

{dede:arclist orderby='pubdate'  titlelen='28' row='7' typeid='top' }

如果是在文章页 这篇文章又是最新刚发布的,那么最新文章里就会包含这篇文章,想要去除这篇文章,可以加limit{dede:arclistorderby='pubdate'  titlelen='28'row='7'typeid='top'  limit='1,7'}

当然如果不是最新的文章,再次生成的时候还是有可能和当篇文章重复的

织梦内容管理系统(DedeCms) 以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历多年的发展。

目前的版本无论在功能,还是在易用性方面,都有了长足的发展和进步,DedeCms免费版的主要目标用户锁定在个人站长,功能更专注于个人网站或中小型门户的构建,当然也不乏有企业用户和学校等在使用该系统。

是说调用记录从第10条起吧,比如前面一块我调用前十条记录,然后第二块想从第11条信息开始调用,dedecms可以用limit限制,帝国cms可以用bqno实现。这里就说下dedecms用法,可以用limit='4,5'来实现,这里第一个参数4意思是起始值4,也就是从第5条开始调用。参数5是调用5条的意思。比如你想调用11-15条信息可以limit='10,5'。

还有不懂的地方欢迎提问。

你好,根据你提的问题找到相关的解决方法,你可以参考一下

第一种:根据所在栏目ID自动判断显示所在栏目的文章数   

(<span>[field:ID runphp='yes'] @me = GetTotalArc(@me);[/field:ID]</span>)

第二种:指定栏目ID   

{dede:sql sql="SELECT count( ID ) AS c FROM dede_archives where typeid = 栏目id "}

第三种:DedeCMS栏目文章数量统计调用,栏目名称按照文章数量排列  

{dede:sql sql='SELECT dtypename,did,count(daid) as heji FROM dede_arctype d left join 

dede_archives da on datypeid=did where dreid=0 group by dtypename  order by heji desc limit 0,8;'}   

<span class="text_1"><span class="count">[[field:heji/]篇]</span>

<a href="http://你的网址/plus/listphptid=[field:id/]">[field:typename/]共投递稿件</a></span><br /> 

{/dede:sql}

第四种:   修改include/commonfuncphp    在最后加入代码: 

//统计栏目文章数   

function GetTotalArc($tid) { 

global $dsql;

$sql = GetSonIds($tid);

$row = $dsql->GetOne("Select count(id) as dd From dede_archives where typeid in({$sql})");     

return $row['dd'];  }     

在htm 最下方添加:    

{dede:channel type='top' row='8'}

<LI>[field:typename/]

(<span>[field:ID runphp='yes'] @me = GetTotalArc(@me);[/field:ID]</span>)

</LI>

{/dede:channel}    

如果想调用副栏目的数量 就是   

//统计栏目文章数   

function GetTotalArc($tid2){     

global $dsql;     

$sql = GetSonIds($tid2);     

$row = $dsql->GetOne("Select count(id) as dd From dede_archives where typeid2 in({$sql})");     

return $row['dd'];  }

HTM页面不变  现在我们来说说动态调用栏目文章数:  

动态调用主要针对当前列表页的栏目,而当前的栏目是动态的,因此可以利用type标签调用一个函数就行了。  

要调用函数就得增加函数,打开include/commonfuncphp,在其中任一行(<与>的中间任一行)中加上如下函数。 

function dynamic_num($current_id){ 

global $dsql; $t_num = $dsql->GetOne("select count() as num from `dede_archives` where typeid='$current_id'"); 

if(is_array($t_num))

{   

return "本栏目共有"$t_num[num]"篇文章"; }

else{   

return "本栏目共有0篇文章" ; }

 }

在列表页中这样调用:  

{dede:type}[field:id function="dynamic_num(@me)" /]{/dede:type}               

{dede:sql sql="SELECT count(  ) AS c FROM cmsxx_archives WHERE pubdate > UNIX_TIMESTAMP( CURDATE( ) ) "}             

<li class="count">今日更新:<span>[field:c/]</span> 篇</li>             

{/dede:sql}             

{dede:sql sql="Select count(ID) as c From cmsxx_archives WHERE FROM_UNIXTIME(pubdate,'%m')=month(curdate())"}             

<li class="count">当月更新:<span>[field:c/]</span> 篇</li>             

{/dede:sql}                  

{dede:sql sql="select count() as c from cmsxx_archives}             

<li class="count">共有文章:<span>[field:c/]</span> 篇</li>             

{/dede:sql}             

{dede:sql sql="select sum(click) as c from cmsxx_archives"}             

<li class="count">总共阅读:<span>[field:c/]</span> 人次</li>             

{/dede:sql}             

{dede:sql sql="select count(mid) as c from cmsxx_member "}  

<li class="count">共有会员:<span>[field:c/]</span> 名</li>             

{/dede:sql}

还可以指定栏目ID,例如: 

{dede:sql sql="select count() as c from cmsxx_archives where channel in(1,2,3,5,6,9)"}             

<li class="count">共有文章:<span>[field:c/]</span> 篇</li>             

{/dede:sql}

希望以上方法能够帮助到你。

使用likearticle这个标签调用即可

标签名称:likearticle

功能说明:自动关连文档标签

使用实例:

{dede:likearticle row='' col='' titlelen='' infolen=''}

  <a href='[field:arcurl/]'>[field:title/]</a>

  {/dede:likearticle}

参数说明:

col='' 分多少列显示(默认为单列)

row='10' 返回文档列表总数

titlelen = '30' 标题长度 等同于titlelength

infolen='160' 表示内容简介长度 等同于infolength

mytypeid=0 手工指定要限定的栏目id,用,分开表示多个

innertext = '' 单条记录样式(指标签中间的内容)

想要进行全站的相关文章调用的话看下边

修改方法:

找到文件:\include\taglib\likearticlelibphp

找到代码:

$typeid = "And arctypeid in($typeid) And arcid<>$arcid ";

修改为:

$typeid = " And arcid<>$arcid ";

即可实现dede织梦利用likearticle标签实现调用全站相关文章问题

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » DEDECMS文章内容页如何动态调用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情