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了。