zoukankan      html  css  js  c++  java
  • 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="66px;">
    <span class="edit_content">
    <input type='button' value="显示已有" onclick="show_rt({MODELID},{ID})" class="button" style="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="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>
    

      

  • 相关阅读:
    js将数字转为千分位/清除千分位
    mybatis中的$和#的区别
    js处理title超长问题
    mybatis错误 Mapped Statements collection does not contain value for
    bootstrap添加多个模态对话框支持
    java.util.Collections.copy()方法注意点
    list通过比较器进行排序
    jquery对radio和checkbox的操作
    c++类简介
    c++ 类
  • 原文地址:https://www.cnblogs.com/fslnet/p/4543574.html
Copyright © 2011-2022 走看看