教你在任何地方调用任何内容【代码级】
知道我的人可能已经看到我昨天发的帖子,被逼无奈我为了这个功能要送极品域名。我是要在首页调用详细的评论,功能已经实现,截图给大家看下。
由于很少涉及php,所以到处询问,所谓的各大ecshop技术交流群,给我最多的回答是:
[size=4][color=red][b]“你多钱能做?我帮你问问”[/b][/color][/size]
ecshop很无私,开源给我们用,为什么我们不能真正做个技术交流群,交流!懂么
好了,不说了,昨天自己到百度搜了一些关于smart的一些文章,还有一个smart开发文章,现在分享给大家,并且就首页显示评论的功能教大家怎么去做,怎么个思维。
在这之前,请大家看看这篇文章
[url=http://linux.chinaitlab.com/PHP/38324.html]http://linux.chinaitlab.com/PHP/38324.html[/url]
smart手册我附件里下载
[size=4][b]现在开始教大家这个功能的实现过程[/b][/size]
[b][size=4][/size][/b]
[size=2]首先大家要明白ecshop的目录结构[/size]
[size=2][/size]
includes 【程序库文件,直观理解就是首页的php文件是直接调用功能函数的,而这些函数都在includes下集中保存了,方便调用】
themes 【模板目录】
功能要在 index.php 页面实现 html布局要写在 index.dwt 模板文件里
记住一个重要的思想:“[color=darkorange]index.php里我们把要显示的内容都保存到一个变量,,在到index.dwt显示出这个变量[/color]”
理论上,我们在index.php加入php代码就可以了,但是为了程序结构清晰,我们把稍微复杂的程序写到includes函数库中。
下面我们怎么做呢,我们目前要考虑的是,把要调用的内容存在变量里,内容在哪呢,mysql数据库,对。
我选择了修改 lib_goods.php 这个库函数文件,主要参考了 调用最新商品的函数也在这里,所以就选择了这个文件,具体includes下的文件结构,我还不懂。
在任意位置,当然不要加到其他函数里面去了,添加如下代码:
【代码我也不太会写,主要参考了admin目录下的,comment_manage.php】
ps://后面的注释可以都删掉,我只是想给大家说明白为什么这样写[code]/**
* 获得首页评论列表
*/
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;
}[/code][size=2][/size]
index.php :
88 行下面加上[code] $smarty->assign('comment', get_comment_index()); // 评论列表[/code]大概理解为,get_comment_index() 函数取得的内容,送到comment 变量,在模板中调用
index.dwt: 大家自己分析吧,,能看懂这篇文章的,模板部分肯定没问题。回应功能还没做,日后需要加上。[code]<!--------------------------评论调用 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--------------------------->[/code]功能截图:
[attach]13346[/attach]
[[i] 本帖最后由 柴火 于 2008-7-21 11:27 编辑 [/i]] 这么好的资料,不顶对不起自己 哈哈,2楼的朋友,见笑了啊!~
好多都是自己理解的,专业人士看了肯定会忍不住笑。:D 汗,那个评论内容。。。。刚看到 :L :L :L 17722701 店长互助群 顶你!!! [quote]ecshop很无私,开源给我们用,为什么我们不能真正做个技术交流群,交流!懂么[/quote]
支持:victory: 柴火我想点燃你.你和我最近遇上的事情好像.我也在玩命搞PHP.哈哈.
我研究了在首页任意调用产品的程序.也准备要贴出来的.你的不错.顶下 :victory: :victory: 楼主太伟大了。。 觉得 lz有点尴尬。
这种难度等级 上不足 下有余
感觉和phper共同探讨程序优化和二次开发进步更快
至于普通想改模板的同志 不如自己先看看编程的基本语法 和 smarty基本语法 再做深入 楼主你太伟大啦。。
我提个建议大家是否可以把做模板的经验集中整理到一个贴呢?官方介绍的太少啦。 :handshake 理解了很多思路,不错 楼主你太伟大啦。。 谢谢!!!!! 也顶一下,谢谢分享 呵呵,我看了,没什么感觉。 感谢楼主,需要楼主这样的好人啊!
谢谢! 学习中
谢谢楼主!
:handshake :handshake 学习中
谢谢楼主!
:handshake :handshake
页:
[1]
2
