二次开发一个百度百科词条系统

百度百科都看过,一个词条可以创建许多个小标题分类。利用帝国CMS来做的话,最简单的方法就是自己再编辑器里面分段落,然后利用CSS来达到词条的效果。但是不利用后期修改,如果词条太多,内容太长不方便维护。还有一种方法就是利用帝国CMS的多值字段了,这个也不难,照着官方的代码稍微改改就能实现百度百科的效果了。

首先我们需要添加一个百科的多值字段。

字段名:ct

字段标识:词条

类型:中型

输入表单显示元素:多值字段

大概的输入表单替换html代码如下面这样。

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论坛找了一段,循环分隔多值字段的代码,稍加修改。

<?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
}
?>

上面一段为调用的目录,下面的一段循环调用的词条标题和内容。前台的样式大家自行修改,我们主要看看后台是什么样的。

可以自由添加词条数量,也可以删除,这样维护起来是不是就方便些了。

简简单单挺好的

联系我们 订单查询