2012-11-09 74 views
0

希望有人能幫助我。我在CMSMS中使用smarty,並在我的頁面中運行了一個名爲User Defined Tag的用戶定義標記。這包含以下代碼:調用未知方法'_compile_source'。 Smarty 3

$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: Call of unknown method '_compile_source'.

我猜的源代碼編譯方法現在已經貶值的Smarty的3人都可以點我在更換或得到這個方法再次合作的正確方向?

非常感謝

回答

0

替換:

$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']);