希望有人可以帮助我。我在CMSMS中使用smarty并在我的页面中运行一个称为用户定义标记的东西。这包含以下代码:
$db = cmsms()->GetDb();
$menu = $smarty->get_template_vars('page');
$user_id = $smarty->get_template_vars('userid');
if (!isset($user_id)) {
$user_id = -1;
}
// Getting menu items from DB
$query = 'SELECT * FROM '. cms_db_prefix() .'module_tools_options
WHERE active = 1 AND user_id = ? AND menu = ?
ORDER BY sort';
$dbresult = $db->Execute($query, array($user_id, $menu));
while ($dbresult && $row = $dbresult->FetchRow()) {
$smarty->_compile_source('preprocess template', $row['title'], $_compiled);
@ob_start();
$smarty->_eval('?>' . $_compiled);
$result = @ob_get_contents();
@ob_end_clean();
echo '<li id="menu_' . $row['option_id'] . '">' . $result . "</li>\n";
}
我已升级了CMSMS安装,因此它现在运行smarty 3,这打破了我的页面。我收到以下错误:
/lib/smarty/sysplugins/smarty_internal_templatebase.php:调用未知方法'_compile_source'。
我猜Compile Source方法已经在Smarty 3中被折旧。任何人都可以指出我的替换方向是正确的方法还是让方法重新开始工作的方法?
非常感谢
答案 0 :(得分:1)
替换:
$smarty->_compile_source('preprocess template', $row['title'], $_compiled);
@ob_start();
$smarty->_eval('?>' . $_compiled);
$result = @ob_get_contents();
@ob_end_clean();
使用:
$result = $smarty->fetch('string:'.$row['title']);