给ecshop新新手的引导语

更新时间:2023-05-09 08:47:21 阅读: 评论:0

动态网站,与静态网站的最大区别是在于动态网站要从数据库拿数据。要即时更新。所以mysql为王。
一个网站,即使再动态,也无非是一张报纸。把信息登上去,让别人阅读。
只是在这张报纸上加上图片,加点会动的信息。网站上登什么信息,就像报社的老板的嘴,他说发什么,
就发什么了。报纸上的内容哪里来?放在mysql数据库里。mysql数据库里放那么多东西,一张报纸页面
那么小,要拿哪些内容。这就要通过php来决定。php通过你的操作,来决定从哪张表里拿到哪些信息。
最终显示到页面上。
如果你没想过这一套,那你就会一直觉得php,mysql什么的是有多么深奥。
我们来看一下这大概的流程:
1.php在前面费了一些周折,最终写出一条sql语句,以期达到它想要的那些数据。
2.php页面执行sql语句。从mysql拿数据。
3.返回的数据一定是数组。这个数组是mysql默认的数据格式,为了方便显示,你一定是想把这个查询得来的数据,
重新赋给一个数组,这样的话,你可以给这个数组加上下标,以便在模板页里显示。从mysql数据库里得来的数据,
是一条一条记录的一个大的二维数组。你把这个大数组数据格式赋给一个数组的结果是,你无法从这个新的数组里
准确地拿出你想要的那条数据。这个时候,你需要把$res查询的结果放在foreach循环里。这
要你把查询结果循环拿出来。把新的数组也要放在foreach里,这样每循环出一条记录,就赋给数组一次
看例子吧,不然晕。
foreach ($res AS $idx => $row)
{
$arr[$idx]['id']          = $row['article_id'];
$arr[$idx]['title']      = $row['title'];
$arr[$idx]['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ?
sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title'];
$arr[$idx]['cat_name']    = $row['cat_name'];
$arr[$idx]['add_time']    = local_date($GLOBALS['_CFG']['date_format'], $row['add_time']);
$arr[$idx]['url']        = $row['open_type'] != 1 ?
build_uri('article', array('aid' => $row['article_id']), $row['title']) : trim($row['file_url']);
$arr[$idx]['cat_url']    = build_uri('article_cat', array('acid' => $row['cat_id']), $row['cat_name']);
}
4.得到你想要的数据之后,第4步就是把这个数组传到模板页面。通过smarty标签显示你想要显示的那条数据。
贯穿整个ecshop的php执行过程莫过于此。
了解了这个大概流程之后,你再看ecshop的程序时,你会减少云里雾里的困惑。
做什么事情都是这
样,纲举目张,你才会拨云见日。
二次开发有喜有悲。
喜于,你不用自己写一个网站底层,你不用做架构,你不用写太多代码,你不用有多少万行的代码书写量。你就可以改程序做网站。
悲于,程序是别人写的,你不知道从哪下手,你不知道怎么改。不了解,何谈二次开发?
很多朋友和我一样,只知道变量的赋值是$a=5;$b=6;$c=$a+$b;只知道mysl_fetch_array(),知道mysql_num_rows(),知道while for foreach
可是当你接解一整套程序的时候,并没有这样的赋值,并没有这样的mysql简单查询。
当你想改一个东西时,找到对应的页面,却发现,突然一个变量的出现,或者一个函数的出现,让你彻底蒙B了。不知道从哪里来,到哪城找。一个突然出现的$GLOBALS全局变量,足够你郁闷一两个小时。
很多朋友像我一样,想象,有没有一个技术文档,能够让你专心读一遍,试一遍,你就可以摆平ecshop了,那是降龙十八掌,那是九阴真经,那是有牛B的老师亲手传授的。当然,那也要靠百炼成钢的。
当然,这个世界上,像洪七公,像欧阳锋这样的师傅很难遇见。因为你不是杨过。
如果你找得到这样的老师,他也懒得教你,因为他自己学完之后都想吐,真正能把自己的所学贡献出来的,大部分是有自己的利益和目的。而像齐永东那样分享的人,也很少见了。虽然他也是为自己的知名度,和流量吧。
如果你找得到这样的老师,你也花不起学费,花不起银子。
好了,说这么多废话,无非是想说明一个问题,很多朋友都幻想有没有捷径用最短的时间最快的速度了解ecshop的全部。
告诉你,没有。
用齐永东的一句话说,这是我的笨办法 。
笨办法就是,从ecshop的index.php从第一行,看到最后一行。
你可能没办法了解每一句是什么意思,但是你可以大致了解他想干什么,他什么。
有的人说,从dwt文件开始看。那致标不致本。
从php页面开始看。釜底抽薪。
当然,你不用把全部的php页面都看完。可能你看完一个index.php、category.php、good.php三个页面之后,就会对整个ecshop的程序架构有了一个很多的了解了。
好了,废话不多说,从index.php开始。
1  index.php第一行。
define('IN_ECS', true);
ecshop很多页面第一行都会有下面这样一行判断。
if (!defined('IN_ECS'))
{
die('Hacking attempt');
}
这是什么意思呢?
大多数情况是这个页面是被另一个页面包含进去的。
加这行判断的意思是说,如果没有定义这个常量,那么,这个页面被访问是黑客的攻
击所进行的操作。
这也就是所说的防跳墙处理。
index.php页面中包含了很多页面,在第一行就定义了这个常量,当它包含进来其它页面的时候,如果浏览器的地址访问到的这个页面不是由index.php入口到达的,那么说明是黑客攻击,程序终止。
2.第18行到40行。
这一部分是对/xxx?xxxx
对于首页地址的一个处理,其中包括了\转换成/ ,地址不对返回index.php等处理。
3.40行到73行。
shopex地址转换。这个不必研究。如果你的ecshop要与shopex进行转换的时候,它会有用。
4.74到90行
判断是否有ajax请求。
这个地方先不用看。后面我会整理一篇ecshop关于ajax的文档。
5.到了92行。
这个位置已经开始向模板页面传递数值了,这里就是首页的大部分操作了。
第100行,assign_template();这个函数从哪来?它什么呢?
$position = assign_ur_here();它又是从哪得到的值呢?//这个变量得到的数据是当前位置。
看下面
$smarty->assign('page_title',      $position['title']);    // 页面标题
$smarty->assign('ur_here',        $position['ur_here']);  // 当前位置
/
* meta information */
$smarty->assign('keywords',        htmlspecialchars($_CFG['shop_keywords']));
$smarty->assign('description',    htmlspecialchars($_CFG['shop_desc']));
$smarty->assign('flash_theme',    $_CFG['flash_theme']);  // Flash轮播图片模板
$smarty->assign('feed_url',        ($_CFG['rewrite'] == 1) ? 'l' : 'feed.php'); // RSS URL
$smarty->assign('categories',      get_categories_tree()); // 分类树
$smarty->assign('helps',          get_shop_help());      // 网店帮助
$smarty->assign('top_goods',      get_top10());          // 销售排行
$smarty->assign('best_goods',      get_recommend_goods('best'));    // 推荐商品
$smarty->assign('new_goods',      get_recommend_goods('new'));    // 最新商品
$smarty->assign('hot_goods',      get_recommend_goods('hot'));    // 热点文章
$smarty->assign('promotion_goods', get_promote_goods()); // 特价商品
$smarty->assign('brand_list',      get_brands());
$smarty->assign('promotion_info',  get_promotion_info()); // 增加一个动态显示所有促销信息的标签栏
$smarty->assign('invoice_list',    index_get_invoice_query());  // 发货查询
$smarty->assign('new_articles',    index_get_new_articles());  // 最新文章
$smarty->assign('group_buy_goods', index_get_group_buy());      // 团购商品
$smarty->assign('auction_list',    index_get_auction());        // 拍卖活动
$smarty->assign('shop_notice',    $_CFG['shop_notice']);      // 商店公告
在此不予介绍smarty相关内容,很简单,一了解就会。所以不废话。
看后面的数值有的是函数,有的是数组  $_CFG这些都是从哪来呢?????
原来在前面的时候忘掉了一行代码,那么回过头去看。就是这一行了。
第18行。require(dirname(__FILE__) . '/includes/init.php');
好,看到这里你就要花费一些时间去来研究一下ecshop/includes/init.php文件了。
这个文件里面有百分之八十你想要的函数。当然了,ecshop的include文件夹下面的文件都是重要文件。大部分功能文件都在这下面了。
不多不少,先说到这。看源代码还是自己的事情,别人再怎么说也没有你一行一行的自己体会理解得更深。
我们所看到的。ecshop并不是那么完善。他有很多功能可以进行二次开发,他有很多页面可以修改成更利于用户体验的。可是,它并没有把这些全部做完,有的东西,即使是开源,完全开源,也是无法做到完全都整合好,再整个发给你直接就能用的。
商品的相册功能,商品尺寸选择,属性库存颜色变化功能,简化购物流程,ajax更新购物车,等等。
前端页面的修改与美化,增强用户体验等。
正是ecshop,有了这样一个优秀的开源框架,给了我们无限的可能。真心的希望ecshop团队财源广进,ecshop越来越发展壮大。

本文发布于:2023-05-09 08:47:21,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/563125.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:页面   网站   数组   数据   时候   功能   不用
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图