当我启用缓存时,我在我的项目中使用Smarty它似乎不起作用。 我使用以下结构:
index.php - display(index.tpl)
index.tpl - {include 文件= $ page_center}
?module = product - $ smarty-> assign(“page_center”, “product.tpl”);
在product.php中,模板product.tpl必须加载到index.tpl的中心。 当我启用缓存时,它仍然显示默认内容而不是product.tpl。禁用缓存时,它可以正常工作。启用缓存时有什么问题?
答案 0 :(得分:8)
您需要为每个页面使用唯一的缓存ID才能使其正常工作:
$cacheID = 'some_unique_value_for_this_page';
$smarty->assign('page_center', 'product.tpl');
$smarty->display('index.tpl', $cacheID);
根据您在问题中提供的示例,使用查询字符串中的模块名称作为缓存ID的基础是有意义的。
有关Smarty手册的更多信息:http://www.smarty.net/manual/en/api.display.php
答案 1 :(得分:0)
你需要创建一个动态模块!
function smarty_block_dynamic($param, $content, &$smarty) {
return $content;
}
然后
$smarty = new Smarty
$smarty->register_block('dynamic',
'smarty_block_dynamic',
false /* this block wont be cached */);
和你的tpl
Hello {$name}
this is your las update
{/dyamic}
{include file="some/dynamic/thing.tpl"}
{/dynamic}
答案 2 :(得分:0)
在尝试解决智能缓存问题之前,即如果没有发生缓存,请检查您的templates_c文件夹是否具有对所有
的读写权限