不過這個(gè)解決方法修改了一些文件,你可以根據(jù)自己的要求酌情使用。。我在這里也詳細(xì)說一下解決思路,以便后來人參考學(xué)習(xí)。
PHPCMSV9的相關(guān)文章,我們知道只有同模型的文章才可以選擇。其他模型的文章是選擇不成的,可以通過修改模型字段中的“相關(guān)參數(shù)”來實(shí)現(xiàn)選擇不同的 模型的文章,但這種方法其實(shí)只是實(shí)現(xiàn)了一半,雖然能選擇了,但是選擇保存后,再進(jìn)入編輯是不會(huì)顯示的,基本相當(dāng)于沒有實(shí)現(xiàn)嘛。
說一下我的解決方法。
以我的項(xiàng)目,舉個(gè)例子。有兩個(gè)模型,設(shè)計(jì)師(模型ID是1),設(shè)計(jì)案例(模型ID為2). 他們的模型ID很重要,后面要用到的。
我要在設(shè)計(jì)師的內(nèi)容中添加設(shè)計(jì)案例的內(nèi)容作為設(shè)計(jì)師的相關(guān)作品。
首先,在模型管理的設(shè)計(jì)師模型中,修改相關(guān)文章的“相關(guān)參數(shù)”這里面的值。
找到這行語句,把
<input type='button' value="添加相關(guān)" onclick="omnipotent('selectid','?m=content&c=content& a=public_relationlist&modelid={MODELID}','添加相關(guān)文章',1)" class="button" style="width:66px;">
修改為:
<input type='button' value="添加相關(guān)" onclick="omnipotent('selectid','?m=content&c=content&a=public_relationlist&modelid=2','添加相關(guān)文章',1)" class="button" style="width:66px;">
其實(shí)只是把上面的 {MODELID} 換成了目標(biāo)模型ID(設(shè)計(jì)案例模型的ID)罷了。
這一步已經(jīng)可以實(shí)現(xiàn)了選擇不同模型的文章。
接下來解決選擇后保存后再進(jìn)入編輯不會(huì)顯示的問題。
還是找到型管理的設(shè)計(jì)師模型中,修改相關(guān)文章的“相關(guān)參數(shù)”這里面的值。
把
<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}是調(diào)用本文章的所屬模型ID
我修改為show_relation(1,2,{ID}),懂的朋友一看就知道,我多了一個(gè)參數(shù)。為什么多了一個(gè)參數(shù)呢,上面也說到了,默認(rèn)只有同模型的文章可以選擇,所以這里做了一個(gè)目標(biāo)模型ID。第一個(gè)參數(shù)是源模型ID,第二個(gè)參數(shù)是目標(biāo)模型ID。
這里面修改后保存。
show_relation()這個(gè)是JS函數(shù),既然多了一個(gè)參數(shù),那我們也要修改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文件。
找到\phpcms\modules\content\content.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;” 這一行是被上面第三行替換了。