0

希望有人可以帮助我。我在 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 中已经被贬值了。谁能指出我正确的替换方向或让它再次工作的方法?

非常感谢

4

1 回答 1

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']);
于 2013-11-11T10:39:59.840 回答