首页 > 代码库 > 入手ecshop

入手ecshop

用入手这个词可能有点草率,但是以我有限的汉语词汇量也想不出更恰当的词儿。

本科阶段一直无视C以外的程序语言,虽然也有学过JAVA,甚至数据库语言这种算不上程序语言的不知道什么东西。毕业以后发现自己C也没有学的很好,其他的东西更是两眼一抹黑。于是开始睁眼看世界,狂补以前留下的不足,第一个着手点就是PHP。

最开始抱着core php programming看,看完chapter1-chapter8,到之后的一个个具体的函数说明就再也看不下去了,就是这么狂躁,没辙。

搁了几天后,一次巧合看到了php的ecshop这个开源的项目,感觉不错,代码量似乎也不大,整个工程解压缩以后也就18.6M,于是下下来从它入手开始学PHP。

刚入手ecshop时还是蛮晕,除了知道主页的索引页index.php在upload文件夹下其他啥也不知道了,在网上找了其结构看了看,思路清晰了许多。网上关于ecshop的结构很多,在此就不重复劳动也不转帖了,说一下除了网上有的文章外,自己对整个ecshop的一些理解。

ecshop中除了txt外,有7种重要的文件格式:

  • php
  • dwt
  • lbi
  • css
  • html/htm
  • xml
  • js

其中dwt和lbi文件之前完全没听说过,在此简单说一下。dwt是网页模板文件Dreamweaver Template,简单来说就是用html写的文件,如upload/themes/default/activity.dwt代码如下所示:

技术分享
  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  2 <html xmlns="http://www.w3.org/1999/xhtml">  3 <head>  4 <meta http-equiv="Content-Type" content="text/html; charset=gbk" />  5 <meta name="Keywords" content="{$keywords}" />  6 <meta name="Description" content="{$description}" />  7 <!-- TemplateBeginEditable name="doctitle" -->  8 <title>{$page_title}</title>  9 <!-- TemplateEndEditable --><!-- TemplateBeginEditable name="head" --><!-- TemplateEndEditable --> 10 <link rel="shortcut icon" href="favicon.ico" /> 11 <link rel="icon" href="animated_favicon.gif" type="image/gif" /> 12 <link href="{$ecs_css_path}" rel="stylesheet" type="text/css" /> 13 {* 包含脚本文件 *} 14 {insert_scripts files=‘common.js‘} 15 </head> 16 <body> 17 <!-- #BeginLibraryItem "/library/page_header.lbi" --><!-- #EndLibraryItem --> 18 <!--当前位置 start--> 19 <div class="block box"> 20  <div id="ur_here"> 21   <!-- #BeginLibraryItem "/library/ur_here.lbi" --><!-- #EndLibraryItem --> 22  </div> 23 </div> 24 <!--当前位置 end--> 25 <div class="blank"></div> 26 <div class="block"> 27   <h5><span>{$lang.activity_list}</span></h5> 28   <div class="blank"></div> 29    <!-- {foreach from=$list item=val} --> 30   <table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="#dddddd"> 31     <tr> 32       <th bgcolor="#ffffff">{$lang.label_act_name}</th> 33       <td colspan="3" bgcolor="#ffffff">{$val.act_name}</td> 34     </tr> 35     <tr> 36       <th bgcolor="#ffffff">{$lang.label_start_time}</th> 37       <td width="200" bgcolor="#ffffff">{$val.start_time}</td> 38       <th bgcolor="#ffffff">{$lang.label_max_amount}</th> 39       <td bgcolor="#ffffff"> 40         <!-- {if $val.max_amount > 0} --> 41         {$val.max_amount} 42         <!-- {else} --> 43         {$lang.nolimit} 44         <!-- {/if} --> 45       </td> 46     </tr> 47     <tr> 48       <th bgcolor="#ffffff">{$lang.label_end_time}</th> 49       <td bgcolor="#ffffff">{$val.end_time}</td> 50       <th bgcolor="#ffffff">{$lang.label_min_amount}</th> 51       <td width="200" bgcolor="#ffffff">{$val.min_amount}</td> 52     </tr> 53     <tr> 54       <th bgcolor="#ffffff">{$lang.label_act_range}</th> 55       <td bgcolor="#ffffff"> 56         {$val.act_range} 57         <!-- {if $val.act_range ne $lang.far_all} --> 58         :<br /> 59         <!-- {foreach from=$val.act_range_ext item=ext} --> 60         <a href="{$val.program}{$ext.id}" taget="_blank" class="f6"><span class="f_user_info"><u>{$ext.name}</u></span></a> 61         <!-- {/foreach} --> 62         <!-- {/if} --> 63       </td> 64       <th bgcolor="#ffffff">{$lang.label_user_rank}</th> 65       <td bgcolor="#ffffff"> 66         <!-- {foreach from=$val.user_rank item=user} --> 67         {$user} 68         <!-- {/foreach} --> 69       </td> 70     </tr> 71     <tr> 72       <th bgcolor="#ffffff">{$lang.label_act_type}</th> 73       <td colspan="3" bgcolor="#ffffff"> 74         {$val.act_type}<!-- {if $val.act_type ne $lang.fat_goods} -->{$val.act_type_ext}<!-- {/if} --> 75       </td> 76     </tr> 77     <!-- {if $val.gift} --> 78     <tr> 79       <td colspan="4" bgcolor="#ffffff"> 80       <!-- {foreach from=$val.gift item=goods} --> 81       <table border="0" style="float:left;"> 82         <tr> 83           <td align="center"><a href="goods.php?id={$goods.id}"><img src="{$goods.thumb}" alt="{$goods.name}" /></a></td> 84         </tr> 85         <tr> 86           <td align="center"><a href="goods.php?id={$goods.id}" class="f6">{$goods.name}</a></td> 87         </tr> 88         <tr> 89           <td align="center"> 90             <!-- {if $goods.price > 0} --> 91             {$goods.price}{$lang.unit_yuan} 92             <!-- {else} --> 93             {$lang.for_free} 94             <!-- {/if} --> 95           </td> 96         </tr> 97       </table> 98       <!-- {/foreach} --> 99       </td>100     </tr>101     <!-- {/if} -->102   </table>103   <div class="blank5"></div>104   <!-- {/foreach} -->105 </div>106 <div class="blank5"></div>107 <!--帮助-->108 <div class="block">109   <div class="box">110    <div class="helpTitBg clearfix">111     <!-- #BeginLibraryItem "/library/help.lbi" --><!-- #EndLibraryItem -->112    </div>113   </div>114 </div>115 <div class="blank"></div>116 <!--帮助-->117 <!--友情链接 start-->118 <!--{if $img_links  or $txt_links }-->119 <div id="bottomNav" class="box">120  <div class="box_1">121   <div class="links clearfix">122     <!--开始图片类型的友情链接{foreach from=$img_links item=link}-->123     <a href="{$link.url}" target="_blank" title="{$link.name}"><img src="{$link.logo}" alt="{$link.name}" border="0" /></a>124     <!--结束图片类型的友情链接{/foreach}-->125     <!-- {if $txt_links} -->126     <!--开始文字类型的友情链接{foreach from=$txt_links item=link}-->127     [<a href="{$link.url}" target="_blank" title="{$link.name}">{$link.name}</a>]128     <!--结束文字类型的友情链接{/foreach}-->129     <!-- {/if} -->130   </div>131  </div>132 </div>133 <!--{/if}-->134 <!--友情链接 end-->135 <div class="blank"></div>136 <!-- #BeginLibraryItem "/library/page_footer.lbi" --><!-- #EndLibraryItem -->137 </body>138 </html>
View Code

全是html标签!lbi文件DreamWeaver HTML Library Module解释起来费劲儿,简单来说还是html代码写的文件,在此就不贴代码了,那么这两个文件有没有关系,或者是什么关系呢,从ecshop的文章列表页: article_cat.dwt结构图中能清楚地感受到:

技术分享

dwt文件和lbi文件是从属关系,每个dwt文件由若干个lbi文件组成,这里就不用管lbi文件是什么什么库、重复使用之类的。

ecshop一共有22个dwt文件,分别表示22个不同的页面,至于由多少个lbi文件我就没去统计。

根目录有三个文件夹,upload、upgrade、docs。我在这里刻意把upload文件夹放在最前面,因为它最重要,前台、后台、数据处理都是在它下面完成的;upgrade从名字来看是用于升级的,我还没看这个文件夹下的内容;docs下是一些文档,暂时不管。

主页的索引文件index.php在upload文件夹下,是程序的入口点,我还是决定用最原始的方式,跟程序的执行流程。

入手ecshop