..真实国产乱子伦毛片,亚洲激情五月丁香,欧美福利网,天天干天天日B

常見問題
問: 怎樣開發(fā)插件、發(fā)布插件資源
答: 一、插件的程序文件和數(shù)據(jù)表簡介

  軟件采用模塊化結(jié)構(gòu),每個(gè)模塊的前后臺(tái)程序、模板都放在單獨(dú)得模塊目錄下,例如:文章模塊的目錄是news,該目錄下包含了文章管理后臺(tái)(admin)、插件目錄(module)、模板目錄(templates)等,各模塊目錄名的介紹請(qǐng)參考《軟件文件系統(tǒng)結(jié)構(gòu)說明》,本文主要介紹插件開發(fā)相關(guān)的程序結(jié)構(gòu)。

  每個(gè)插件由一個(gè)插件程序、一個(gè)默認(rèn)模板、一條插件參數(shù)數(shù)據(jù)記錄等三個(gè)元素構(gòu)成。我們以“文章列表”插件為例,說明插件的文件和數(shù)據(jù)結(jié)構(gòu)?!拔恼铝斜怼辈寮绦蚴谴娣旁趎ews/module/目錄中NewsList.php;插件的默認(rèn)模板是news/templates/目錄中的tpl_newslist.htm;插件記錄存放在數(shù)據(jù)表“_base_plusdefault ”中,每個(gè)插件一條記錄,記錄了該插件的參數(shù),其中pluslable字段的值就是該插件的標(biāo)簽名,文章列表的pluslable是modNewsList。其中的規(guī)則是,pluslable標(biāo)簽名去掉前面的“mod”,就是插件的程序文件名,程序依據(jù)此規(guī)則找到插件程序并運(yùn)行。

  另外:
  _base_plus數(shù)據(jù)表記錄了每個(gè)頁面上插入了那些插件、插件的位置、顯示參數(shù)等信息
  _base_plustemp數(shù)據(jù)表記錄了插件的擴(kuò)展模板

二、插件記錄表_base_plusdefault結(jié)構(gòu)說明

  每個(gè)插件在_base_plusdefault數(shù)據(jù)表中有一條記錄,該記錄決定了插件允許插入在哪些頁面、有哪些參數(shù)可以設(shè)置、默認(rèn)的設(shè)置參數(shù)是什么等信息。插件參數(shù)設(shè)置是和插件程序相配合的,設(shè)置了哪些可選項(xiàng)目,就要在程序中進(jìn)行判斷并正確體現(xiàn)出來。各字段說明如下:

id     自增量ID,新增插件記錄時(shí)自動(dòng)產(chǎn)生,無需特別指定
coltype   插件的來源模塊代碼(如:news),根據(jù)此值尋找插件程序和模板文件的位置
pluslable  唯一的插件標(biāo)簽名,不可重名,和插件程序文件名稱對(duì)應(yīng),如modNewsList
plusname  插件的中文名,考慮到排版時(shí)在插件管理面板顯示完整,一般不要超過16個(gè)字符
plustype  允許在哪些模塊使用該插件,all表示該插件可以在全站所有模塊使用
pluslocat  允許在哪些頁面使用該插件,all表示全部頁面;和plustype配合用以規(guī)定插件的可用范圍
tempname  插件的默認(rèn)模板文件名(擴(kuò)展模板則記錄在_base_plustemp表中)
tempcolor  插件的默認(rèn)顏色方案編號(hào)。除了導(dǎo)航菜單可選配色方案,其他插件均填-1,即不可選配色方案;程序支持所有插件均可選配色方案,但是這樣做將使插件模板開發(fā)增加15倍工作量,故暫時(shí)只有導(dǎo)航菜單使用了這一機(jī)制

showborder 插件默認(rèn)選用的邊框編號(hào)。A001代表001號(hào)邊框模板,配色代號(hào)為A(配色編號(hào)從A-P共16種顏色,可以填寫B(tài)001、P001等,但不推薦);1000表示自定義邊框,如果插件默認(rèn)不顯示邊框,可在此填寫1000,并將borderwidth填為0。

bordercolor 自定義邊框的顏色,僅在showborder為1000自定義邊框時(shí)有效 
borderwidth 自定義邊框的寬度,僅在showborder為1000自定義邊框時(shí)有效
borderstyle    邊框的樣式,solid表示實(shí)線,dotted表示點(diǎn)狀,dashed表示虛線...
borderlable 用于標(biāo)簽式邊框填寫被控插件編號(hào),默認(rèn)記錄不要填任何內(nèi)容
borderroll  用于標(biāo)簽式邊框的切換方式,默認(rèn)記錄不要填任何內(nèi)容
showbar  自定義邊框是否顯示插件標(biāo)題欄,僅在showborder為1000自定義邊框時(shí)有效
barbg   自定義邊框的標(biāo)題欄背景色,僅在showborder為1000自定義邊框時(shí)有效
barcolor  自定義邊框的標(biāo)題欄文字色,僅在showborder為1000自定義邊框時(shí)有效
backgroundcolor 自定義邊框的背景色,僅在showborder為1000自定義邊框時(shí)有效
morelink    默認(rèn)的更多鏈接,填-1表示不可設(shè)置更多鏈接
width     插件默認(rèn)的寬度,根據(jù)插件的理想顯示尺寸填寫
height     插件的默認(rèn)高度,根據(jù)插件的理想顯示尺寸填寫
top      插件的頂邊距,是相對(duì)于容器的頂邊距,一般填0,方便用戶在同一位置找到新插入的插件
left      插件的左邊距,是相對(duì)于容器的左邊距,一般填0,
zindex     插件的Z軸位置,一般填寫99,使插件插入時(shí)位于其他插件的前方
padding    插件邊框的內(nèi)邊距,即邊框和內(nèi)容之間的距離
shownums   內(nèi)容默認(rèn)顯示條數(shù),如不可控制內(nèi)容條數(shù),填-1
ord      內(nèi)容的排序參數(shù),根據(jù)插件來源數(shù)據(jù)表可提供排序的參數(shù),以“|”分割,如不允許設(shè)置,填-1
sc       內(nèi)容的排序方法,asc或desc,如不允許設(shè)置,填-1
showtj     是否只顯示推薦內(nèi)容,1表示默認(rèn)選中“只顯示推薦內(nèi)容”,0表示不規(guī)定是否顯示推薦內(nèi)容,如果不可設(shè)置是否顯示推薦內(nèi)容,填-1
cutword    內(nèi)容標(biāo)題截取文字,填數(shù)字,不可設(shè)置時(shí)填-1
target     鏈接打開方式,_self或_blank,不可設(shè)置時(shí)填-1
catid     默認(rèn)選擇的分類id,用于選擇內(nèi)容的顯示分類。當(dāng)該值不是-1時(shí),必須在classtbl字段中填如對(duì)應(yīng)的數(shù)據(jù)表名,該數(shù)據(jù)表的結(jié)構(gòu)必須符合PHPWEB的catpath分類方法,如文章、下載分類等均按此標(biāo)準(zhǔn)規(guī)劃分類。
cutbody    內(nèi)容截取字?jǐn)?shù),一般配合程序截取body,memo等字段,不可設(shè)置時(shí)填-1
picw     縮圖寬度,一般用于圖片展示等插件,不可設(shè)置時(shí)填-1
pich      縮圖高度,一般用于圖片展示等插件,不可設(shè)置時(shí)填-1
fittype    縮圖的默認(rèn)自適應(yīng)方法,填fill或不可設(shè)置時(shí)填-1
title            默認(rèn)的插件標(biāo)題
body     在插件設(shè)置時(shí)可直接輸入html編輯內(nèi)容,-1為不可填
pic      在插件設(shè)置時(shí)可直接上傳圖片,-1為不可上傳圖片
piclink                 在插件設(shè)置時(shí)可直接上傳圖片的配套鏈接,-1為不可填
attach     在插件設(shè)置時(shí)可直接上傳文件,-1為不可上傳文件
movi     在插件設(shè)置時(shí)可填寫視頻來源網(wǎng)址,-1為不可填
sourceurl   在插件設(shè)置時(shí)可填寫其他來源網(wǎng)址,-1為不可填

word、word1、word2、word3、word4、text、text1、link、link1、link2、link3、link4
這些字段用于自定義內(nèi)容模塊中的組合內(nèi)容插件,一般不使用,填-1

code  用于輸入代碼,不可輸入填-1
tags     為空時(shí)可設(shè)置匹配標(biāo)簽,-1時(shí)不可設(shè)置
groupid 用于選擇分組,如友情鏈接、廣告組等插件,填-1時(shí)不可選擇分組
projid  用于選擇專題,如文章列表插件,填-1時(shí)不可選擇專題
moveable 預(yù)留字段,全部填1
classtbl  對(duì)應(yīng)catid的分類數(shù)據(jù)表名
grouptbl  對(duì)應(yīng)groupid的分組數(shù)據(jù)表名
projtbl  對(duì)應(yīng)projid的專題數(shù)據(jù)表名

setglobal 是否允許全站同時(shí)插入插件,1為可同時(shí)插入,0為不可同時(shí)插入。注意事項(xiàng):一般只能允許每頁只可插入一個(gè)的插件進(jìn)行全站同時(shí)插入,否則會(huì)弄亂頁面

overflow 內(nèi)容溢出是是否自動(dòng)增加高度,對(duì)于可預(yù)知高度的應(yīng)設(shè)為hidden,不可預(yù)知高度得設(shè)為visible
bodyzone  插件默認(rèn)插入的容器,可選填top、content、bottom
display 預(yù)留字段,填1
ifmul         一個(gè)頁面中是否允許多次插入本插件,注意插入多個(gè)會(huì)產(chǎn)生互相沖突的一般應(yīng)設(shè)為0
ifrefresh  插入插件后是否刷新頁面,一般帶js的插件應(yīng)設(shè)為1,需要刷新后才能看到效果,普通插件設(shè)為0

重要提示:插件記錄表默認(rèn)參數(shù)的設(shè)置屬于開發(fā)范疇,所設(shè)置的參數(shù)必須進(jìn)行對(duì)應(yīng)的程序開發(fā)才能體現(xiàn),非程序開發(fā)人員切勿在數(shù)據(jù)表中隨意更改已有插件的參數(shù),否則可能導(dǎo)致程序出錯(cuò)!


三、插件程序開發(fā)

  在規(guī)劃好一個(gè)插件應(yīng)該按什么樣的規(guī)則顯示、有哪些參數(shù)可以設(shè)置后,就可以進(jìn)行插件程序開發(fā)了。插件程序的作用就是按可選參數(shù)設(shè)置,將內(nèi)容取出來,交給模板顯示內(nèi)容。接下來以“文章列表”插件為例,說明插件程序的開發(fā)方法:

<?php

/*
 [插件名稱] 最新文章列表
 [適用范圍] 全站
*/

function NewsList(){ #插件程序文件名和插件函數(shù)同名

 global $fsql,$msql;  #全局?jǐn)?shù)據(jù)庫連接類

  $coltitle=$GLOBALS["PLUSVARS"]["coltitle"];
  $shownums=$GLOBALS["PLUSVARS"]["shownums"];
  $ord=$GLOBALS["PLUSVARS"]["ord"];
  $sc=$GLOBALS["PLUSVARS"]["sc"];
  $showtj=$GLOBALS["PLUSVARS"]["showtj"];
  $cutword=$GLOBALS["PLUSVARS"]["cutword"];
  $cutbody=$GLOBALS["PLUSVARS"]["cutbody"];
  $target=$GLOBALS["PLUSVARS"]["target"];
  $catid=$GLOBALS["PLUSVARS"]["catid"];
  $projid=$GLOBALS["PLUSVARS"]["projid"];
  $tags=$GLOBALS["PLUSVARS"]["tags"];
  $pagename=$GLOBALS["PLUSVARS"]["pagename"];
  $tempname=$GLOBALS["PLUSVARS"]["tempname"];

 #以上讀入插件設(shè)置參數(shù),在插件記錄表中允許設(shè)置的項(xiàng)目,必須將設(shè)置參數(shù)讀入,在程序中對(duì)參數(shù)進(jìn)行判斷;在插件記錄表中設(shè)置為-1的字段,絕對(duì)不要在這里引入或判斷。這是因?yàn)楫?dāng)記錄值為-1時(shí),插件設(shè)置窗口將不顯示該參數(shù)的設(shè)置,用戶看不到,但程序一旦解釋了,該值就是-1,會(huì)使運(yùn)行結(jié)果和預(yù)期的不一樣。

  //地址欄參數(shù)

  if($pagename=="query" && strstr($_SERVER["QUERY_STRING"],".html")){
   $Arr=explode(".html",$_SERVER["QUERY_STRING"]);
   $nowcatid=$Arr[0];
  }elseif($_GET["catid"]>0){
   $nowcatid=$_GET["catid"];
  }else{
   $nowcatid=0;
  }
 
 #文章列表插件中根據(jù)插件插入的不同地方,判斷當(dāng)前頁面的分類id,以求根據(jù)頁面自動(dòng)顯示當(dāng)前分類下的文章。

 #默認(rèn)查詢條件
  $scl=" iffb=1 and catid!=0 ";

#如果插件設(shè)置了只顯示推薦,則只取tj=1的數(shù)據(jù) 

 if($showtj!="" && $showtj!="0"){
   $scl.=" and tj=1 ";
  }


  #顯示分類規(guī)則:如果插件設(shè)置時(shí)未指定分類,則顯示當(dāng)前所在分類,否則不限分類

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

  #匹配專題,如果插件設(shè)置中選擇了只顯示某個(gè)專題的文章,則只獲取匹配某專題的數(shù)據(jù)
  if($projid!=0 && $projid!=""){
   $projid=fmpath($projid);
   $scl.=" and proj regexp $projid ";
  }

#判斷匹配標(biāo)簽,如果插件設(shè)置中填寫了匹配標(biāo)簽,只獲取匹配的記錄
  if($tags!=""){
   $tags=$tags.",";
   $scl.=" and tags regexp $tags ";
  }

#模版解釋,讀入插件模板,將插件模板中的代碼按<!- ->標(biāo)簽進(jìn)行分離,存入數(shù)組
#例如<!-start->和<!-start->之間的內(nèi)容,就是$TempArr["start"],依此類推

  $Temp=LoadTemp($tempname);
  $TempArr=SplitTblTemp($Temp);

#首先將模板的start部分需要的顯示的變量替換給模板

  $var=array(
   coltitle => $coltitle,
   morelink => $morelink
  );
  $str=ShowTplTemp($TempArr["start"],$var);

#開始循環(huán),按條件取出文章  

$picnum=1;
  $fsql->query("select * from pw_news_con where $scl order by $ord $sc limit 0,$shownums");

  while($fsql->next_record()){
   
   $id=$fsql->f(id);
   $title=$fsql->f(title);
   $catpath=$fsql->f(catpath);
   $dtime=$fsql->f(dtime);
   $nowcatid=$fsql->f(catid);
   $ifnew=$fsql->f(ifnew);
   $ifred=$fsql->f(ifred);
   $ifbold=$fsql->f(ifbold);
   $author=$fsql->f(author);
   $source=$fsql->f(source);
   $cl=$fsql->f(cl);
   $src=$fsql->f(src);
   $cl=$fsql->f(cl);
   $fileurl=$fsql->f(fileurl);
   $downcount=$fsql->f(downcount);
   $prop1=$fsql->f(prop1);
   $prop2=$fsql->f(prop2);
   $prop3=$fsql->f(prop3);
   $prop4=$fsql->f(prop4);
   $prop5=$fsql->f(prop5);
   $prop6=$fsql->f(prop6);
   $prop7=$fsql->f(prop7);
   $prop8=$fsql->f(prop8);
   $prop9=$fsql->f(prop9);
   $prop10=$fsql->f(prop10);
   $prop11=$fsql->f(prop11);
   $prop12=$fsql->f(prop12);
   $prop13=$fsql->f(prop13);
   $prop14=$fsql->f(prop14);
   $prop15=$fsql->f(prop15);
   $prop16=$fsql->f(prop16);
   $prop17=$fsql->f(prop17);
   $prop18=$fsql->f(prop18);
   $prop19=$fsql->f(prop19);
   $prop20=$fsql->f(prop20);
   $memo=$fsql->f(memo);
   $mid=$fsql->f(memberid);

  #對(duì)取出的數(shù)據(jù)進(jìn)行一系列判斷,取出在該插件中可能被顯示的數(shù)據(jù)

if($mid>0){
    $memberurl=ROOTPATH."member/home.php?mid=".$mid;
   }else{
    $memberurl="#";
   }

   if($GLOBALS["CONF"]["CatchOpen"]=="1" && file_exists(ROOTPATH."news/html/".$id.".html")){
    $link=ROOTPATH."news/html/".$id.".html";
   }else{
    $link=ROOTPATH."news/html/?".$id.".html";
   }


   
   $dtime=date("m/d",$dtime);

   if($ifbold=="1"){$bold=" style=font-weight:bold ";}else{$bold="";}

   if($ifred!="0"){$red=" style=color:".$ifred." ";}else{$red="";}

   if($cutword!="0"){$title=csubstr($title,0,$cutword);}
   if($cutbody!="0"){$memo=csubstr($memo,0,$cutbody);}


   if($src==""){$src="news/pics/nopic.gif";}
   
   $src=ROOTPATH.$src;

   $downurl=ROOTPATH."news/download.php?id=".$id;


   //顯示所屬分類
   $msql->query("select cat from pw_news_cat where catid=$nowcatid");
   if($msql->next_record()){
    $cat=$msql->f(cat);
   }
   
   //參數(shù)列
   $i=1;
   $msql->query("select * from pw_news_prop where catid=$nowcatid order by xuhao");
   while($msql->next_record()){
    $pn="propname".$i;
    $$pn=$msql->f(propname);
   $i++;
   }

 #模版標(biāo)簽解釋,將數(shù)據(jù)解釋給模板

   $var=array (
   title => $title, 
   memo => $memo,
   dtime => $dtime, 
   red => $red, 
   bold => $bold,
   link => $link,
   target => $target,
   author => $author, 
   source => $source,
   cat => $cat, 
   src => $src, 
   cl => $cl, 
   memberurl => $memberurl, 
   picnum => $picnum, 
   downurl => $downurl, 
   fileurl => $fileurl, 
   downcount => $downcount, 
   prop1 => $prop1,
   prop2 => $prop2,
   prop3 => $prop3,
   prop4 => $prop4,
   prop5 => $prop5,
   prop6 => $prop6,
   prop7 => $prop7,
   prop8 => $prop8,
   prop9 => $prop9,
   prop10 => $prop10,
   prop11 => $prop11,
   prop12 => $prop12,
   prop13 => $prop13,
   prop14 => $prop14,
   prop15 => $prop15,
   prop16 => $prop16,
   prop17 => $prop17,
   prop18 => $prop18,
   prop19 => $prop19,
   prop20 => $prop20,
   propname1 => $propname1,
   propname2 => $propname2,
   propname3 => $propname3,
   propname4 => $propname4,
   propname5 => $propname5,
   propname6 => $propname6,
   propname7 => $propname7,
   propname8 => $propname8,
   propname9 => $propname9,
   propname10 => $propname10,
   propname11 => $propname11,
   propname12 => $propname12,
   propname13 => $propname13,
   propname14 => $propname14,
   propname15 => $propname15,
   propname16 => $propname16,
   propname17 => $propname17,
   propname18 => $propname18,
   propname19 => $propname19,
   propname20 => $propname20
   );
   $str.=ShowTplTemp($TempArr["list"],$var);


  $picnum++;

  }

#循環(huán)結(jié)束,將模板的結(jié)尾部分,即<!-end->標(biāo)簽之間的內(nèi)容加入$str,最后返回$str,$str的內(nèi)容將被完整顯示。

$str.=$TempArr["end"];


  return $str;

}

?>

四、插件默認(rèn)模板制作

以“文章列表”插件的默認(rèn)模板tpl_newslist.htm為例,源碼如下:

<!-start->
<link href="css/newslist.css" rel="stylesheet" type="text/css" />
<ul class="newslist">
<!-start->
<!-list->
<li class="newslist"><a href="{ # link # }" target="{ # target # }" class="newslist" { # bold # } { # red # } >{ # title # }</a></li>
<!-list->
<!-end->
</ul>
<!-end->

插件模板一般具有開始部分、循環(huán)部分、結(jié)束部分,可根據(jù)顯示的需要,將內(nèi)容放在合適的位置。如果插件中需要進(jìn)行多個(gè)循環(huán),或加入其它內(nèi)容,除了這些標(biāo)簽外,還可以使用以下標(biāo)簽:
<!-m1-><!-m1->
<!-m2-><!-m2->
<!-m3-><!-m3->
<!-menu-><!-menu->
<!-text-><!-text->
<!-rowstart-><!-rowstart->
<!-rowend-><!-rowend->
<!-con-><!-con->
實(shí)際上,標(biāo)簽的作用是讓程序把其中的內(nèi)容加入到數(shù)組元素中,而循環(huán)是在程序中進(jìn)行的。例如<!-menu-><!-menu->之間的內(nèi)容在被加入到數(shù)組后就是$TempArr["menu"],在程序中可以將其中的內(nèi)容進(jìn)行判斷,輸出需要的數(shù)據(jù)。

文章列表插件是所有插件中設(shè)置參數(shù)最多,也是比較復(fù)雜的插件。學(xué)習(xí)插件開發(fā),可以從簡單的開始。比如你可以嘗試只從數(shù)據(jù)庫中取出一條數(shù)據(jù),通過插件+模板將其顯示出來,然后逐步深入研究插件開發(fā)。你也可以通過研究學(xué)習(xí)現(xiàn)有的插件,通過修改現(xiàn)有插件來逐步熟悉插件的開發(fā)。


五、插件資源包制作方法

插件可以打包發(fā)布到PHPWEB資源分享區(qū),分享插件賺?。袔?。
如果你希望發(fā)布自己制作的插件,建議你給插件的命名帶有自己的英文網(wǎng)名,以避免插件重名。例如你自己制作的特色文章列表插件,可以是MyNameNewsList.php,pluslable是modMyNameNewsList.。

插件打包時(shí)應(yīng)按原來的文件結(jié)構(gòu),從模塊目錄開始,按實(shí)際目錄存放文件,方便用戶了解文件的上傳位置。還要在后臺(tái)“模塊插件設(shè)置”中,將此插件的記錄導(dǎo)出為.dat文件,一起打包。

初次制作插件資源包,建議先自己測試一次插件安裝過程,以保證插件資源包的正確。

秦皇島炎黃科技網(wǎng)絡(luò)工作室 為您提供優(yōu)質(zhì)的 秦皇島成品網(wǎng)站 秦皇島網(wǎng)站制作 秦皇島網(wǎng)站建設(shè)服務(wù)
  問題沒解決?
在線咨詢 或致電:13785936100
秦皇島網(wǎng)絡(luò)公司聯(lián)系電話
致電 137 859 36100
7×24小時(shí)服務(wù)熱線
秦皇島網(wǎng)絡(luò)公司工作時(shí)間
在線咨詢
每工作日 9:00-17:30
點(diǎn)擊進(jìn)入>
預(yù)約秦皇島網(wǎng)站制作專家
預(yù)約專家
為您提供一對(duì)一解決方案
點(diǎn)擊進(jìn)入>
秦皇島網(wǎng)絡(luò)公司的地圖位置
地圖位置
在地圖上看我們的位置
點(diǎn)擊進(jìn)入>
秦皇島網(wǎng)絡(luò)公司官方微博
訪問官方微博
唯一官方微博平臺(tái)
點(diǎn)擊進(jìn)入>
版權(quán)所有 ? 2010-2011 秦皇島網(wǎng)絡(luò)公司 秦皇島網(wǎng)站制作
Copyright ? 2010-2011 Qhdsudu.com All Rights Reserved 冀ICP備13009153號(hào)-13
聯(lián)系電話:13785936100  電子郵箱:1514969798@qq.com
微信溝通 QQ客服
掃描二維碼添加客服微信