0
我能夠檢測到移動。當檢測到移動時,我將SD_IS_MOBILE設置爲true。如何使基於移動檢測的smarty更改資源(模板)名稱
在我的腳本我顯示smarty的模板,如下所示:
$smarty->display("page.tpl.html");
在模板直接存在2個模板文件:
page.tpl.html.d
page.tpl.html.m
d爲桌面,m爲更多的移動。
Smarty不會找到我要求的模板(這是我期望的),然後它使用我的default_template_handler函數來加載正確的模板。
function __default_template_handler($resource_type, $resource_name, &$template_source, &$template_timestamp, $smarty_obj) {
if ($resource_type == 'file') {
if (SD_IS_MOBILE && file_exists(SD_TEMPLATE_ROOT.$resource_name.".m")) {
$template_source = file_get_contents(SD_TEMPLATE_ROOT.$resource_name.".m");
$template_timestamp = filemtime(SD_TEMPLATE_ROOT.$resource_name.".m");
$resource_name = $resource_name.".m";
return true;
} elseif (file_exists(SD_TEMPLATE_ROOT.$resource_name.".d")) {
$template_source = file_get_contents(SD_TEMPLATE_ROOT.$resource_name.".d");
$template_timestamp = filemtime(SD_TEMPLATE_ROOT.$resource_name.".d");
$resource_name = $resource_name.".d";
return true;
}
return false;
}
}
問題是,smarty以原始名稱「page.html.tpl」編譯。我怎樣才能讓它使用「.m」和「.d」擴展進行編譯?我以爲我可以改變default_template_handler函數資源類型參數來傳遞值並更改資源名稱(正如我上面所做的那樣),但是smarty不會讓我。