discuz 模版 php函数,dz function template 函数解析

php文件使用模板include_once

template("diy:portal/view:{$catid}", NULL, NULL, NULL, ,

$cat['articleprimaltplname']);"E:\wamp\www\mydz0.com\./data/template/1_diy_portal_view.tpl.php"$cat['articleprimaltplname']);$cat['articleprimaltplname']  "portal/view"$catid

"135"$cat['articleprimaltplname']    "portal/view_pm_3"

function template($file, $templateid = 0, $tpldir = '', $gettplfile = 0, $primaltpl='') {

global $_G;

static $_init_style = false;

if($_init_style === false) {

$discuz = & discuz_core::instance();

$discuz->_init_style();//初始化模板风格

$_init_style = true;

}

$oldfile = $file;

if(strpos($file, ':') !== false) {

$clonefile = '';

list($templateid, $file, $clonefile) = explode(':', $file);

//diy    portal/view     135

$oldfile = $file; //$oldfile = portal/view

$file = empty($clonefile) || STYLEID != $_G['cache']['style_default']['styleid'] ? $file : $file.'_'.$clonefile;

//$file = portal_view_135

if($templateid == 'diy' && STYLEID == $_G['cache']['style_default']['styleid']) {

$_G['style']['prefile'] = '';

$diypath = DISCUZ_ROOT.'./data/diy/'; //DIY模板文件目录

$preend = '_diy_preview';

$_G['gp_preview'] = !empty($_G['gp_preview']) ? $_G['gp_preview'] : '';

$curtplname = $oldfile;

if(isset($_G['cache']['diytemplatename'.$_G['basescript']])) {

$diytemplatename = &$_G['cache']['diytemplatename'.$_G['basescript']];

} else {

$diytemplatename = &$_G['cache']['diytemplatename'];

}

{如果满足以下条件,则$tpldir = ‘data/diy’

否则 $file = $primaltpl? $primaltpl: $oldfile;

$_G['cache']['style_default']['styleid']

:       1$_G['gp_preview']                    :       0$curtplname =

$oldfile; $_G['basescript']                     :        portal

$_G['cache']['diytemplatename'.$_G['basescript']] :

["portal/view_130"]=>  bool(true)  ["portal/view_135"]=>  bool(true)  ["portal/list_2"]=>  bool(true)

......}

$tplsavemod = 0;

if(isset($diytemplatename[$file]) &&

file_exists($diypath.$file.'.htm') && ($tplsavemod= 1) || ($file

= $primaltpl ? $primaltpl : $oldfile) &&

isset($diytemplatename[$file]) &&

file_exists($diypath.$file.'.htm')) {

$tpldir = 'data/diy';

!$gettplfile && $_G['style']['tplsavemod'] = $tplsavemod;

$curtplname = $file;

if($_G['gp_diy'] == 'yes' || $_G['gp_preview'] == 'yes') { //DIY模式或预览模式下做以下判断

$flag = file_exists($diypath.$file.$preend.'.htm');

if($_G['gp_preview'] == 'yes') {

$file .= $flag ? $preend : '';

} else {

$_G['style']['prefile'] = $flag ? 1 : '';

}

}

} else {

$file = $primaltpl ? $primaltpl : $oldfile;

//$file = portal/view_pm_3.htm;

}

$tplrefresh = $_G['config']['output']['tplrefresh'];

if($tpldir == 'data/diy' && ($tplrefresh==1 ||

($tplrefresh > 1 && !($_G['timestamp'] % $tplrefresh)))

&& filemtime($diypath.$file.'.htm') <

filemtime(DISCUZ_ROOT.TPLDIR.'/'.($primaltpl ? $primaltpl :

$oldfile).'.htm')) {

if (!updatediytemplate($file)) {

unlink($diypath.$file.'.htm');

$tpldir = '';

}

}

if (!$gettplfile && empty($_G['style']['tplfile'])) {

$_G['style']['tplfile'] = empty($clonefile) ? $curtplname : $oldfile.':'.$clonefile;

}

$_G['style']['prefile'] = !empty($_G['gp_preview']) &&

$_G['gp_preview'] == 'yes' ? '' : $_G['style']['prefile'];

} else {

$tpldir = './source/plugin/'.$templateid.'/template';

//如果$templateid不为diy,则为插件模板目录

}

}

//如果是ajax请求

$file .= !empty($_G['inajax']) && ($file == 'common/header' || $file == 'common/footer') ? '_ajax' : '';

//如果是ajax请求,则common/header 变为 common/header_ajax

{

./static/common.js 中封装的ajax请求中 processHandle

if(aj.recvType == 'HTML') {

aj.resultHandle(aj.XMLHttpRequest.responseText,aj);

} else if(aj.recvType == 'XML') {

if(!aj.XMLHttpRequest.responseXML

||!aj.XMLHttpRequest.responseXML.lastChild

||aj.XMLHttpRequest.responseXML.lastChild.localName == 'parsererror') {

aj.resultHandle('

target="_blank"style="color:red">内部错误,无法显示此内容' , aj);

} else {

aj.resultHandle(aj.XMLHttpRequest.responseXML.lastChild.firstChild.nodeValue,aj);

}

}

}

$tpldir = $tpldir ? $tpldir : (defined('TPLDIR') ? TPLDIR : '');

// 模板路径

$templateid = $templateid ? $templateid : (defined('TEMPLATEID') ? TEMPLATEID : '');

$filebak = $file;

//$filebak = $file;如果STYLEID 不是默认的id,则$filebak 为:portal/view

if(defined('IN_MOBILE') &&!defined('TPL_DEFAULT') &&

strpos($file, 'mobile/') === false || $_G['forcemobilemessage']) {

$file = 'mobile/'.$oldfile;

}

$tplfile = ($tpldir ? $tpldir.'/' : './template/').$file.'.htm';

//./template/default/portal/view_pm_3.htm

$file == 'common/header' && defined('CURMODULE') &&

CURMODULE && $file =

'common/header_'.$_G['basescript'].'_'.CURMODULE;

if(defined('IN_MOBILE') &&!defined('TPL_DEFAULT')) {

if(strpos($tpldir, 'plugin')) {

if(!file_exists(DISCUZ_ROOT.$tpldir.'/'.$file.'.htm')) {

require_once libfile('class/error');

discuz_error::template_error('template_notfound', $tpldir.'/'.$file.'.htm');

} else {

$mobiletplfile = $tpldir.'/'.$file.'.htm';

}

}

!$mobiletplfile && $mobiletplfile = $file.'.htm';

if(strpos($tpldir, 'plugin') && file_exists(DISCUZ_ROOT.$mobiletplfile)) {

$tplfile = $mobiletplfile;

} elseif(!file_exists(DISCUZ_ROOT.TPLDIR.'/'.$mobiletplfile)) {

$mobiletplfile = './template/default/'.$mobiletplfile;

if(!file_exists(DISCUZ_ROOT.$mobiletplfile) && !$_G['forcemobilemessage']) {

$tplfile = str_replace('mobile/', '', $tplfile);

$file = str_replace('mobile/', '', $file);

define('TPL_DEFAULT', true);

} else {

$tplfile = $mobiletplfile;

}

} else {

$tplfile = TPLDIR.'/'.$mobiletplfile;

}

}

$cachefile = './data/template/'.(defined('STYLEID') ? STYLEID.'_' :

'_').$templateid.'_'.str_replace('/', '_', $file).'.tpl.php';

//./data/template/4_diy_portal_view.tpl.php

if($templateid != 1 &&!file_exists(DISCUZ_ROOT.$tplfile)) {

$tplfile = './template/default/'.$filebak.'.htm';

//./template/default/portal/view.htm

}

if($gettplfile) {

return $tplfile;

}

checktplrefresh($tplfile, $tplfile, @filemtime(DISCUZ_ROOT.$cachefile), $templateid, $cachefile, $tpldir, $file);

return DISCUZ_ROOT.$cachefile;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值