不過這個解決方法修改了一些文件,你可以根據自己的要求酌情使用。。我在這里也詳細說一下解決思路,以便后來人參考學習。
PHPCMSV9的相關文章,我們知道只有同模型的文章才可以選擇。其他模型的文章是選擇不成的,可以通過修改模型字段中的“相關參數”來實現選擇不同的 模型的文章,但這種方法其實只是實現了一半,雖然能選擇了,但是選擇保存后,再進入編輯是不會顯示的,基本相當于沒有實現嘛。
說一下我的解決方法。
以我的項目,舉個例子。有兩個模型,設計師(模型ID是1),設計案例(模型ID為2). 他們的模型ID很重要,后面要用到的。
我要在設計師的內容中添加設計案例的內容作為設計師的相關作品。
首先,在模型管理的設計師模型中,修改相關文章的“相關參數”這里面的值。
找到這行語句,把
<input type='button' value="添加相關" onclick="omnipotent('selectid','?m=content&c=content& a=public_relationlist&modelid={MODELID}','添加相關文章',1)" class="button" style="width:66px;">
修改為:
<input type='button' value="添加相關" onclick="omnipotent('selectid','?m=content&c=content&a=public_relationlist&modelid=2','添加相關文章',1)" class="button" style="width:66px;">
其實只是把上面的 {MODELID} 換成了目標模型ID(設計案例模型的ID)罷了。
這一步已經可以實現了選擇不同模型的文章。
接下來解決選擇后保存后再進入編輯不會顯示的問題。
還是找到型管理的設計師模型中,修改相關文章的“相關參數”這里面的值。
把
<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}是調用本文章的所屬模型ID
我修改為show_relation(1,2,{ID}),懂的朋友一看就知道,我多了一個參數。為什么多了一個參數呢,上面也說到了,默認只有同模型的文章可以選擇,所以這里做了一個目標模型ID。第一個參數是源模型ID,第二個參數是目標模型ID。
這里面修改后保存。
show_relation()這個是JS函數,既然多了一個參數,那我們也要修改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;” 這一行是被上面第三行替換了。
OK。大功告成。
因為已經破壞了原生的相關文章功能了。如果你以后再使用相關文章的功能時,要記得先到模型的字段中的“相關參數”的值哦。
在前臺調用相關文章時,用下列標簽:
if $relation!=''}
{php $rel = explode('|',$relation);}
{loop $rel $design_id} </p> <p> {pc:get sql="select title,id,url,thumb from v9_design where id=$design_id"}
{loop $data $r}
<td class="pr5"><a href="http://www.zmynmublwnt.cn/blog/{$r[url]}" title="{$r[title]}" target="_blank"><img src="http://www.zmynmublwnt.cn/blog/{$r[thumb]}" width="190" height="120" class="imgborder" alt="{$r[title]}" /></a><p class="mt5"><a href="http://zhujllove.blog.163.com/blog/{$r[url]}" title="{$r[title]}" target="_blank">{str_cut($r[title],'32')}</a></p></td>
{/loop}
{/pc}</p> <p>{/loop}
{/if}