欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 范文大全 > 实用文>dedecms5.7文章二次开发实现阅读全文功能的方法

dedecms5.7文章二次开发实现阅读全文功能的方法

2023-03-14 08:29:29 收藏本文 下载本文

“Mercy”通过精心收集,向本站投稿了6篇dedecms5.7文章二次开发实现阅读全文功能的方法,以下是小编为大家整理后的dedecms5.7文章二次开发实现阅读全文功能的方法,仅供参考,欢迎大家阅读。

dedecms5.7文章二次开发实现阅读全文功能的方法

篇1:dedecms5.7文章二次开发实现阅读全文功能的方法

这篇文章主要为大家介绍了dedecms5.7文章二次开发实现阅读全文功能的方法,涉及文章模型相关类文件功能的修改与完善,是一个比较典型的二次开发技巧,需要的朋友可以参考下

阅读全文功能其实在很多的流行站点都有的,比如网易,新浪等,随着文章内容的增加,当一个页面有多个分页的时候,就会显示出这个“在本页阅读全文”的链接,点击这个链接之后出现的,将是这篇文章以没有分页出现的型式,那么在dedecms5.7如何在文章内容页添加阅读全文功能呢?

这个阅读全文有什么用呢?说白了,也就是提高用户体验,下面让我们看看,怎么简单现实这个功能.

修改文件:include/arc.archives.class.php

注意:做任何修改前都要备份好原文件.

第一步:打开include/arc.archives.class.php

文件查找://issystem==-1

往下 大概 145行 找到:

代码如下:

$this->Fields[‘userip‘] = $this->addTableRow[‘userip‘];

在下面一行添加:

代码如下:

$this->Fields[‘body2‘] = $this->addTableRow[‘body‘];

第二步查找:

代码如下:

$this->dsql->ExecuteNoneQuery(“Update `dede_archives` SET ismake=1 WHERE id=‘”.$this->ArcID.“‘”);

在上一行添加以下代码:

代码如下:

//阅读全文开始

if($this->TotalPage >1) {

//用正则匹配把分页符去掉

$this->Fields[‘body2‘] = preg_replace(‘/# p#副标题# e#/U‘, ‘‘,$this->Fields[‘body2‘]);

$this->SplitFields = explode(“#p2222#”,$this->Fields[‘body2‘]);

$this->Fields[‘tmptitle‘] = (emptyempty($this->Fields[‘tmptitle‘]) ? $this->Fields[‘title‘] : $this->Fields[‘tmptitle‘]);

$this->Fields[‘title‘] = $this->Fields[‘tmptitle‘];

$this->TotalPage = count($this->SplitFields);

$this->Fields[‘totalpage‘] = $this->TotalPage;

$TRUEfilenameall = $this->GetTruePath.$fileFirst.“_all.”.$this->ShortName;

$this->ParseDMFields(1,0);

$this->dtp->SaveTo($TRUEfilenameall);

if($cfg_remote_site==‘Y‘ && $isremote == 1)

{

//分析远程文件路径

$remotefile = str_replace(DEDEROOT, ‘‘, $TRUEfilename);

$localfile = ‘..‘.$remotefile;

//创建远程文件夹

$remotedir = preg_replace(“#[^\/]*\.html#”, ‘‘, $remotefile);

$this->ftp->rmkdir($remotedir);

$this->ftp->upload($localfile, $remotefile, ‘ascii‘);

}

}

//阅读全文结束

第三步:查找 获得静态页面分页列表,代码如下:

代码如下:

/**

* 获得静态页面分页列表

*

* @access public

* @param int $totalPage 总页数

* @param int $nowPage 当前页数

* @param int $aid 文档id

* @return string

*/

function GetPagebreak($totalPage, $nowPage, $aid)

{

if($totalPage==1)

{

return “”;

}

//$PageList = “

共”.$totalPage.“页:

”;

$PageList = “”;

$nPage = $nowPage-1;

$lPage = $nowPage+1;

if($nowPage==1)

{

$PageList.=“<”;

}

else

{

if($nPage==1)

{

$PageList.=“NameFirst.”.“.$this->ShortName.”‘ target=‘_self‘><“;

}

else

{

$PageList.=”NameFirst.“_”.$nPage.“.”.$this->ShortName.“‘ target=‘_self‘><”;

}

}

for($i=1;$i<=$totalPage;$i++)

{

if($i==1)

{

if($nowPage!=1)

{

$PageList.=“NameFirst.”.“.$this->ShortName.”‘ target=‘_self‘>1“;

}

else

{

$PageList.=”1“;

}

}

else

{

$n = $i;

if($nowPage!=$i)

{

$PageList.=”NameFirst.“_”.$i.“.”.$this->ShortName.“‘ target=‘_self‘>”.$n.“”;

}

else

{

$PageList.=“{$n}”;

}

}

}

if($lPage <= $totalPage)

{

$PageList.=“NameFirst.”_“.$lPage.”.“.$this->ShortName.”‘ target=‘_self‘>>“;

}

else

{

$PageList.= ”>“;

}

$PageList.= ”NameFirst.“_all.”.$this->ShortName.“‘>阅读全文”;

return $PageList;

}

也就是在return $PageList 上一行添加了一行代码:

代码如下:

$PageList.= “NameFirst.”_all.“.$this->ShortName.”‘>阅读全文“;

修改完成后,保存文件,更新一下页面就可以看到效果了.

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

篇2:WordPress实现相关文章功能代码方法

WordPress有很多实现相关文章功能的插件,插件的优点是配置简单,但是可能会对网站的速度造成一些小的影响,所以很多人还是比较喜欢用代码实现需要的功能,但是话又说回来了,代码实现也有缺点,就是配置复杂,不懂代码的人完全摸不着头脑或者只能照搬别人的代码,还不如用插件,

* 文章标题1

* 文章标题2

......

方法一:标签相关

首先获取文章的所有标签,接着获取这些标签下的 n 篇文章,那么这 n 篇文章就是与该文章相关的文章了。现在可以见到的WordPress相关文章插件都是使用的这个方法。下面是实现的代码:

$post_tags = wp_get_post_tags($post->ID);

if ($post_tags) {

foreach ($post_tags as $tag)

{

// 获取标签列表

$tag_list[] .= $tag->term_id;

}

// 随机获取标签列表中的一个标签

$post_tag = $tag_list[ mt_rand(0, count($tag_list) - 1) ];

// 该方法使用 query_posts() 函数来调用相关文章,以下是参数列表

$args = array(

'tag__in' =>array($post_tag),

'category__not_in' =>array(NULL),      // 不包括的分类ID

'post__not_in' =>array($post->ID),

'showposts' =>6,               // 显示相关文章数量

'caller_get_posts' =>1

);

query_posts($args);

if (have_posts()) :

while (have_posts()) : the_post(); update_post_caches($posts); ?>

* ” rel=“bookmark” title=“

* 暂无相关文章

使用说明:”不包括的分类ID” 指的是相关文章不显示该分类下的文章,将同行的 NULL 改成文章分类的ID即可,多个ID就用半角逗号隔开。因为这里限制只显示6篇相关文章,所以不管给 query_posts() 的参数 tag__in 赋多少个值,都是只显示一个标签下的 6 篇文章,除非第一个标签有1篇,第二个标签有2篇,第三个有3篇。。。。。。所以如果这篇文章有多个标签,那么我们采取的做法是随机获取一个标签的id,赋值给 tag__in 这个参数,获取该标签下的6篇文章。

方法二:分类相关

本方法是通过获取该文章的分类id,然后获取该分类下的文章,来达到获取相关文章的目的。

$cats = wp_get_post_categories($post->ID);

if ($cats) {

$cat = get_category( $cats[0] );

$first_cat = $cat->cat_ID;

$args = array(

'category__in' =>array($first_cat),

'post__not_in' =>array($post->ID),

'showposts' =>6,

'caller_get_posts' =>1);

query_posts($args);

if (have_posts()) :

while (have_posts()) : the_post(); update_post_caches($posts); ?>

* ” rel=“bookmark” title=“

?>”>

* 暂无相关文章

方法三:标签相关,SQL获取

获取相关文章的原理与方法一相似,不过在获取文章的时候是以SQL语句来直接读取数据库,从而随机获取6篇相关文章记录,而不是WordPress的函数query_posts().

$post_tags = wp_get_post_tags($post->ID);

if ($post_tags) {

foreach ($post_tags as $tag)

{

// 获取标签列表

$tag_list[] .= $tag->term_id;

}

// 随机获取标签列表中的一个标签

$post_tag = $tag_list[ mt_rand(0, count($tag_list) - 1) ];

$related = $wpdb->get_results(“

SELECT {$wpdb->prefix}posts.post_title, {$wpdb->prefix}posts.guid

FROM {$wpdb->prefix}posts, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy

WHERE {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id

AND {$wpdb->prefix}term_taxonomy.taxonomy = 'post_tag'

AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}

term_relationships.term_taxonomy_id

AND {$wpdb->prefix}posts.post_status = 'publish'

AND {$wpdb->prefix}posts.post_type = 'post'

AND {$wpdb->prefix}term_taxonomy.term_id = '” . $post_tag . “'

AND {$wpdb->prefix}posts.ID != '” . $post->ID . “'

ORDER BY RAND( )

LIMIT 6”);

// 以上代码中的 6 为限制只获取6篇相关文章

// 通过修改数字 6,可修改你想要的文章数量

if ( $related ) {

foreach ($related as $related_post) {

?>

* guid; ?>“ rel=”bookmark“

title=”

* 暂无相关文章

方法四:分类相关,SQL获取

获取相关文章的原理与方法二相似,不过在获取文章的时候是以SQL语句来直接读取数据库,从而随机获取6篇相关文章记录,而不是WordPress的函数query_posts().

$cats = wp_get_post_categories($post->ID);

if ($cats) {

$cat = get_category( $cats[0] );

$first_cat = $cat->cat_ID;

$related = $wpdb->get_results(“

SELECT wp_posts.post_title, wp_posts.guid

FROM wp_posts, wp_term_relationships, wp_term_taxonomy

WHERE wp_posts.ID = wp_term_relationships.object_id

AND {$wpdb->prefix}term_taxonomy.taxonomy = 'category'

AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id

AND {$wpdb->prefix}posts.post_status = 'publish'

AND {$wpdb->prefix}posts.post_type = 'post'

AND {$wpdb->prefix}term_taxonomy.term_id = '” . $first_cat . “'

AND {$wpdb->prefix}posts.ID != '” . $post->ID . “'

ORDER BY RAND( )

LIMIT 6”);

if ( $related ) {

foreach ($related as $related_post) {

?>

* guid; ?>“ rel=”bookmark“

title=”

* 暂无相关文章

方法五:作者相关

该方法是获取该文章作者的其他文章来充当相关文章,代码如下:

$post_author = get_the_author_meta( 'user_login' );

$args = array(

'author_name' =>$post_author,

'post__not_in' =>array($post->ID),

'showposts' =>6,               // 显示相关文章数量

'orderby' =>date,          // 按时间排序

'caller_get_posts' =>1

);

query_posts($args);

if (have_posts()) :

while (have_posts()) : the_post(); update_post_caches($posts); ?>

* “ rel=”bookmark“

title=”

* 暂无相关文章

时间效率对比

我们将用之前的一个php代码对以上各个相关文章代码执行时间进行测算,以便对以上各个的方法进行效率,给你的选择提供参考,

以下是在同一篇文章中获取6篇相关文章,以上各方法最终测算的时间如下:

方法一:0.18067908287048 秒

方法二:0.057158946990967 秒

方法三:0.037126064300537 秒

方法四:0.045628070831299 秒

方法五:0.023991823196411 秒

篇3:phpcms v9实现内容定时发布功能二次开发教程

phpcms v9实现内容定时发布功能二次开发教程,注意本功能不适用于生成静态的网站,

首先把栏目的工作流设置成“一级审核”

然后,在phpcms/modules/content/ 文件夹里新建一个文件命名:MY_index.php

内容如下:

本帖隐藏的内容需要回复才可以浏览

defined('IN_PHPCMS') or exit('No permission resources.');

//模型缓存路径

class MY_index extends index {

private $db;

function __construct {

$this->db = pc_base::load_model('content_model');

parent::__construct();

$this->dingshi();

}

//定时发布

public function dingshi() {

$this->content_check_db = pc_base::load_model('content_check_model');

$ids = $this->content_check_db->select('status=1 and username=“phpcms8” and inputtime<='.SYS_TIME,'checkid');

foreach($ids as $k)

{

$k1 = explode('-',$k['checkid']);

$this->db->set_model($k1[2]);

$this->db->status($k1[1]);

}

}

}

?>

这样,当有用户通过动态地址访问你的content模快时,如果定时到了,文章就会自动审核发布,

注意:

1、生成静态的网站要用的话,可以把网站默认文档设置成index.php优先于index.html,这样当访问首页时也有效果。

2、设置栏目为“一级审核”,发布定时文章时,除了选择发布时间外,还要把状态设置为“审核”。

3、定时发布的文章很多时建议使用“fsockopen”伪异步处理,否则出发定时发布的会员会很卡。

4、修改username=“phpcms8”中的phpcms8为你的管理员用户名。

OK,phpcms v9内容定时发布功能实现。

篇4:写景文章阅读方法

1,抓住景色特点

抓住景色特点,色彩特点,静态特点,同学们阅读此类文章时要善于捕捉。另外,要抓住写景顺序------一般分为四种,空间顺序,时间顺序,按观察的先后顺序,按景物类别。

2,分清文章的情与景

景,指作者所描述的客观事物;情,指作者在描写景物时产生的思想感情。二者在写景文章中是交织在一起的。区分,理解和体会是阅读文章的重要一环。

3,体会文章中的修辞方法。

对比法。把两个相对或相反的景物,或者一景一物的两个不同方面并列写,形成反差对比,目的是突出作者所要描述的景色。

拟人法。为了达到更好的表达效果,作者把所描述的景物当人来叙述,赋予其动作行为语言来反映景物的变化运动过程。

篇5:写景文章阅读方法

1.了解写景文章的类别。

描绘景物的文章一般有如下三类:

(1)游记,写的是在游览过程中所见的景物。(2)描写生活中常见的自然景象。(3)描写人们生活处所周围的景致。

2.明确写景的描写顺序。

写景必须按照一定的观察顺序来写,因此理清作者的描写顺序,对于把握文章内容有相当大的帮助。写景文章一般有这样几种顺序:

(1)按观察的先后顺序写。(2)按时间推移的顺序写。 (3)按空间顺序写。 (4)按景物的不同类别写。

3.理解写景文章的层次。

写景文章在结构上一般有这样三种:一是总一分结构。二是移位换景的结构,就是按照观察点的转移来写。三是按照时间的推移来安排文章的结构。

4.体会写景文章的思想感情。

无论是哪类写景的文章,都是借助对景物的描写,通过比喻、夸张、拟人等手法来抒发自

己的思想感情,文章字里行间所流露的作者的思想感情往往就是这篇文章的中心。

篇6:利用VB二次开发AutoCAD提升打印功能

利用VB二次开发AutoCAD提升打印功能

利用VB(Visual Basic)技术,对AutoCAD的打印功能进行二次开发.所编写的`程序使AutoCAD打印PDF格式的电子图纸文件的速度显著提高.该文主要介绍了开发过程中的一些主要技巧.

作 者:徐天晓 Xu Tianxiao  作者单位:七○八研究所,上海,200011 刊 名:船舶 英文刊名:SHIP & BOAT 年,卷(期):2009 20(3) 分类号:U662.9 关键词:VB   AutoCAD   二次开发   打印  

【dedecms5.7文章二次开发实现阅读全文功能的方法】相关文章:

1.提高肺功能的方法

2.实现美梦成真的三个方法

3.缩写文章的方法

4.写好文章的方法

5.蛋白质功能研究方法及技术

6.linux复制文件夹实现方法linux操作系统

7.如何实现冰箱节能的方法

8.愿望的实现方法作文250字

9.Wordpress主题修改:使用文章缩略图功能

10.自媒体的思想政治教育功能实现探究论文

下载word文档
《dedecms5.7文章二次开发实现阅读全文功能的方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

  • 返回顶部