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

问题:在添加文章时候选择相关文章只能是本模型下的栏目文章,如果想选用其他模型的文章该如何做?

思路:添加一个自己的相关文章字段

实现:

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‘ onclick=\"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‘ onclick=\"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 onclick="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‘ onclick=\"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>

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

6.感谢

感谢https://www.eqifei.net/post-268.html#comments 这个地址的文章



原文地址:https://www.cnblogs.com/tianchengcheng/p/9125661.html

时间: 2024-09-30 21:29:33

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

PHPCMS v9 实现首页,列表页,内容页调用点击量方法

大家好,今天有点闲,看很多朋友经常问PHPCMS v9 首页,列表页,内容页调用点击怎么弄,打算抽时间把代码全部归纳出来,以便大家日后使用,如下: 1,首页调用点击量 {pc:content action="lists" catid="$r[catid]" num="5" order="id DESC" return="info"} {php $categorys = getcache('category_

phpcms v9升级后台无法上传缩略图的原因分析

phpcms V9 是目前国内使用人数最多的一款开源免费的CMS系统,正是由于他的免费性,开源性,以及其自身的功能性比较强大,所以倍受许多站长朋友们的亲来,以及许多的公司的喜欢.phpcms也为了完善程序漏洞,官方人员会经常性的发布一些程序补丁,让用户使用.防止一些特殊群体,通过程序的漏洞去攻击别人的网站.不过这次更新了phpcms v9之后,发现网站后台上传缩略图的时候,会出现无法上传的现象,浏览器提示undefined错误,经过一方面的测试,发现这个错误,只有一些火狐核心的浏览器才会出现,I

phpcms v9 新闻内容按列表的评论数排序调用代码

phpcms v9 指定栏目下新闻列表按评论数排序的调用 调用一个指定栏目下按评论数排序的新闻列表 {pc:get sql="select * from phpcms_comment where commentid like 'content_指定栏目的catid%' order by total desc" rows="9" return="data"}  {loop $data $r}  {str_cut($r[title],60,'')} 

phpcms v9更改后台文章排序的方法

后台文章排序怎么才可以按自己输入的数字排列?如按4,3,2,1,从大到小排列?实现方法如下: 修改文件: phpcms\modules\content 中的 content.php 代码如下: $datas = $this->db->listinfo($where,'id desc',$_GET['page']); 改成 代码如下: $datas = $this->db->listinfo($where,'listorder ASC, id desc',$_GET['page'])

phpcms v9屏蔽后台登陆验证码的方法

打开\phpcms\modules\admin\index.php 替换前 $code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : showmessage(L('input_code'), HTTP_REFERER);if ($_SESSION['code'] != strtolower($code)) {showmessage(L('code_error'), HTTP_REFERER)

php后台网站退出用session_destroy()出现Session object destruction failed错误的解决办法

session_unset(); session_destroy(); echo "<script language=javascript>parent.location.href='Admin_Login.php'</script>"; 用这个命令,总是退出不了后台,提示session_destroy()失败,遇就遇到过这个问题,之前一直以为是PHP版本的问题,所以一直没有在意,今天想把这个问题彻底解决,所以研究了一下才发现,原来不是PHP版本的问题,而是存放

js新添加的标签,点击事件无效的原因和解决办法

对于新添加的标签应用如下写法会失效: $('.class').on("click",function(){--});相当于: $('.class').bind("click",function(){--});下边的方法会生效: $(document).on("click",'.class',function(){--});相当于: $('.class').live("click",function(){--});新版本的jqu

cocos2dx添加新的类后出现错误undefined reference to的解决办法

使用cocos compile -p android编译cocos2dx项目的时候出现如下错误(新建了TestScene.h,TestScene.cpp): jni/../../Classes/AppDelegate.cpp:79: error: undefined reference to 'TestScene::createScene()' clang++.exe: error: linker command failed with exit code 1 (use -v to see in

用PHPcms V9四步完成WAP手机站搭建

用PHPCMS最新发布的V9搭建了ONOW中文网,WEB网站(www.onow.cn)完成后,有用户提供手机访问的问题, 于是着手搭建ONOW手机WAP站(3g.onow.cn). 用PHPCMS V9完成wap搭建需要以下几步: 第一步:域名解析并建站 进入域名管理,建立A记录,解析至相应的IP地址,比如将3g.onow.cn 解析至202.165.183.10 , 在WEB服务设置中(IIS或apache)中建站,主目录与www.onow.cn的主目录一致, 但默认首页要设成index.ph