技术文摘

帝国CMS怎么实现一个类似百度百科的词条系统

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

【审核人:站长】

收藏   加好友   生成海报   分享
点赞(0)
打赏
Tags: 帝国CMS 百科 帝国 词条
评论(0人参与,0条评论) 雨祺
0/0
  • 请先说点什么
    最新评论

    发布者资料

    热门文章

    技术文摘

    查看更多技术文摘
    首页
    栏目
    搜索
    会员
    投稿