ECSHOP前台的数据是调用模板库,也就是在\themes\your_template\library文件夹下的库文件。在这些库文件中都是采用smarty的标签引擎。接下来简要介绍一下如何使用自定义的模板库。
1.在themes\your_template\library文件夹下创建.lib结尾的文件。该目录下的库文件程序会自动读取,参照admin/template.php里$template_dir= @opendir(ROOT_PATH . 'themes/')。
注意:在这之后,我们要弄清楚的是ecshop是如何从数据库取出数据展现在前台的,也就是说我们需要知道前台的展示和库文件之间的关系。在这里我们要特别关注两个文件lib_main.php和lib_insert.php,其中lib_main.php文件封装了数据库取数据的操作,而lib_insert.php则负责把后台的数据取出给前台的文件。
2.创建lib_newcoment.php,此文件中式最新评论的函数
function index_new_comment($sum)
{
/* 取得评论列表 */
$sql = 'SELECT * FROM ' . $GLOBALS['ecs']->table('comment') .
" WHERE status = 1 AND parent_id = 0".
' ORDER BY addtime DESC';
$res = $GLOBALS['db']->selectLimit($sql, $sum["sum"], 0);
$arr = array();
$ids = '';
while ($row = $GLOBALS['db']->fetchRow($res))
{
$ids .= $ids ? ",$row[comment_id]" : $row['comment_id'];
$arr[$row['comment_id']]['id'] = $row['comment_id'];
$arr[$row['comment_id']]['email'] = $row['email'];
$arr[$row['comment_id']]['username'] = $row['user_name'];
$arr[$row['comment_id']]['content'] = str_replace('\r\n', '<br />', htmlspecialchars($row['content']));
$arr[$row['comment_id']]['content'] = str_replace('\n', '<br />', $arr[$row['comment_id']]['content']);
$arr[$row['comment_id']]['rank'] = $row['comment_rank'];
$arr[$row['comment_id']]['add_time'] = local_date($GLOBALS['_CFG']['time_format'], $row['add_time']);
}
$cmt = array('comments' => $arr);
return $cmt;
}
接着在lib_insert.php封装从后台取的数据给前台
function insert_index_new_comment($sum=8){
$need_cache = $GLOBALS['smarty']->caching;
$need_compile = $GLOBALS['smarty']->force_compile;
$GLOBALS['smarty']->caching = false;
$GLOBALS['smarty']->force_compile = true;
/* 验证码相关设置 */
if ((intval($GLOBALS['_CFG']['captcha']) & CAPTCHA_COMMENT) && gd_version() > 0)
{
$GLOBALS['smarty']->assign('enabled_captcha', 1);
$GLOBALS['smarty']->assign('rand', mt_rand());
}
$GLOBALS['smarty']->assign('username', stripslashes($_SESSION['user_name']));
$GLOBALS['smarty']->assign('email', $_SESSION['email']);
$GLOBALS['smarty']->assign('comment_type', $arr['type']);
$GLOBALS['smarty']->assign('id', $arr['id']);
$cmt = index_new_comment($sum);
$GLOBALS['smarty']->assign('comments', $cmt['comments']);
$GLOBALS['smarty']->assign('pager', $cmt['pager']);
$val = $GLOBALS['smarty']->fetch('library/newcoment.lbi');
$GLOBALS['smarty']->caching = $need_cache;
$GLOBALS['smarty']->force_compile = $need_compile;
return $val;
}
最后我们创建显示最新评论的库文件newcoment.lib,之后在首页调用{insert name="index_new_comment" sum=8}就OK了。