首先,第一步在数据表phome_ecms_shop_data_1(商城系统数据副表)上添加一个名字为shiyongid的字段,使用phpmyadmin打开该数据表,执行以下SQL语句:
ALTER TABLE `phome_ecms_shop_data_1` ADD `shiyongid` CHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' AFTER `keyid`
也可以使用phpmyadmin的操作界面上进行添加,如下图所示:
使用phpmyadmin在数据表上添加字段前选择该字段的插入位置
除了名字之外,其他(类型、长度/值、默认、整理)都跟相关链接keyid字段的一样填写,填写完之后点击保存按钮。
第二步,打开/e/admin/AddNews.php文件,按照以下提示添加额外的代码并保存。
//找到以下代码 <?php include($modfile); ?> //在以上代码下面添加以下代码 <?php if(!empty($classid) && $classid==10){ ?> <table width="100%" align="center" cellpadding="3" cellspacing="1"> <tr> <td width="16%" height="25">适用模型</td> <td> <a href="javascript:;" title="查看和编辑适用模型" onclick="window.open('info/OtherProduct.php?<?=$ecms_hashur['ehref']?>&classid=<?=$classid?>&id=<?=$id?>&enews=<?=$enews?>&form=add&field=info_shiyongid&shiyongid='+document.add.info_shiyongid.value+'&keyboard='+encodeURIComponent(document.add.keyboard.value)+'&title='+encodeURIComponent(document.add.title.value),'','width=800,height=550,scrollbars=yes,resizable=yes');">编辑适用模型</a> <input name="info_shiyongid" type="hidden" id="info_shiyongid" value="<?=$r[shiyongid]?>"> </td> </tr> </table> <?php } ?>
第三步,在/e/admin/info文件夹里新建以下三个文件:
OtherProduct.php
OtherProductShow.php
OtherProductSearch.php
已为你准备好,可点击下载。
第四步,打开/e/class/connect.php文件,搜索function ReturnSqlFtextF($mid)函数,并修改为如下代码所示:
//返回内容副表查询字段 function ReturnSqlFtextF($mid){ global $emod_r; if(empty($mid)) { return "*"; } //为商品系统模型时,添加shiyongid字段 if(!empty($mid) && $mid==6) { $f="keyid,shiyongid,dokey,newstempid,closepl,infotags".substr($emod_r[$mid]["tbdataf"],0,-1); } else { $f="keyid,dokey,newstempid,closepl,infotags".substr($emod_r[$mid]["tbdataf"],0,-1); } return $f; }
第五步,打开/e/class/hinfofun.php文件,在文件里面添加一个适用模型ID处理的函数,如下代码所示:
//适用模型ID处理 function DoPostDiyShiyongID($shiyongid){ if(!$shiyongid||$shiyongid==",") { return ""; } $new_shiyongid=""; $dh=""; $r=explode(",",$shiyongid); $count=count($r); for($i=0;$i<$count;$i++) { $r[$i]=(int)$r[$i]; if(!$r[$i]) { continue; } $new_shiyongid.=$dh.$r[$i]; $dh=","; } return $new_shiyongid; }
接着需要修改AddNews()函数和EditNews()函数,AddNews()函数涉及的修改如下代码所示:
//Begin找到以下这段代码 //返回关键字组合 if($add['info_diyotherlink']) { $keyid=DoPostDiyOtherlinkID($add['info_keyid']); } else { $keyid=GetKeyid($add[keyboard],$add[classid],0,$class_r[$add[classid]][link_num]); } //End //在以上代码段的下面添加以下代码,增加信息时需要处理适用模型字段的值。 //商品系统模型ID等于6 if($class_r[$add[classid]][modid] == 6) $shiyongid = DoPostDiyShiyongID($add['info_shiyongid']);
//Begin找到以下这段代码 //副表 $finfosql=$empire->query("insert into ".$infotbr['datatbname']."(id,classid,keyid,dokey,newstempid,closepl,haveaddfen,infotags".$ret_r['datafields'].") values('$id','$add[classid]','$keyid','$add[dokey]','$add[newstempid]','$add[closepl]',0,'".addslashes($add[infotags])."'".$ret_r['datavalues'].");"); //End //将以上代码段修改为以下的代码段。 //副表 //商品系统模型ID等于6 if($class_r[$add[classid]][modid] == 6) { $finfosql=$empire->query("insert into ".$infotbr['datatbname']."(id,classid,keyid,shiyongid,dokey,newstempid,closepl,haveaddfen,infotags".$ret_r['datafields'].") values('$id','$add[classid]','$keyid','$shiyongid','$add[dokey]','$add[newstempid]','$add[closepl]',0,'".addslashes($add[infotags])."'".$ret_r['datavalues'].");"); } else { $finfosql=$empire->query("insert into ".$infotbr['datatbname']."(id,classid,keyid,dokey,newstempid,closepl,haveaddfen,infotags".$ret_r['datafields'].") values('$id','$add[classid]','$keyid','$add[dokey]','$add[newstempid]','$add[closepl]',0,'".addslashes($add[infotags])."'".$ret_r['datavalues'].");"); }
EditNews()函数涉及的修改如下代码所示:
//Begin找到以下这段代码 //返回关键字组合 if($add['info_diyotherlink'])//1为手动相关链接 { $keyid=DoPostDiyOtherlinkID($add['info_keyid']); } else//0按关键字查询 { $keyid=GetKeyid($add[keyboard],$add[classid],$add[id],$class_r[$add[classid]][link_num]); } //End //在以上代码段的下面添加以下代码,修改信息时需要处理适用模型字段的值。 //商品系统模型ID等于6 if($mid==6) $shiyongid = DoPostDiyShiyongID($add['info_shiyongid']);
//Begin找到以下这段代码 //副表 $stb=$checkr['stb']; $fsql=$empire->query("update ".$infotbr['datatbname']." set classid='$add[classid]',keyid='$keyid',dokey=$add[dokey],newstempid=$add[newstempid],closepl=$add[closepl],infotags='".addslashes($add[infotags])."'".$ret_r[datavalues]." where id='$add[id]' limit 1"); //End //将以上代码段修改为以下的代码段。 //副表 $stb=$checkr['stb']; //商品系统模型ID等于6 if($mid==6) { $fsql=$empire->query("update ".$infotbr['datatbname']." set classid='$add[classid]',keyid='$keyid',shiyongid='$shiyongid',dokey=$add[dokey],newstempid=$add[newstempid],closepl=$add[closepl],infotags='".addslashes($add[infotags])."'".$ret_r[datavalues]." where id='$add[id]' limit 1"); } else { $fsql=$empire->query("update ".$infotbr['datatbname']." set classid='$add[classid]',keyid='$keyid',dokey=$add[dokey],newstempid=$add[newstempid],closepl=$add[closepl],infotags='".addslashes($add[infotags])."'".$ret_r[datavalues]." where id='$add[id]' limit 1"); }
第六步,在内容模板里填写适用模型字段的输出标签,如下所示:
<p>适用模型:[!--shiyong.link--]</p>
第七步,打开/e/action/ShowInfo.php文件,需要修改里面的DtGetHtml()函数,DtGetHtml()函数涉及的修改如下代码所示:
//Begin找到以下这段代码 //相关信息 if(strstr($newstemptext,'[!--other.link--]')) { $keyboardtext=GetKeyboard($add[keyboard],$add[keyid],$add[classid],$add[id],$class_r[$add[classid]][link_num]); } //End //在以上代码段的下面添加以下代码。 //适用模型 if(strstr($newstemptext,'[!--shiyong.link--]')) { $shiyongtext=GetShiyong($add[shiyongid],$add[classid],$add[id],100); }
//找到以下这行代码 $newstempstr=str_replace('[!--other.link--]',$keyboardtext,$newstempstr); //在这行代码下面添加以下这行代码 $newstempstr=str_replace('[!--shiyong.link--]',$shiyongtext,$newstempstr);
第八步,打开/e/class/functions.php文件,在文件里面添加一个取得适用模型的函数和修改里面的RepOtherTemp函数,如下代码所示:
//取得适用模型 function GetShiyong($shiyongid,$classid,$id,$link_num){ global $empire,$public_r,$class_r,$fun_r,$dbtbpre; if($shiyongid&&$link_num) { $add="id in (".$shiyongid.")"; $tr=$empire->fetch1("select shiyongtemp,shiyongtempsub,shiyongtempdate from ".GetTemptb("enewspubtemp")." limit 1");//取得相关链接模板 $temp_r=explode("[!--empirenews.listtemp--]",$tr[shiyongtemp]); $key_sql=$empire->query("select id,newstime,title,isurl,titleurl,classid,titlepic,model from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where ".$add." order by model asc limit $link_num"); while($link_r=$empire->fetch($key_sql)) { $shiyongtext.=RepOtherTemp($temp_r[1],$link_r,$tr); } $shiyongtext=$temp_r[0].$shiyongtext.$temp_r[2]; } else { $shiyongtext=$fun_r['NotLinkNews']; } return $shiyongtext; } //替换相关链接模板 function RepOtherTemp($temptext,$r,$tr){ global $public_r,$class_r; $title=sub($r[title],0,$tr['otherlinktempsub'],false); $r['newstime']=date($tr['otherlinktempdate'],$r['newstime']); $titlelink=sys_ReturnBqTitleLink($r);//标题链接 $temptext=str_replace("[!--title--]",$title,$temptext); $temptext=str_replace("[!--oldtitle--]",$r[title],$temptext); $temptext=str_replace("[!--titleurl--]",$titlelink,$temptext); $temptext=str_replace("[!--newstime--]",$r[newstime],$temptext); //添加了以下这行代码(根据你自己的实际情况) if($r[model]) $temptext=str_replace("[!--model--]",$r[model],$temptext); if(empty($r[titlepic])) { $titlepic=$public_r[newsurl]."e/data/images/notimg.gif"; } else { $titlepic=$r[titlepic]; } $temptext=str_replace("[!--titlepic--]",$titlepic,$temptext); return $temptext; }
终于到了最后一步了,就是需要在phome_enewspubtemp数据表中添加三个字段以保存新添加的适用模型字段的模板代码,以下直接给出SQL执行语句,使用phpmyadmin执行就可以了。
ALTER TABLE `phome_enewspubtemp` ADD `shiyongtemp` MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; ALTER TABLE `phome_enewspubtemp` ADD `shiyongtempsub` TINYINT(4) NOT NULL DEFAULT '0'; ALTER TABLE `phome_enewspubtemp` ADD `shiyongtempdate` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; UPDATE `phome_enewspubtemp` SET `shiyongtemp` = '[!--empirenews.listtemp--]<a href="[!--titleurl--]">[!--model--] [!--oldtitle--]</a>[!--empirenews.listtemp--]' WHERE `phome_enewspubtemp`.`id` =1; UPDATE `phome_enewspubtemp` SET `shiyongtempsub` = '50' WHERE `phome_enewspubtemp`.`id` =1; UPDATE `phome_enewspubtemp` SET `shiyongtempdate` = 'Y-m-d H:i:s' WHERE `phome_enewspubtemp`.`id` =1;