欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
DEDE一些實(shí)用標簽及自定義標簽方法
欄目首頁(yè):
取得當前欄目的id {dede:field name='id'/}
當前欄目名稱(chēng): {dede:field name='typename'/}

欄目列表頁(yè):
取得當前欄目的id {dede:field name='id'/}
當前欄目名稱(chēng): {dede:field name='typename'/}

文章內容頁(yè):
取得當前文章的id: {dede:field name='id'/}
當前文章所屬欄目名稱(chēng): {dede:field name='typename'/}

其它標簽:
用于循環(huán)和遍歷中的計數器(每次+1): [field:global name=autoindex/]
將中文截取指定字節數: [field:title function='cn_substr(@me,16)'/]


{dede:sql}標簽:
sql標簽可以稱(chēng)得上是個(gè)萬(wàn)能標簽了,查詢(xún)數據庫將其輸出:

  1.用來(lái)輸出統計內容,這個(gè)是不錯的,舉個(gè)例子,我們來(lái)統計下總共發(fā)了多少的文章,思路就是輸出dede_addonarticle這個(gè)文章附加表內容總數就可以了。
  {dede:sql sql="SELECT COUNT(*) AS nums FROM dede_addonarticle"}
  [field:name = "nums"/]
  {/dede:sql}


  2.使用~field~來(lái)進(jìn)行特殊的查詢(xún),比如之前論壇上面很多會(huì )員需要做一個(gè)輸出當前發(fā)布文章會(huì )員的相關(guān)內容,之前用sql或者arclist標簽是沒(méi)辦法實(shí)現的,因為每篇內容是不同的,這里我們來(lái)用5.5的sql語(yǔ)句來(lái)做個(gè)示范。
  我們首先在文章模板中相應的位置加上下面的標簽
  {dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"}
  [field:id/],
  {/dede:sql}

  這個(gè)放到article_article.htm頁(yè)面,將會(huì )檢索出當前會(huì )員發(fā)布的相關(guān)文章,這里的~ writer~會(huì )根據當前內容的環(huán)境變量進(jìn)行替換后再執行查詢(xún)。
  這里出現在SQL語(yǔ)句中條件查詢(xún)的~ writer~,也就是$refObj->Fields[$value]這個(gè)里面的相關(guān)內容

{dede:php}標簽:
  許多人希望織夢(mèng)的模板標簽能夠更加靈活,加入可以運行PHP的功能,這里在DedeCMS V5.5中就加入了一個(gè)可以執行php的特殊標簽{dede:php}{/dede:php},這個(gè)標簽可以執行PHP語(yǔ)句了。

  我這里舉幾個(gè)常用的例子:

  1.最簡(jiǎn)單的輸出內容:
  {dede:php}
  $numA = 1;
  $numB = 2;
  echo $numA + $numB;
  {/dede:php}

  這個(gè)輸出的內容是計算結果:3

  2.結合SQL查詢(xún)輸出單條內容
  {dede:php}
  $row = $dsql->GetOne('select id,typename from dede_arctype where id=2');
  print_r($row);
  {/dede:php}

  這個(gè)輸出的內容是
  Array
  (
  [id] => 2
  [typename] => 問(wèn)答
  )

  3.獲取當前頁(yè)面的變量
  比如我們這里進(jìn)入系統后臺的[模板]-[全局標記測試],我們在代碼中填入下面的內容:
  {dede:php}
  print_r($refObj->Fields);
  {/dede:php}

  如果環(huán)境變量保持默認,即“不使用環(huán)境ID”,我們會(huì )看到以下的結果:
  Array
  (
  [typeid] => 0
  [phpurl] => /plus
  [indexurl] => /
  [templeturl] => /templets
  [memberurl] => /member
  [specurl] => /special
  [indexname] => 主頁(yè)
  [templetdef] => /templets/default
  )
  那我們再換個(gè)環(huán)境變量測試看看,這里以我本地的欄目為測試了:
  Array
  (
  [id] => 3
  [reid] => 0
  [topid] => 0
  [sortrank] => 1
  [typename] => 產(chǎn)品
  [typedir] => {cmspath}/product
  … …
  [indexname] => 主頁(yè)
  [templetdef] => /templets/default
  [position] => 主頁(yè) > 產(chǎn)品 >
  [title] => 產(chǎn)品
  )
  這樣一來(lái)就檢索出當前頁(yè)面的局部變量了,接下來(lái)我們可以來(lái)結合前面的SQL語(yǔ)句來(lái)實(shí)現根據不同環(huán)境ID調用內容不同欄目?jì)热荨?br>  例如:
  {dede:php}
  $thisid = $refObj->Fields['id'];
  $row = $dsql->GetOne('select id,typename from dede_arctype where id='.$thisid);
  print_r($row);
  {/dede:php}
  這樣是來(lái)調用當前欄目的標題,這個(gè)標簽功能類(lèi)似于{dede:field.typename/}

自定義標簽:
  DedeCMS從V5.3開(kāi)始就支持自己擴展標簽,不過(guò)許多新人很少用那個(gè)東西,今天我就來(lái)簡(jiǎn)單的介紹下如何編寫(xiě)自己的調用標簽。
  我們需要知道下擴展標簽的存放目錄及文件名構成,首先,擴展的標簽都是存放在/include/taglib這個(gè)目錄,名稱(chēng)都是以“標簽名.lib.php”格式,例如{dede:channel/}標簽對應的是channel.lib.php文件。
  我們可以看一個(gè)示例標簽:demotag.lib.php
  
  if(!defined('DEDEINC'))
  {
  exit("Request Error!");
  }
  function lib_demotag(&$ctag,&$refObj)
  {
  global $dsql,$envs;
  //屬性處理
  $attlist="row|12,titlelen|24";
  FillAttsDefault($ctag->CAttribute->Items,$attlist);
  extract($ctag->CAttribute->Items, EXTR_SKIP);
  $revalue = '';
  //你需編寫(xiě)的代碼,不能用echo之類(lèi)語(yǔ)法,把最終返回值傳給$revalue
  //------------------------------------------------------
  $revalue = 'Hello Word!';
  //------------------------------------------------------
  return $revalue;
  }
  ?>
  我們登錄系統后臺的[模板]-[全局標簽測試]中運行{dede:demotag/},顯示如下的結果:
 
  這里我們知道,其實(shí)標簽生成的內容其實(shí)是這個(gè)函數的一個(gè)返回值,這里返回的內容都是字符串,也就是函數return $revalue;中的$revalue需要是經(jīng)過(guò)處理后生成的字符串。
  $attlist="row|12,titlelen|24";這個(gè)是屬性列表,這個(gè)經(jīng)過(guò)函數處理后會(huì )直接生成變量并復制,我們可以測試下,做如下的修改:
  $revalue = 'Hello Word!';
  $revalue .="Row:".$row.";TitleLen:".$titlelen;
 
  這樣我們可以看到,這個(gè)屬性已經(jīng)被創(chuàng )建變量并且賦值了。
  接下來(lái)我們可以再進(jìn)一步去修改這個(gè)標簽。
  比如說(shuō)我們需要寫(xiě)一個(gè)標簽專(zhuān)門(mén)來(lái)查詢(xún)文章內容頁(yè)的那個(gè)相關(guān)文章,功能類(lèi)似于上面sql標簽中的那個(gè)sql,只是這里我們將其分裝為一個(gè)標簽。
  我們可以新建一個(gè)標簽,例如叫writerarc,那我們就需要創(chuàng )建一個(gè)writerarc.lib.php,然后模仿demotag編寫(xiě)函數,注意需要修改為
  function lib_writerarc(&$ctag,&$refObj)
  接下來(lái)我們就可以編寫(xiě)查詢(xún)語(yǔ)句及對底層模板處理的相關(guān)函數了
  $revalue = '';
  $innertext = $ctag->GetInnerText();
  $ctp = new DedeTagParse();
  $ctp->SetNameSpace('field', '[', ']');
  $sql = "SELECT * FROM dede_archives WHERE writer='{$refObj->Fields['writer']}' limit 0, $row";
  $innertext這個(gè)是用來(lái)獲取標簽的底層模板的,$ctp創(chuàng )建用于處理底層模板中的變量,并處理進(jìn)行替換。我們根據獲取的屬性編寫(xiě)我們的sql語(yǔ)句,這里我們使用limit 0, $row,這樣就可以根據$row來(lái)確定查詢(xún)的內容數目。
  當然我們可以獲取更多的屬性以便我們這個(gè)標簽更強大,例如我們可以增加類(lèi)似于arclist中的相關(guān)屬性,并在函數中進(jìn)行處理,不過(guò)這個(gè)需要有一定的PHP基礎。
  接下來(lái)我們通過(guò)執行查詢(xún)對sql及輸出變量進(jìn)行處理:
  $dsql->Execute('me',$sql);
  while($rs = $dsql->GetArray('me'))
  {
  //根據屬性處理查詢(xún)變量
  $rs['title'] = cn_substr($rs['title'], $titlelen);
  //獲取底層模板
  $ctp->LoadSource($innertext);
  foreach($ctp->CTags as $tagid=>$ctag) {
  if(!empty($rs[strtolower($ctag->GetName())])) {
  $ctp->Assign($tagid,$rs[$ctag->GetName()]);
  }
  }
  //根據底層模板及查詢(xún)變量得到處理結果
  $revalue .= $ctp->GetResult();
  }
  這樣我們就將查詢(xún)出來(lái)的結果同底層模板中出現的相關(guān)變量進(jìn)行替換,然后生成輸出字符串,將所有的字符串信息存儲到$revalue中。
  最后返回這個(gè)值return $revalue;
  整個(gè)文件內容如下:
  
  if(!defined('DEDEINC'))
  {
  exit("Request Error!");
  }
  function lib_writerarc(&$ctag,&$refObj)
  {
  global $dsql,$envs;
  //屬性處理
  $attlist="row|12,titlelen|24";
  FillAttsDefault($ctag->CAttribute->Items,$attlist);
  extract($ctag->CAttribute->Items, EXTR_SKIP);
  $revalue = '';
  $innertext = $ctag->GetInnerText();
  $ctp = new DedeTagParse();
  $ctp->SetNameSpace('field', '[', ']');
  $sql = "SELECT * FROM dede_archives WHERE writer='{$refObj->Fields['writer']}' limit 0, $row";
  $dsql->Execute('me',$sql);
  while($rs = $dsql->GetArray('me'))
  {
  //根據屬性處理查詢(xún)變量
  $rs['title'] = cn_substr($rs['title'], $titlelen);
  //獲取底層模板
  $ctp->LoadSource($innertext);
  foreach($ctp->CTags as $tagid=>$ctag) {
  if(!empty($rs[strtolower($ctag->GetName())])) {
  $ctp->Assign($tagid,$rs[$ctag->GetName()]);
  }
  }
  //根據底層模板及查詢(xún)變量得到處理結果
  $revalue .= $ctp->GetResult();
  }
  return $revalue;
  }
  ?>
  接下來(lái)我們來(lái)測試我們這個(gè)標簽,我們修改article_article.htm模板,在里面加入以下的標簽代碼:
  {dede:writerarc row='10' titlelen='6'}
  [field:title/]
  {/dede:writerarc}
  通過(guò)動(dòng)態(tài)瀏覽頁(yè)面進(jìn)行查看調試,我們會(huì )發(fā)現標簽起作用了,輸出了我們的內容。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
PHP教程 67 - 項目 dede內容搜索頁(yè)面
給織夢(mèng)的dede:channel增加可選擇范圍的屬性 | 楓葉的網(wǎng)站建設博客
設置dedecms標簽 [field:global.autoindex/] 初始值
dedecms織夢(mèng) 調用欄目(分類(lèi))的文章數量的兩種方法
DEDECMS數據庫執行原理、CMS代碼層SQL注入防御思路
linux主機如何實(shí)現Dedecms tags標簽靜態(tài)化
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久