phpcms v9文章模块二次开发(排序 用户名)

更改后台文章排序

修改文件: phpcmsmodulescontent 中的 content.php

 

 代码如下 复制代码

$datas = $this->db->listinfo($where,’id desc’,$_GET['page']);

改成

$datas = $this->db->listinfo($where,’listorder ASC, id desc’,$_GET['page']);

关联文章排序陈旧问题

修改 phpcms/modules/content/classes/content_tag.class.php 内容模型标签类文件,将 content_tag 类中 relation 方法修改为:

 代码如下 复制代码

/**
* 相关文章标签
* @param $data
*/
public function relation($data) {
$catid = intval($data['catid']);
if(!$this->set_modelid($catid)) return false;
$order = $data['order'];
$sql = “`status`=99″;
$limit = $data['id'] ? $data['limit']+1 : $data['limit'];
if($data['relation']) {
$relations = explode(‘|’,trim($data['relation'],’|’));
$relations = array_diff($relations, array(null));
$relations = implode(‘,’,$relations);
$sql = ” `id` IN ($relations)”;
$key_array = $this->db->select($sql, ‘*’, $limit, $order,”,’id’);
} elseif($data['keywords']) {
$keywords = str_replace(‘%’, ”,$data['keywords']);
$keywords_arr = explode(‘ ‘,$keywords);
$key_array = array();
$number = 0;
$i =1;
foreach ($keywords_arr as $_k) {
$sql2 = $sql.” AND `keywords` LIKE ‘%$_k%’”.(isset($data['id']) && intval($data['id']) ? ” AND `id` != ‘”.abs(intval($data['id'])).”‘” : ”);
$r = $this->db->select($sql2, ‘*’, $limit, $order,”,’id’);
$number += count($r);
foreach ($r as $id=>$v) {
if($i<= $data['limit'] && !in_array($id, $key_array)) $key_array[$id] = $v;
$i++;
}
if($data['limit']<$number) break;
}
}
if($data['id']) unset($key_array[$data['id']]);
return $key_array;
}

其实只是将 $r = $this->db->select($sql2, ‘*’, $limit, ”,”,’id’); 替换为了 $r = $this->db->select($sql2, ‘*’, $limit, $order,”,’id’); 让order参数传入查询方法。
在模板当中,使用如下标签,加上order参数即可实现排序了。

 代码如下 复制代码

{pc:content action=”relation” relation=”$relation” id=”$id” catid=”$catid” num=”5″ keywords=”$rs[keywords]” order=”id DESC”}
{loop $data $r}
{/loop}
{/pc}

如果有洁癖的朋友,担心直接修改PC会影响未来升级,可以将其单独提取出来。放到模板中当作函数使用。代码如下:

 代码如下 复制代码
<?php
/**
* 内容模型 – 相关文章标签(修正排序异常问题)
* @param $data
*/
function mk1_content_tag_relation($data) {
$db = pc_base::load_model(‘content_model’);
$catid = intval($data['catid']);
$siteids = getcache(‘category_content’,’commons’);
if(!$siteids[$catid]) return false;
$siteid = $siteids[$catid];
$category = getcache(‘category_content_’.$siteid,’commons’);
if(empty($category)) return false;
if($category[$catid]['type']!=0) return false;
$db->set_model($category[$catid]['modelid']);
$order = $data['order'];
$sql = “`status`=99″;
$limit = $data['id'] ? $data['limit']+1 : $data['limit'];
if($data['relation']) {
$relations = explode(‘|’,trim($data['relation'],’|’));
$relations = array_diff($relations, array(null));
$relations = implode(‘,’,$relations);
$sql = ” `id` IN ($relations)”;
$key_array = $db->select($sql, ‘*’, $limit, $order,”,’id’);
} elseif($data['keywords']) {
$keywords = str_replace(‘%’, ”,$data['keywords']);
$keywords_arr = explode(‘ ‘,$keywords);
$key_array = array();
$number = 0;
$i =1;
foreach ($keywords_arr as $_k) {
$sql2 = $sql.” AND `keywords` LIKE ‘%$_k%’”.(isset($data['id']) && intval($data['id']) ? ” AND `id` != ‘”.abs(intval($data['id'])).”‘” : ”);
$r = $db->select($sql2, ‘*’, $limit, $order,”,’id’);
$number += count($r);
foreach ($r as $id=>$v) {
if($i<= $data['limit'] && !in_array($id, $key_array)) $key_array[$id] = $v;
$i++;
}
if($data['limit']<$number) break;
}
}
if($data['id']) unset($key_array[$data['id']]);
return $key_array;
}
?>

在模板中,使用如下PHP代码获取即可。

 代码如下 复制代码

{php $data = mk1_content_tag_relation(array(‘relation’=>$relation,’id’=>$id,’catid’=>$catid,’keywords’=>$rs['keywords'],’order’=>’id DESC’,’limit’=>’4′)); }
{loop $data $r}
{/loop}

发布文章不显示用户名

V9前台静态有时候不显示更新用户的用户名,具体修改方法如下

content_model.class.php第120行

 代码如下 复制代码

$urls['data']['username'] = $systeminfo['username'];
//end
html.class.php第29行:

//额。必须要在这里获取传递过来的数组值
$username=$data['username'];
edit_content方法,约280行:

/*编辑部分从主表数据库中查出用户名,传递模版*/
$temp = $this->get_one(array(‘id’=>$id));
$urls['data']['username'] = $temp['username'];
//end

 

添加文章时选择相关文章可调用其它模型信息

首先,在模型管理的设计师模型中,修改相关文章的“相关参数”这里面的值。
找到这行语句,把

 代码如下 复制代码

<input type=’button’ value=”添加相关” onclick=”omnipotent(‘selectid’,’?m=content&c=content& a=public_relationlist&modelid={MODELID}’,’添加相关文章’,1)” class=”button” style=”width:66px;”>
修改为:

 

<input type=’button’ value=”添加相关” onclick=”omnipotent(‘selectid’,’?m=content&c=content&a=public_relationlist&modelid=2′,’添加相关文章’,1)” class=”button” style=”width:66px;”>

其实只是把上面的 {MODELID} 换成了目标模型ID(设计案例模型的ID)罢了。

这一步已经可以实现了选择不同模型的文章。

接下来解决选择后保存后再进入编辑不会显示的问题。
还是找到型管理的设计师模型中,修改相关文章的“相关参数”这里面的值。

 代码如下 复制代码

 

<input type=’button’ value=”显示已有” onclick=”show_relation({MODELID},{ID})” class=”button” style=”width:66px;”>
修改为:

 

<input type=’button’ value=”显示已有” onclick=”show_relation(1,2,{ID})” class=”button” style=”width:66px;”>

注意第一行的 onclick="show_relation({MODELID},{ID})"
我把他修改为了 onclick="show_relation(1,2,{ID})" , 这里我有必要解释一下, {MODELID}是调用本文章的所属模型ID
我修改为show_relation(1,2,{ID}),懂的朋友一看就知道,我多了一个参数。为什么多了一个参数呢,上面也说到了,默认只有同模型的文章可以选择,所以这里做了一个目标模型ID。第一个参数是源模型ID,第二个参数是目标模型ID。

这里面修改后保存。

 

show_relation()这个是JS函数,既然多了一个参数,那我们也要修改JS文件喽。
找到statics/js/content_addtop.js的153,154行左右.为

 代码如下 复制代码
function show_relation….
$.getJSON(“?m=content;……….

我把这两行修改为了:

 代码如下 复制代码

 

function show_relation(modelid,target_modelid,id) {
$.getJSON(“?m=content&c=content&a=public_getjson_ids&modelid=”+modelid+”&target_modelid=”+target_modelid+”&id=”+id, function(json){

JS修改过后,接下来我们修改最后的PHP文件。

找到phpcmsmodulescontentcontent.php 574行左右,也就是public function public_getjson_ids()这行左右。

在$modelid = intval($_GET['modelid']); 行后换行加入:

 代码如下 复制代码

 

$target_modelid = intval($_GET['target_modelid']);

在586行也就是$infos = array();这行后面换行加入:

 代码如下 复制代码
$this->db->set_model($target_modelid);
$this->model = getcache(‘model’, ‘commons’);
$this->db->table_name = $this->db->db_tablepre.$this->model[$target_modelid]['tablename'];
其中的“$this->db->table_name = $tablename;” 这一行是被上面第三行替换了。

OK。大功告成。
因为已经破坏了原生的相关文章功能了。如果你以后再使用相关文章的功能时,要记得先到模型的字段中的“相关参数”的值哦。

在前台调用相关文章时,用下列标签:

 代码如下 复制代码

if $relation!=”}
{php $rel = explode(‘|’,$relation);}
{loop $rel $design_id} </p>
<p> {pc:get sql=”select title,id,url,thumb from v9_design where id=$design_id”}
{loop $data $r}
<td class=”pr5″><a href=”http://www.111cn.net /blog/{$r[url]}” title=”{$r[title]}” target=”_blank”><img src=”http://www.111cn.net /blog/{$r[thumb]}” width=”190″ height=”120″ class=”imgborder” alt=”{$r[title]}” /></a><p class=”mt5″><a href=”http://www.111cn.net/ blog/{$r[url]}” title=”{$r[title]}” target=”_blank”>{str_cut($r[title],’32′)}</a></p></td>
{/loop}
{/pc}</p>
<p>{/loop}
{/if}

时间: 2024-10-03 07:22:46

phpcms v9文章模块二次开发(排序 用户名)的相关文章

PHPCMS V9 添加二级导航的思路详解_php实例

今天看了看phpcms 写到二级导航时发现点问题,查询导航栏的信息时返回的$r[arrchildid]与自己想象的不符,文档上说是返回子栏目id但是却有些不同. 开始的思路: <ul class="nav navbar-nav"> <li class="active"><a href="{siteurl($siteid)}">首页</a></li> {pc:content action=

AVEVA Draft自动出图二次开发

AVEVA Draft Auto Drawing Customisation AVEVA Draft自动出图二次开发 eryar@163.com 摘要Abstract:本文简要描述了CAD软件自动出图的意义,详细说明AVEVA Draft模块的PML二次开发步骤,并给出了PML实例,便于理解及工程应用.通过对Draft的二次开发,可以根据需要对指定模型进行自动出图,提高工作效率. 关键字Key Words:AVEVA Draft.PDMS.PML.Automatical Drawing 一.引言

phpcms v9二次开发笔记

一.目录结构 根目录 | – api 接口文件目录 | – caches 缓存文件目录 | – configs 系统配置文件目录 | – caches_* 系统缓存目录 | – phpcms phpcms框架主目录 | – languages 框架语言包目录 | – libs 框架主类库.主函数库目录 | – model 框架数据库模型目录(每个目录都是一个模块,包含控制器) | – modules 框架模块目录 | – templates 框架系统模板目录(视图,默认在default目录) |

phpcms v9自定义HTML文件名字的二次开发

1.修改你需要设置的模型,添加一个字段,配置如下:   开发-phpcmsv9二次开发教程"> 2.打开/phpcms/modules/content/create_html.php,找到代码: $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime']); 批量替换为: $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputt

PHPCMS V9信息模型即将面世 黄页模块6月发布

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 PHPCMS V9(简称V9)采用PHP5+MYSQL做为技术基础进行开发.V9采用OOP(面向对象)方式进行基础运行框架搭建.模块化开发方式做为功能开发形式.框架易于功能扩展,代码维护,优秀的二次开发能力,可满足所有网站的应用需求. 5年开发经验的优秀团队,在掌握了丰富的WEB开发经验和CMS产品开发经验的同时,勇于创新追求完美的设计理念,

Phpcms V9设置文章定时发布程序代码

phpcms v9 本身是没有定时发布这一项功能的,这需要我们进行二次开发才能实现,关于定时发布的好处不用多说了吧,当我们在没有时间进行更新站点的时候,不会出现文章断更的情况,比如过年或者自己过节没有时间更新了,可以提前写好文章,让其自动进行更新,在 wordpress 中有这样一个很好的时间机制,下面夏日博客就来说下在 phpcms v9 中如何实现文章定时的发布,这是在 pc 论坛上面看到的一个方法,感觉不错就分享下代码吧. 1.修改api/count.php这一文件,在PHP语句结束代码

如何彻底解决phpcms v9升级后文章发布出现Mysql 1267错误

彻底解决phpcms v9升级后,文章发布出现:MySQL Query : SELECT * FROM `withli_a`.`v9_keyword` WHERE `keyword` = '吼吼' AND `siteid` = '1' LIMIT 1 MySQL Error : Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (gbk_chinese_ci,COERCIBLE) for operation '=' MySQL

workbench的二次开发 相关例子 代码跟文章

问题描述 workbench的二次开发 相关例子 代码跟文章 现在我需要对workbench进行二次开发,但是不知道如何入手,查了一些文章,但是都没有具体的说明,只是说有SDK等,没有具体的例子跟代码,有没有大神能够提供一些这方面的文章.例子跟代码,万分感谢!

PHPCMSV9 二次开发

更多二次开发技巧,查看phpcms系统帮助 ,前台模板解析后的缓存 caches\caches_template\default 前台控制类index.php,前台标签类*_tag.class.php,前台需要的变量可以在前台控制类,前台标签类配合组合返回   添加一个新功能模块,他的信息存储用文章模型字段有些不能满足 ,一般采取哪些方法解决? 1.可以直接在数据库上加字段(后台模型管理--文章模型---字段管理,或数据库中直接加) 2.自定义新的字段模型(后台模型管理--添加模型) 3.直接建