phpcms 移植【添加相关文章】功能

添加相关文章功能相当有用,移植一个过来基本上可以实现比较复杂的页面内包含分类功能,做二次开发时可以省下不少力气。

用例:如果一个产品,属于一个厂家,而这个厂家是动态添加的,既不是一个分类,而是一个厂家的模型,这二者关联的时候使用这个添加相关的功能可以轻易实现。

学会使用phpcms中的类别管理和推荐位管理基本上可以满足文章管理的多数场景,如果能够理解mysql表的设计,可以使用模型管理这个大杀器,

基本上能够想到的功能都能实现,最后再对【添加相关文章】功能进行设计和移植,模型功能能够再次爆发威力,进行各种关系映射。前台配合ajax和json,以及数据表的query函数可以整合实现相当复杂的功能和页面。

1,模型管理中添加一个万能字段。

然后在表单栏中填写:

<input type=‘hidden‘ name=‘info[rt]‘ id=‘rt‘ value=‘{FIELD_VALUE}‘ style=‘50‘ >
<ul class="list-dot" id="rt_text"></ul>
<div>
<input type=‘button‘ value="添加相关" onclick="omnipotent(‘selectid‘,‘?m=content&c=content&a=public_rtlist&modelid=29‘,‘添加相关文章‘,1)" class="button" style="width:66px;">
<span class="edit_content">
<input type=‘button‘ value="显示已有" onclick="show_rt({MODELID},{ID})" class="button" style="width:66px;">
</span>
</div>

注意上面的标红字体,需要和相关参数关联

2,在文章修改页面添加如下函数

function show_rt(modelid,id) {
$.getJSON("?<?php echo "token=".$_SESSION[‘token‘];?>&m=content&c=content&a=rt_getjson_ids&modelid="+modelid+"&id="+id, function(json){
var newrt_ids = ‘‘;
if(json==null) {
alert(‘没有添加相关文章‘);
return false;
}

$.each(json, function(i, n){
newrt_ids += "<li id=‘"+n.sid+"‘>·<span>"+n.title+"</span><a href=‘javascript:;‘ class=‘close‘ onclick=\"remove_rt(‘"+n.sid+"‘,"+n.id+")\"></a></li>";
});

$(‘#rt_text‘).html(newrt_ids);
});
}

//移除相关文章
function remove_rt(sid,id) {
var rt_ids = $(‘#rt‘).val();
if(rt_ids !=‘‘ ) {
$(‘#‘+sid).remove();
var r_arr = rt_ids.split(‘|‘);
var newrt_ids = ‘‘;
$.each(r_arr, function(i, n){
if(n!=id) {
if(i==0) {
newrt_ids = n;
} else {
newrt_ids = newrt_ids+‘|‘+n;
}
}
});
$(‘#rt‘).val(newrt_ids);
}
}

3,在content.php中填写如下函数

public function public_rtlist() {
ec_main::get_lib_c(‘format‘,‘‘,0);
$show_header = ‘‘;
$model_cache = getcache(‘model‘,‘commons‘);
if(!isset($_GET[‘modelid‘])) {
showmessage(L(‘please_select_modelid‘));
} else {
$page = intval($_GET[‘page‘]);

$modelid = intval($_GET[‘modelid‘]);
$this->db->set_model($modelid);
$where = ‘‘;
if($_GET[‘catid‘]) {
$catid = intval($_GET[‘catid‘]);
$where .= "catid=‘$catid‘";
}
$where .= $where ? ‘ AND status=99‘ : ‘status=99‘;

if(isset($_GET[‘keywords‘])) {
$keywords = trim($_GET[‘keywords‘]);
$field = $_GET[‘field‘];
if(in_array($field, array(‘id‘,‘title‘,‘keywords‘,‘description‘))) {
if($field==‘id‘) {
$where .= " AND `id` =‘$keywords‘";
} else {
$where .= " AND `$field` like ‘%$keywords%‘";
}
}
}
$infos = $this->db->listinfo($where,‘‘,$page,12);
$pages = $this->db->pages;
include $this->admin_tpl(‘rtlist‘);
}
}

public function rt_getjson_ids() {
$modelid = intval($_GET[‘modelid‘]);
$id = intval($_GET[‘id‘]);
$this->db->set_model($modelid);
$tablename = $this->db->table_name;
$this->db->table_name = $tablename.‘_data‘;

$r = $this->db->get_one(array(‘id‘=>$id),‘rt‘);

if($r[‘rt‘]) {
$rt = str_replace(‘|‘, ‘,‘, $r[‘rt‘]);
$rt = trim($rt,‘,‘);
$where = "id IN($rt)";
$infos = array();
$this->db->table_name = ‘ec_chang‘;
$datas = $this->db->select($where,‘id,title‘);
foreach($datas as $_v) {
$_v[‘sid‘] = ‘v‘.$_v[‘id‘];
if(strtolower(CHARSET)==‘gbk‘) $_v[‘title‘] = iconv(‘gbk‘, ‘utf-8‘, $_v[‘title‘]);
$infos[] = $_v;
}
echo json_encode($infos);

}

}

5增加模板rtlist.tpl.php[content/tpl]

<?php
defined(‘IN_ADMIN‘) or exit(‘No permission resources.‘);
include $this->admin_tpl(‘header‘,‘admin‘);
?>
<div class="pad-10">
<form name="searchform" action="" method="get" >
<input type="hidden" value="content" name="m">
<input type="hidden" value="content" name="c">
<input type="hidden" value="public_rtlist" name="a">
<input type="hidden" value="<?php echo $modelid;?>" name="modelid">
<table width="100%" cellspacing="0" class="search-form">
    <tbody>
		<tr>
		<td align="center">
		<div class="explain-col">
				<select name="field">
					<option value=‘title‘ <?php if($_GET[‘field‘]==‘title‘) echo ‘selected‘;?>><?php echo L(‘title‘);?></option>
					<option value=‘keywords‘ <?php if($_GET[‘field‘]==‘keywords‘) echo ‘selected‘;?> ><?php echo L(‘keywords‘);?></option>
					<option value=‘description‘ <?php if($_GET[‘field‘]==‘description‘) echo ‘selected‘;?>><?php echo L(‘description‘);?></option>
					<option value=‘id‘ <?php if($_GET[‘field‘]==‘id‘) echo ‘selected‘;?>>ID</option>
				</select>
				<?php echo form::select_category(‘‘,$catid,‘name="catid"‘,L(‘please_select_category‘),$modelid,0,1);?>
				<input name="keywords" type="text" value="<?php echo stripslashes($_GET[‘keywords‘])?>" style="width:330px;" class="input-text" />
				<input type="submit" name="dosubmit" class="button" value="<?php echo L(‘search‘);?>" />
	</div>
		</td>
		</tr>
    </tbody>
</table>
</form>
<div class="table-list">
    <table width="100%" cellspacing="0" >
        <thead>
            <tr>
            <th ><?php echo L(‘title‘);?></th>
			<th width="100"><?php echo L(‘belong_category‘);?></th>
            <th width="100"><?php echo L(‘addtime‘);?></th>
            </tr>
        </thead>
    <tbody>
	<?php foreach($infos as $r) { ?>
	<tr onclick="select_list(this,‘<?php echo safe_replace($r[‘title‘]);?>‘,<?php echo $r[‘id‘];?>)" class="cu" title="<?php echo L(‘click_to_select‘);?>">
		<td align=‘left‘ ><?php echo $r[‘title‘];?></td>
		<td align=‘center‘><?php echo $this->categorys[$r[‘catid‘]][‘catname‘];?></td>
		<td align=‘center‘><?php echo format::date($r[‘inputtime‘]);?></td>
	</tr>
	 <?php }?>
	    </tbody>
    </table>
   <div id="pages"><?php echo $pages;?></div>
</div>
</div>
<style type="text/css">
 .line_ff9966,.line_ff9966:hover td{
	background-color:#FF9966;
}
 .line_fbffe4,.line_fbffe4:hover td {
	background-color:#fbffe4;
}
</style>
<SCRIPT LANGUAGE="JavaScript">
<!--
	function select_list(obj,title,id) {
		var rt_ids = window.top.$(‘#rt‘).val();
		var sid = ‘v<?php echo $modelid;?>‘+id;
		if($(obj).attr(‘class‘)==‘line_ff9966‘ || $(obj).attr(‘class‘)==null) {
			$(obj).attr(‘class‘,‘line_fbffe4‘);
			window.top.$(‘#‘+sid).remove();
			if(rt_ids !=‘‘ ) {
				var r_arr = rt_ids.split(‘|‘);
				var newrt_ids = ‘‘;
				$.each(r_arr, function(i, n){
					if(n!=id) {
						if(i==0) {
							newrt_ids = n;
						} else {
						 newrt_ids = newrt_ids+‘|‘+n;
						}
					}
				});
				window.top.$(‘#rt‘).val(newrt_ids);
			}
		} else {
			$(obj).attr(‘class‘,‘line_ff9966‘);
			var str = "<li id=‘"+sid+"‘>·<span>"+title+"</span><a href=‘javascript:;‘ class=‘close‘ onclick=\"remove_rt(‘"+sid+"‘,"+id+")\"></a></li>";
			window.top.$(‘#rt_text‘).append(str);
			if(rt_ids ==‘‘ ) {
				window.top.$(‘#rt‘).val(id);
			} else {
				rt_ids = rt_ids+‘|‘+id;
				window.top.$(‘#rt‘).val(rt_ids);
			}
		}
}
//-->
</SCRIPT>
</body>
</html>

  

时间: 2024-10-10 06:31:34

phpcms 移植【添加相关文章】功能的相关文章

php自动添加相关文章

{pc:content action="relation" relation="$relation" id="$id" catid="$catid" num="20" order="id desc" keywords="$rs[keywords]"} {loop $data $r} <a href="{$r[url]}" title=&quo

PHPCMS V9 relation 后台添加文章 选择“相关文章” 可调用其它模型文章 的解决办法

问题:在添加文章时候选择相关文章只能是本模型下的栏目文章,如果想选用其他模型的文章该如何做? 思路:添加一个自己的相关文章字段 实现: 1.修改系统默认的relation字段表单代码如下: 1 <input type='hidden' name='info[你的字段名]' id='你的字段名' value='{FIELD_VALUE}' style='50' > 2 <ul class="list-dot" id="你的字段名_text">&

添加顶踩功能

phpcms如何添加顶踩功能步骤: 1.在后台模型增加两个字段,一个goodpost,一个badpost;这个步骤简单,按后台新增加字段下一步就行了. 2.在模块/phpcms/modules/content/增加扩展函数newindex.php,代码如下: <?php defined('IN_PHPCMS') or exit('No permission resources.'); class newindex{ function __construct(){ $this->db=pc_ba

phpcms 内容——&gt;评论管理 中添加 打开文章链接的 功能

需要实现的功能:在后台管理系统中的 内容 下的——>评论管理  中添加 打开文章链接的 功能 1.数据库表是 v9_comment和v9_comment_data_1. v9_comment是被评论文章的信息.id,title,url等.主要是url是文章的链接 phpcms 把文章的链接是记录到数据库里面的,直接调用下就好了,要不然就有得你忙了.直接在后台能打开这个链接,开辟一个捷径. 2.打开/phpcms/modules/comment/templates/comment_listinfo

修改PHPCMS V9相关文章、专题listorder、order排序功能的方法

phpcms v9自带的相关文章.专题等模块不支持order排序,调用的相关文章.专题默认为升序,这样就造成了一个问题,调出来的相关文章是最早的文章,没有时效性.我们只能通过修改程序文件,只需简单修改一个文件,就能达到我们的需求. 修改相关文章排序的方法: 打开根目录下的phpcms/modules/content/classes/content_tag.class.php,找到 $r = $this->db->select($sql2, '*', $limit, '','','id'); 修

添加相关功能

第二章 添加相关功能 本项目需要用到的板载资源包括:GPIO.串口3路.定时器中断.外部中断. GPIO配置 串口配置 串口初始化 下面给出三路串口的接收和发送对应的IO口: 串口号 发送(TX) 接收(RX) debugUsart(USART1) PA9 PA10 printUsart(USART2) PA2 PA3 lcdUsart(USART3) PB10 PB11 表 1串口管脚分布 在BSP.c文件中定义如下三个串口初始化函数,同时将这三行添加到BSP.h文件里,对函数进行声明: (1

相关文章、关联文章、产品功能开发方案

内容管理系统,如文章管理.产品管理的时候,经常会出现这样的场景:某篇文章为系列文章,或者为系列产品,然后需要这个系列的文章/产品在展示的时候,展示出同系列的文章或者产品.同时,在后台管理的时候,需要在有关联关系后,能对关联关系进行管理(增删改查). 这样的需求,因为考虑到信息维护的唯一性,原计划是新增数据表,用中间数据表对关键结构进行存储管理,这样更规范,也不用对原来的文章数据进行破坏,不增加大数据量的文章表字段.不过后来考虑到后期在管理的时候,工程量开发更大,就抛弃了这个方案. 还是用最简单的

gradle多项目构建、添加logback日志功能、以及相关配置

项目模块化 1.所有项目使用java插件(这里以java为例,伙计们根据自己的项目决定) 在根项目的build.grdle中配置,子项目中的参数删除 allprojects {//对所有项目应用 apply plugin: 'java' sourceCompatibility = 1.8 } //特殊应用的模块在直接的build.gradle中声明即可 这里的配置是有顺序的allprojects必须在subprojects的上方(别问我为啥.说多了都是泪) 2.配置Web子项目打包成war 在w

使用EasyUI实现添加和删除功能

        增删该查是任何一个项目都少不了的功能操作,这篇博文主要简介一下如何使用EasyUI实现添加和删除功能.         首先,导入EasyUI的js代码: <link href="~/EasyuiSource/themes/default/easyui.css" rel="stylesheet" /> <link href="~/EasyuiSource/themes/icon.css" rel="st