ECShop 网上商店系统支持论坛's Archiver

柴火 发表于 2008-7-21 11:25

教你在任何地方调用任何内容【代码级】

知道我的人可能已经看到我昨天发的帖子,被逼无奈我为了这个功能要送极品域名。

我是要在首页调用详细的评论,功能已经实现,截图给大家看下。

由于很少涉及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]]

lictor 发表于 2008-7-21 11:50

这么好的资料,不顶对不起自己

柴火 发表于 2008-7-21 11:53

哈哈,2楼的朋友,见笑了啊!~

好多都是自己理解的,专业人士看了肯定会忍不住笑。:D

柴火 发表于 2008-7-21 11:53

汗,那个评论内容。。。。刚看到  :L :L :L

柴火 发表于 2008-7-22 11:00

17722701 店长互助群

liu6901973 发表于 2008-8-25 15:37

顶你!!!

ngai 发表于 2008-8-26 18:33

[quote]ecshop很无私,开源给我们用,为什么我们不能真正做个技术交流群,交流!懂么[/quote]
支持:victory:

mzsq39 发表于 2008-8-27 00:01

柴火我想点燃你.你和我最近遇上的事情好像.我也在玩命搞PHP.哈哈.

我研究了在首页任意调用产品的程序.也准备要贴出来的.你的不错.顶下

gsminfo 发表于 2008-8-27 00:23

:victory: :victory:

asher 发表于 2008-8-27 00:37

楼主太伟大了。。

颠木 发表于 2008-8-27 09:37

觉得 lz有点尴尬。
这种难度等级 上不足 下有余
感觉和phper共同探讨程序优化和二次开发进步更快
至于普通想改模板的同志 不如自己先看看编程的基本语法 和 smarty基本语法 再做深入

风中落叶 发表于 2008-8-27 17:52

楼主你太伟大啦。。

我提个建议大家是否可以把做模板的经验集中整理到一个贴呢?官方介绍的太少啦。

richtime 发表于 2008-8-28 15:51

:handshake 理解了很多思路,不错

menbao 发表于 2008-8-29 16:56

楼主你太伟大啦。。

lazyant 发表于 2008-8-29 23:36

谢谢!!!!!

28657164 发表于 2008-10-13 15:20

也顶一下,谢谢分享

longhtml 发表于 2008-11-5 12:50

呵呵,我看了,没什么感觉。

老虎刀铺 发表于 2008-11-9 20:49

感谢楼主,需要楼主这样的好人啊!
谢谢!

strive2008 发表于 2008-11-12 18:17

学习中
谢谢楼主!
:handshake :handshake

strive2008 发表于 2008-11-12 18:18

学习中
谢谢楼主!
:handshake :handshake

页: [1] 2

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.