今天在修改模板中的發帖按鈕時,突然發現 Discuz! X 模板文件中一直沿用的 {STYLEIMGDIR} 竟然不能用了,模板中沒有解析了,之後只好翻了翻代碼。發下與前一個版本 X1.5 不同的定義方式。 X2 中去除了模板變量全部定義為常量的部分:

  1. if(is_array($this->var['style'])) {
  2.         foreach($this->var['style'] as $key => $val) {
  3.                 $key= strtoupper($key);
  4.                 if(!defined($key)&& !is_array($val)) {
  5.                         define($key,$val);
  6.                 }
  7.         }
  8. }

改為隻手動定義了:

  1. define('IMGDIR',$this->var['style']['imgdir']);
  2. define('STYLEID',$this->var['style']['styleid']);
  3. define('VERHASH',$this->var['style']['verhash']);
  4. define('TPLDIR',$this->var['style']['tpldir']);
  5. define('TEMPLATEID',$this->var['style']['templateid']);

防止了冗餘定義其他不常用常量的弊端。
在頁面模板中我們可以通過直接調用變量的方式調用後台自定義的值。
例如:我要調用自定義的擴展圖片目錄 {STYLEIMGDIR},我就可以寫成:
$_G['style']['styleimgdir'] 。
當然在以前我們也是很少用到直接在模板中調用這些變量的。為了提高效率,我們為什麼不僅僅定義了幾個常量。而不是全部都定義了。希望大家在製作 X2 的模板是注意這一點。