知道我的人可能已经看到我昨天发的帖子,被逼无奈我为了这个功能要送极品域名。
我是要在首页调用详细的评论,功能已经实现,截图给大家看下。
由于很少涉及php,所以到处询问,所谓的各大ecshop技术交流群,给我最多的回答是:
“你多钱能做?我帮你问问”
ecshop很无私,开源给我们用,为什么我们不能真正做个技术交流群,交流!懂么
好了,不说了,昨天自己到百度搜了一些关于smart的一些文章,还有一个smart开发文章,现在分享给大家,并且就首页显示评论的功能教大家怎么去做,怎么个思维。
在这之前,请大家看看这篇文章
http://linux.chinaitlab.com/PHP/38324.html
smart手册我附件里下载
现在开始教大家这个功能的实现过程
首先大家要明白ecshop的目录结构
includes 【程序库文件,直观理解就是首页的php文件是直接调用功能函数的,而这些函数都在includes下集中保存了,方便调用】
themes 【模板目录】
功能要在 index.php 页面实现 html布局要写在 index.dwt 模板文件里
记住一个重要的思想:“
index.php里我们把要显示的内容都保存到一个变量,,在到index.dwt显示出这个变量”
理论上,我们在index.php加入php代码就可以了,但是为了程序结构清晰,我们把稍微复杂的程序写到includes函数库中。
下面我们怎么做呢,我们目前要考虑的是,把要调用的内容存在变量里,内容在哪呢,mysql数据库,对。
我选择了修改 lib_goods.php 这个库函数文件,主要参考了 调用最新商品的函数也在这里,所以就选择了这个文件,具体includes下的文件结构,我还不懂。
在任意位置,当然不要加到其他函数里面去了,添加如下代码:
【代码我也不太会写,主要参考了admin目录下的,comment_manage.php】
ps://后面的注释可以都删掉,我只是想给大家说明白为什么这样写
复制内容到剪贴板
代码:
/**
* 获得首页评论列表
*/
function get_comment_index() //函数名 index.php我们要调用的
{
$sql = "SELECT * FROM " .$GLOBALS['ecs']->table('comment'). " WHERE parent_id = 0 and status = 1 ORDER BY comment_id DESC LIMIT 5 "; // 查询数据库,parent_id 0是用户的评论,屏蔽掉了管理员的回复;status 是允许显示的评论,limit 5 限制只显示5条,大家可以随意改
$result = $GLOBALS['db']->getAll($sql); // 执行这个查询
$comment = array(); //建立一个数组
foreach ($result AS $idx => $row) //建立循环,循环所有查询的条数
{
$comment[$idx]['id'] = $row['comment_id']; // 评论id ,,一般用不上,但这里调用了备用
$comment[$idx]['name'] = $row['user_name']; // 评论人
$comment[$idx]['content'] = $row['content']; //评论内容
$comment[$idx]['rank'] = $row['comment_rank']; //评论分数
$comment[$idx]['time'] = local_date($GLOBALS['_CFG']['time_format'], $row['add_time']); //评论时间 [这个我没测试,结果不一定对]
if ($row['comment_type'] == 0) //comment_type 区别了是文章调用,还是商品调用
{
$sql = "SELECT goods_name FROM " .$GLOBALS['ecs']->table('goods'). " WHERE goods_id = '$row[id_value]'"; //查询商品表,id_value 是评论表里的数据,指定了评论对象的id
$comment[$idx]['title'] = $GLOBALS['db']->getOne($sql); //取得评论对象
$comment[$idx]['url'] = "goods.php?id=$row[id_value]"; //取得评论对象的url
}
else
{
$sql = "SELECT title FROM " .$GLOBALS['ecs']->table('article'). " WHERE article_id='$row[id_value]'"; //查询文章表 id_value 共用的
$comment[$idx]['title'] = $GLOBALS['db']->getOne($sql); //取得评论对象
$comment[$idx]['url'] = "article.php?id=$row[id_value]"; //取得评论对象的url
}
}
return $comment;
}
index.php :
88 行下面加上
复制内容到剪贴板
代码:
$smarty->assign('comment', get_comment_index()); // 评论列表大概理解为,get_comment_index() 函数取得的内容,送到comment 变量,在模板中调用
index.dwt: 大家自己分析吧,,能看懂这篇文章的,模板部分肯定没问题。回应功能还没做,日后需要加上。
复制内容到剪贴板
代码:
<!--------------------------评论调用 START ----------------------->
<!--{foreach from=$comment item=comment}-->
<UL class="tlst">
<LI class="ilst" style="CLEAR: both"><A title=國產凌凌漆
href="http://www.douban.com/subject/1307739/"><IMG class=fil alt=國產凌凌漆
src="images/s2865043.jpg"></A> </LI>
<LI class="clst"><SPAN class="pl ll obss"><SPAN class=starb><A
href="http://url">{$comment.name}</A> 评论: <A
href="{$comment.url}">{$comment.title}</A> </SPAN><SPAN
class="stars{$comment.rank} stars"></SPAN></SPAN><BR><BR>
<DIV class="pl">{$comment.content|truncate:90:"..."}<A class=pl href="http://url">(48回应)</A></DIV>
</LI></UL>
<DIV class=clear></DIV>
<!--{/foreach}-->
<!--------------------------评论调用 END--------------------------->功能截图:
[
本帖最后由 柴火 于 2008-7-21 11:27 编辑 ]