智能建站平台首页 建站流程 企业建站 网上开店 专业网站 成品网站超市 网站优化 网站案例 模版展示 帮助中心 联系方式
武汉网络家PHP专业网站系统:标准插件程序调用原理详解
武汉网络家“网站通”智能建站平台   2007-08-02 18:08:48 作者:武汉网络家 来源:武汉网站建设 网络公司 网络推广 文字大小:[][][]
  插件程序是用来对模版中的插件进行解释并输出内容的程序。插件程序存放在module目录,文件名和插件对应。比如对应的插件程序就是NewsList.php。

  每一个插件程序都是一个函数(少数可能是多个嵌套函数),函数名称和文件名称相同。下面以NewsList.php为例,描述插件程序的编写方法:

1、默认参数定义

CODE:
function NewsList(){

                //定义函数内需要的全局变量
                global $fsql,$charset,$tbl_news_con,$CatchOpen;
                global $strMore,$NowMenuid,$MenuInfo;

                //取出modNewsList的后台插件设置输出数组$PSET

                $PSET=PlusSet("modNewsList");
                                            
                //判断后台是否设置了插件参数,如果设置了就使用设置的参数,没有设置就使用默认值
                //内容来源栏目的范围,如果后台未指定来源栏目,则调用默认栏目来源。当插件位于news栏目下时,默认显示当前栏目的内容,否则默认显示全部内容

                $showmenuid=PlusDef($PSET["showmenuid"],MenuDef("news",$NowMenuid));
                $shownums=PlusDef($PSET["shownums"],"5"); //显示条数,默认5条
                $ord=PlusDef($PSET["ord"],"id");//排序参数,默认按id排序
                $sc=PlusDef($PSET["sc"],"desc"); //排序方式,默认倒排
                $showtime=PlusDef($PSET["showtime"],"n/j");//时间格式
                $cutword=PlusDef($PSET["cutword"],"0");//截取文字
                $target=PlusDef($PSET["target"],"_self");//目标窗口
                $onlytj=PlusDef($PSET["onlytj"],"0");//是否只显示推荐内容
                $catid=PlusDef($PSET["catid"],"0");//显示类别范围
                $more=PlusDef($PSET["showmore"],$strMore);//显示更多的格式,默认为语言包中定义的$strMore值
                $tempname=PlusDef($PSET["tempname"],"tpl_list.htm");//调用模版,默认tpl_list.htm
2、根据以上参数设置,生成数据库查询条件

CODE:
                $scl=" iffb='1' ";

                if($showmenuid!="0" && $showmenuid!=""){
                        $scl.=" and menuid='$showmenuid' ";

                        $fold=MenuFold($showmenuid);
                        $morelink=ROOTPATH.$fold."/class/?".$catid.".html";
                }else{
               
                        $morelink=ROOTPATH."";
                }


                if($catid!=0 && $catid!=""){
                        $catid=fmpath($catid);
                        $scl.=" and catpath regexp '$catid' ";
                }



                if($onlytj=="1"){
                        $scl.=" and tj='1' ";
                }
3、将模版读入数组

CODE:
$Temp=LoadTemp(ROOTPATH."templates/".$MenuInfo["skin"]."/".$tempname);
$TempArr=SplitTblTemp($Temp);
4、取出数据并输出

CODE:
                $str=$TempArr["start"];  //读入模版开始部分,即<!-start-><!-start->之间的内容

                $kk=0;
                $havepic=0;
                $fsql->query("select * from $tbl_news_con where $scl order by $ord $sc limit 0,$shownums");

                while($fsql->next_record()){
                       
                        $id=$fsql->f('id');
                        $title=$fsql->f('title');
                        $menuid=$fsql->f('menuid');
                        $catpath=$fsql->f('catpath');
                        $dtime=$fsql->f('dtime');
                        $nowcatid=$fsql->f('catid');
                        $ifnew=$fsql->f('ifnew');
                        $ifred=$fsql->f('ifred');
                        $author=$fsql->f('author');
                        $source=$fsql->f('source');
                        $cl=$fsql->f('cl');
                        $src=$fsql->f('src');
                        $type=$fsql->f('type');


                        $fold=MenuFold($menuid);
                        if($CatchOpen=="1"){
                                $link=ROOTPATH.$fold."/html/".$id.".html";
                        }else{
                                $link=ROOTPATH.$fold."/html/?".$id.".html";
                        }

       
                       
                        $dtime=date($showtime,$dtime);
                        if($ifbold=="1"){$bold=" style='font-weight:bold' ";}else{$bold="";}
                        if($ifred=="1"){$red=" style='color:#ff0000' ";}else{$red="";}
                        if($cutword!="0"){$title=csubstr($title,0,$cutword,$charset);}

                                                               
                        $var=array (
                        'title' => $title,
                        'dtime' => $dtime,
                        'red' => $red,
                        'author' => $author,
                        'source' => $source,
                        'cl' => $cl,
                        'link' => $link,
                        'target' => $target,
                        'bold' => $bold
                        );
                        $str.=ShowTplTemp($TempArr["list"],$var);//循环替换<!-list->和<!-list->之间的标签


                $kk++;

                }

                $str.=$TempArr["end"]; // 读入模版结束部分,即<!-end-><!-end->之间的内容


                $morestr=str_replace("",$more,$TempArr["more"]);
                $morestr=str_replace("",$morelink,$morestr);
               
                $str.=$morestr;

                return $str;
一个标准插件制作完成后,需要在_plus_set数据表中增加一条记录,注册这个插件,使后台可以选用和设置插件参数。

当然,如果是为某个网站专门制作的个性化插件,可以不必那么复杂。因为所有的参数都可以是固定的。只要在函数中将所需结果输出后赋值给$str ,最终return $str就可以了。
最新评论
发表评论  
关于我们 网络推广 付款方式 文档下载 域名注册 邮局信箱 网址导航 第一武汉网 会员中心 友情链接 设计师园地 备案信息提交
 
网监
武汉网络家联盟科技有限公司-武汉网络家“网站通”智能建站平台
公司地址:中国湖北省武汉市武昌区武珞路442号中南国际城D2-2510室
联系电话:027-18071120160    QQ:371721776
Powered By 武汉网络家联盟 WH18.CN  Copyright © 2006-2008  鄂ICP备09018832号-12
武汉网络家联盟为支付宝特约信任商家,全面支持支付宝在线担保支付。支付宝签约信任商家编号是: AIP0805577
武汉网站建设|武汉网站推广|武汉建网站|武汉做网站|武汉网络公司|百度推广|武汉网建|武汉建站公司|专业网络公司|武汉网页设计|武汉网上开店
第一武汉网
|武汉婚庆网|武汉吃网|武汉汽车门户网|武汉分类信息网|武汉空调网|武汉家电网|武汉同学网|武汉同乡会|湖北指南网|武汉法网|武汉网络家联盟
武汉搬家公司    青山宠愿   
 鄂公网安备 42010602003038号 
 
网络经济主体信息