21,886
社区成员
发帖
与我相关
我的任务
分享
<?php
function smarty_function_execsql($params, &$smarty) {
$sql = rawurldecode($params["sql"]);//有需要的话,还可以有其他参数
$name = 'dbdata';
$query=$smarty->db->query($sql);
$dbdata = array();
while($rt = $smarty->db->fetch_array($query)){
$dbdata[]=$rt;
}
$smarty->assign(array($name => $dbdata));
}
?>
function parseMyPlugins(&$_source_content,$myPlugins) {
//根据$myPlugins查出数据库里的对应的标签。得到结果数组$dbPlugins
foreach($dbPlugins as $plugins){
$parseString = "";
//为了不让语句里的引号与模板的引号起冲突,用rawurlencode编码
$parseString .= $this->left_delimiter.'execsql sql=\''.rawurlencode($plugins['Sql']).'\''.$this->right_delimiter;
//这里你的内容没有遵循smarty的规范,那你就只有再把它格式化为规范的写法,用到的数据变量名为dbdata
$plugins['Template'] = ********;
$parseString .= $plugins['Template'];
$_source_content = str_replace('{{{'.$plugins['LabelName'].'}}}',$parseString,$_source_content);//替换
}
}