首先:ecshop系统本身没有自己的标签库,他带了一系列的框架文件和模版库文件,搭建模版时使用模版框架搭建界面,具体的数据展示是模版框架调用模版库,在模版库里写数据和数据展示格式,它的数据也不像其他cms那样的自定义标签,而是使用smarty这个标签引擎的,这里说下如何自定义标签库
1,在themes\模版名称\library 下建立模版库文件
这个目录是系统自带的模版库,大部分功能都是用它们完成的,这里重要的是自定义模版库。
方法很简单,新建一个文件 以.lbi后缀就行了,程序自己会读取目录文件展示
具体在admin/template.php里$template_dir= @opendir(ROOT_PATH . 'themes/');
重要的是如何从数据库里读取数据并展示出来
ecshop里有2个文件 必须要知道
lib_main.php 从数据库里取数据的文件
lib_insert.php 封装后台取得的数据给前台的文件,因为在php里使用smarty取函数的数据时,需要使用insert,所以这里命名为lib_insert.php
这里,我们为了不混淆自己的函数和ecshop的函数,我们自己创建这样的两个文件,lib_zhp_function.php和 lib_insert.php功能和ecshop里的lib_main.php和lib_insert.php一样。
下面以“在首页取最新的评论”为例:
首先我在lib_zhp_function.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/test.lbi');
$GLOBALS['smarty']->caching = $need_cache;
$GLOBALS['smarty']->force_compile = $need_compile;
return $val;
}
然后 需要创建显示评论的模版库,test.lbi
最后在首页里调用就行了:
{insert name="index_new_comment" sum=8}