dedecms5.7文章二次开发实现阅读全文功能的方法
“Mercy”通过精心收集,向本站投稿了6篇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.提高肺功能的方法
3.缩写文章的方法
4.写好文章的方法






文档为doc格式