15621857753

phpcmsV9后台实现相关文章可调用其它模型信息

来源:齐鲁建站 栏目:开发教程 阅读: 日期:2021-02-10

本文主要介绍了PHPCMSV9后台实现相关文章可调用其它模型信息,由于业务需要,模型a的内容选择模型b的内容作为相关文章,在论坛论坛上搜索。基本上,这个问题没有人能解决。经过研究,它最终得到了解决。

下面就由齐鲁建站小编和大伙儿说说phpcmsV9后台实现相关文章可调用其它模型信息的方法。

实现教程:

1.修改系统默认的relation字段表单代码如下:

1 <input type='hidden' name='info[你的字段名]' id='你的字段名' value='{FIELD_VALUE}' style='50' >
2 <ul class="list-dot" id="你的字段名_text"></ul>
3 <div>
4 <input type='button' value="添加相关" onclick="omnipotent('selectid','?m=content&c=content&a=public_relationlist&modelid=目标模型ID&modelname=你的字段名','添加相关文章',1)" class="button" style="width:66px;">
5 <span class="edit_content">
6 <input type='button' value="显示已有" onclick="show_myrelation(当前模型ID,目标模型ID,{ID},'你的字段名')" class="button" style="width:66px;">
7 </span>
8 </div>

2.打开网站根目录文件statics\js\content_addtop.js

修改remove_relation方法为

1 function remove_relation(sid, id, modelname) {
2     var relation_ids = $('#' + modelname).val();
3     if (relation_ids != '') {
4         $('#' + sid).remove();
5         var r_arr = relation_ids.split('|');
6         var newrelation_ids = '';
7         $.each(r_arr, function(i, n) {
8             if (n != id) {
9                 if (i == 0) {
10                     newrelation_ids = n;
11                 } else {
12                     newrelation_ids = newrelation_ids + '|' + n;
13                 }
14             }
15         });
16         $('#' + modelname).val(newrelation_ids);
17     }
18 }

修改show_relation函数为:

1 function show_relation(modelid, id, fieldname) {
2     $.getJSON("?m=content&c=content&a=public_getjson_ids&modelid=" + modelid + "&id=" + id, function(json) {
3         var newrelation_ids = '';
4         if (json == null) {
5             alert('没有添加相关文章');
6             return false;
7         }
8         $.each(json, function(i, n) {
9             newrelation_ids += "<li id='" + n.sid + "'>·<span>" + n.title + "</span><a href='javascript:;' class='close' οnclick=\"remove_relation('" + n.sid + "'," + n.id + ",'" + fieldname + "')\"></a></li>";
10         });
11         $('#relation_text').html(newrelation_ids);
12     });
13 }

新增show_myrelation方法:

1 function show_myrelation(modelid, modelid2, id, fieldname) {
2     $.getJSON("?m=content&c=content&a=public_getjson_ids2&modelid=" + modelid + "&modelid2=" + modelid2 + "&id=" + id + "&fieldname=" + fieldname, function(json) {
3         var newrelation_ids = '';
4         if (json == null) {
5             alert('没有添加相关文章');
6             return false;
7         }
8         $.each(json, function(i, n) {
9             newrelation_ids += "<li id='" + n.sid + "'>·<span>" + n.title + "</span><a href='javascript:;' class='close' οnclick=\"remove_relation('" + n.sid + "'," + n.id + ",'" + fieldname + "')\"></a></li>";
10         });
11         $('#' + fieldname + '_text').html(newrelation_ids);
12     });
13 }

3.打开phpcms\modules\content\content.php文件

修改public_relationlist方法为

1 public function public_relationlist() {
2         $modelname=$_GET['modelname'];
3         pc_base::load_sys_class('format','',0);
4         $show_header = '';
5         $model_cache = getcache('model','commons');
6         if(!isset($_GET['modelid'])) {
7             showmessage(L('please_select_modelid'));
8         } else {
9             $page = intval($_GET['page']);
10             
11             $modelid = intval($_GET['modelid']);
12             $this->db->set_model($modelid);
13             $where = '';
14             if($_GET['catid']) {
15                 $catid = intval($_GET['catid']);
16                 $where .= "catid='$catid'";
17             }
18             $where .= $where ?  ' AND status=99' : 'status=99';
19             
20             if(isset($_GET['keywords'])) {
21                 $keywords = trim($_GET['keywords']);
22                 $field = $_GET['field'];
23                 if(in_array($field, array('id','title','keywords','description'))) {
24                     if($field=='id') {
25                         $where .= " AND `id` ='$keywords'";
26                     } else {
27                         $where .= " AND `$field` like '%$keywords%'";
28                     }
29                 }
30             }
31 
32             $infos = $this->db->listinfo($where,'',$page,12);
33             $pages = $this->db->pages;
34             include $this->admin_tpl('relationlist');
35         }
36     }

新增方法public_getjson_ids2: 

1 public function public_getjson_ids2() {
2     $modelid = intval($_GET['modelid']);
3     $modelid2 = intval($_GET['modelid2']);
4     $fieldname = $_GET['fieldname'];
5     $id = intval($_GET['id']); 
6     $this->db->set_model($modelid); 
7     $tablename = $this->db->table_name; 
8     $this->db->table_name = $tablename.'_data'; 
9     $r = $this->db->get_one(array('id'=>$id),$fieldname); 
10     if($r["{$fieldname}"]) { $myrelation = str_replace('|', ',', $r["{$fieldname}"]); 
11     $myrelation = trim($myrelation,','); $where = "id IN($myrelation)"; $infos = array();
12     $this->db->set_model($modelid2);
13     $this->model = getcache('model', 'commons');
14     $this->db->table_name = $this->db->db_tablepre.$this->model[$modelid2]['tablename'];
15     $datas = $this->db->select($where,'id,title');
16     foreach($datas as $_v) { $_v['sid'] = 'v'.$_v['id'];
17     if(strtolower(CHARSET)=='gbk') $_v['title'] = iconv('gbk', 'utf-8', $_v['title']); $infos[] = $_v;
18     }
19     echo json_encode($infos);
20     }
21 }

4.打开phpcms\modules\content\templates\relationlist.tpl.php文件,在public_relationlist action下增加一个参数传递用于修复搜索后不能添加的问题

<input type="hidden" value="public_relationlist" name="a">/*在下面增加*/
<input type="hidden" value="<?php echo($modelname)?>" name="modelname">

后修改

<?php foreach($infos as $r) {?>
<tr οnclick="select_list(this,'<?php echo safe_replace($r['title']);?>',<?php echo $r['id'];?>,'<?php echo $Mname;?>')" 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 }?>

以及最后的JavaScript

1 <SCRIPT LANGUAGE = "JavaScript" >
2     < !--
3         function select_list(obj, title, id, modelname) {
4             var relation_ids = window.top.$('#' + modelname).val();
5             var sid = 'v<?php echo $modelid;?>' + id;
6             if ($(obj).attr('class') == 'line_ff9966' || $(obj).attr('class') == null) {
7                 $(obj).attr('class', 'line_fbffe4');
8                 window.top.$('#' + sid).remove();
9                 if (relation_ids != '') {
10                     var r_arr = relation_ids.split('|');
11                     var newrelation_ids = '';
12                     $.each(r_arr, function (i, n) {
13                         if (n != id) {
14                             if (i == 0) {
15                                 newrelation_ids = n;
16                             } else {
17                                 newrelation_ids = newrelation_ids + '|' + n;
18                             }
19                         }
20                     });
21                     window.top.$('#' + modelname).val(newrelation_ids);
22                 }
23             } else {
24                 $(obj).attr('class', 'line_ff9966');
25                 var str = "<li id='" + sid + "'><span>" + title + "</span><a href='javascript:;' class='close' οnclick=\"remove_relation('" + sid + "'," + id + ",'<?php echo $modelname;?>')\"></a></li>";
26                 window.top.$('#' + modelname + '_text').append(str);
27                 if (relation_ids == '') {
28                     window.top.$('#' + modelname).val(id);
29                 } else {
30                     relation_ids = relation_ids + '|' + id;
31                     window.top.$('#' + modelname).val(relation_ids);
32                 }
33             }
34         }
35     //-->
36     < /SCRIPT>

功能修改完毕

5.前台调用

添加了相关文章后

1 <div class="card-body">
2                 {if $relationC!=''}
3                 {php $rel = explode('|',$relationC);}
4                 {loop $rel $picture_id}
5                 {pc:get sql="select * from lvv9_news where id=$picture_id"} 
6                 {loop $data $r}
7                 <div>
8                         <a href="{$r[url]}" title="{$r[alt]}"><img class="img-fluid" src="{thumb($r[thumb],200,150,0)}" alt="{$r[title]}"/></a>
9                         <p><a href="{$r[url]}" title="{$r[title]}">{$r[title]}</a></p>
10                 </div>
11 
12                 {/loop}
13                 {/pc}
14                 {/loop}
15                 {/if}
16             </div>

其中亮黄的部分为我的字段名称和数据库文章模型的表名,替换即可!

展开