帝国cms二次开发一个百度百科词条系统
2020-04-10 站长 站长日志
百度百科都看过,一个词条可以创建许多个小标题分类。利用帝国CMS来做的话,最简单的方法就是自己再编辑器里面分段落,然后利用CSS来达到词条的效果。但是不利用后期修改,如果词条太多,内容太长不方便维护。还有一种方法就是利用帝国CMS的多值字段了,这个也不难,照着官方的代码稍微改改就能实现百度百科的效果了。
首先我们需要添加一个百科的多值字段。
字段名:ct
字段标识:词条
类型:中型
输入表单显示元素:多值字段
大概的输入表单替换html代码如下面这样。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
function domvadd_p_ctnr() { var i; var str= '' ; var oldi=0; var j=0; var addnum=0; addnum=parseInt(document.add.mvaddnum_p_ctnr.value); oldi=parseInt(document.add.mveditnum_p_ctnr.value); for (i=1;i<=addnum;i++) { j=i+oldi; str=str+ '<tr><td align="center" valign="top"><input class="p2" type="text" name="p_ctnr_1[]" id="p_ctnr_1_' +j+ '" value="" class="p2" size="60"></td><td align="center"><textarea name="p_ctnr_2[]" id="p_ctnr_2_' +j+ '" rows="12" cols="80"></textarea></td></tr>' ; } document.getElementById( "mvadd_p_ctnr" ).innerHTML= "<table width='100%' border=0 cellspacing=1 cellpadding=3>" +str+ "</table>" ; } </script> <table width= "100%" border= "0" cellspacing= "0" cellpadding= "0" > <tr> <td> <table width= "100%" border= "0" cellpadding= "3" cellspacing= "1" bgcolor= "#DBEAF5" > <tr><td align= "center" >标题</td><td align= "center" >分段内容</td></tr> </table> </td> </tr> <tr> <td> <?php if ( $ecmsfirstpost ==1) { ?> <table width= '100%' border=0 cellspacing=1 cellpadding=3> <?php $editnum =3; for ( $i =1; $i <= $editnum ; $i ++) { ?> <tr> <td align= "center" valign= "top" ><input type= "text" name= "p_ctnr_1[]2" id= "p_ctnr_1_<?=$i?>" value= "" class = "p2" size= "60" /></td> <td align= "center" > <textarea name= "p_ctnr_2[]" id= "p_ctnr_2_<?=$i?>" rows= "12" cols= "80" ></textarea></td></tr> <?php } ?> </table> <?php } else { $editnum =0; if ( $r [ 'p_ctnr' ]) { $r [ 'p_ctnr' ]= stripSlashes ( $r [ 'p_ctnr' ]); ?> <table width= '100%' border=0 cellspacing=1 cellpadding=3> <?php //录入项 $j =0; $mvf_record = explode ( '||||||' , $r [ 'p_ctnr' ]); $mvf_count = count ( $mvf_record ); for ( $i =0; $i < $mvf_count ; $i ++) { $j = $i +1; $mvf_field = explode ( "::::::" , $mvf_record [ $i ]); ?> <tr><td align= "center" valign= "top" ><input type= "text" name= "p_ctnr_1[]" id= "p_ctnr_1_<?=$j?>" value= "<?=$mvf_field[0]?>" class = "p2" size= "60" > <input type= "hidden" name= "p_ctnr_mvid[]" id= "p_ctnr_mvid_<?=$j?>" value= "<?=$j?>" ><input type= "checkbox" name= "p_ctnr_mvdelid[]" id= "p_ctnr_mvdelid_<?=$j?>" value= "<?=$j?>" >删</td><td align= "center" ><textarea name= "p_ctnr_2[]" id= "p_ctnr_2_<?=$j?>" rows= "12" cols= "80" ><?= $mvf_field [1]?></textarea></td></tr> <?php } ?> </table> <?php $editnum = $j ; } } ?> </td> </tr> <tr> <td height= "25" >扩展数量: <input name= "mveditnum_p_ctnr" type= "hidden" id= "mveditnum_p_ctnr" value= "<?=$editnum?>" > <input name= "mvnum_p_ctnr" type= "hidden" id= "mvnum_p_ctnr" value= "2" > <input name= "mvmust_p_ctnr" type= "hidden" id= "mvmust_p_ctnr" value= "1" > <input name= "mvaddnum_p_ctnr" type= "text" id= "mvaddnum_p_ctnr" value= "1" size= "6" > <input type= "button" name= "Submit5" value= "输出" onclick= "javascript:domvadd_p_ctnr();" ></td> </tr> <tr> <td id= "mvadd_p_ctnr" ></td> </tr> </table> |
熟悉帝国CMS的添加字段大家都会,主要是前台调用有点难。帝国CMS论坛找了一段,循环分隔多值字段的代码,稍加修改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php $morefr = explode ( '||||||' , $navinfor [p_ctnr]); $mfcount = count ( $morefr ); for ( $mfi =0; $mfi < $mfcount ; $mfi ++) { $morefrf = explode ( '::::::' , $morefr [ $mfi ]); ?><li class = "font16 line36" ><span><?= $mfi +1?>.</span><a title= "<?=$morefrf[0]?>" data-slide= "<?=$mfi+1?>" onClick= "gotofloor(this);" href= "javascript:void(0);" class = "<? echo $mfi==0?'fb':'';?>" ><?= $morefrf [0]?></a></li><?php } ?> </ol> <?php $morefr = explode ( '||||||' , $navinfor [p_ctnr]); $mfcount = count ( $morefr ); for ( $mfi =0; $mfi < $mfcount ; $mfi ++) { $morefrf = explode ( '::::::' , $morefr [ $mfi ]); ?> <li class = "gray8 line26 jies" > <dt class = "title" data-slide= "<?=$mfi+1?>" ><span><?= $morefrf [0]?></span></dt> <dd class = "newstext" ><?= $morefrf [1]?> </dd> </li> <?php } ?> |
上面一段为调用的目录,下面的一段循环调用的词条标题和内容。前台的样式大家自行修改,我们主要看看后台是什么样的。
可以自由添加词条数量,也可以删除,这样维护起来是不是就方便些了。