今天在修改模板中的发帖按钮时,突然发现 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'] 。
当然在以前我们也是很少用到直接在模板中调用这些变量的。为了提高效率,我们为什么不仅仅定义了几个常量。而不是全部都定义了。希望大家在制作 Discuz X 模板是注意这一点。