うまくいけば、誰かがこれで私を助けてくれます。私は 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 で減価償却されたと思います。だれかが、その置換の正しい方向、またはこれを再び機能させる方法を教えてもらえますか?
どうもありがとう