ECShop二次开发研究日志之1.主页商品如何获取商品相册并显示及商品分类页获取商品相册相册列表

通过本文,您将学会如何去分析一个需求做ECShop的商城系统二次开发。本文通过一个简单的需求:主页商品如何获取商品相册并显示及商品分类页获取商品相册相册列表。来一步步分析如何去做开发。可以说本文是一个二次开发的入门篇,当然,你不懂得语法的话就不算入门篇了。

ShopNC二次开发研究日记12:导航菜单伪静态及二级目录制作SEO优化

虫曰:

ShopNC二次开发研究日记》系列由ChinaBUG企划,根据研究ShopNC的二次开发过程而写,其中的案例大多来源于QQ群或者爱好者的提问。


话说,很久没有来写ShopNC开发的内容了,正好刚忙完推广部同事的一个需求就拿来分享一下开发的过程及如何解决的吧。
同事的需求是:
ShopNC每个分类都是以ID的形式存在,如/index.php?act=search&cate_id=621这样子的形式,这样子对SEO不友好^_^想要友好一点的方式,比如可以让人访问/sxgr/sg/pg这样的形式来访问分类“生鲜果蔬\水果\苹果”。
简单吧,一看感觉好简单,其实好费时,忙了我好几天才折腾完毕。
闲话不说了,就分享一下我怎么解决这个需求的吧,还是老规矩废话一点,慢慢分析我的解决思路噢。
正文
要想实现这样子的方式,不用说肯定是需要伪静态支持的,然后需要写相关的重写规则来处理了,除了写规则之外就是需要修改程序,让程序输出我们需要的格式了。
……

程序员必须知道的10大基础实用算法及其讲解

算法一:快速排序算法
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。

算法二:堆排序算法
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
堆排序的平均时间复杂度为Ο(nlogn) 。

算法三:归并排序
归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

算法四:二分查找算法
二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜 素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组 为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。

算法五:BFPRT(线性查找算法)
BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分 析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂 度,五位算法作者做了精妙的处理。

算法六:DFS(深度优先搜索)
深度优先搜索算法(Depth-First-Search),是搜索算法的一种。它沿着树的深度遍历树的节点,尽可能深的搜索树的分 支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发 现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。DFS属于盲目搜索。
深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。

算法七:BFS(广度优先搜索)
广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。如果所有节点均被访问,则算法中止。BFS同样属于盲目搜索。一般用队列数据结构来辅助实现BFS算法。

算法八:Dijkstra算法
戴克斯特拉算法(Dijkstra’s algorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出。迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。

算法九:动态规划算法
动态规划(Dynamic programming)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。

算法十:朴素贝叶斯分类算法
朴素贝叶斯分类算法是一种基于贝叶斯定理的简单概率分类算法。贝叶斯分类的基础是概率推理,就是在各种条件的存在不确定,仅知其出现概率的情况下, 如何完成推理和决策任务。概率推理是与确定性推理相对应的。而朴素贝叶斯分类器是基于独立假设的,即假设样本每个特征与其他特征都不相关。

ShopEX二次开发DIY日记16之挂件goods_show里怎么二次开发增加商品销售总量或者其他

虫曰:

二次开发DIY日记》系列由ChinaBUG企划,根据开发过程中客户需求做的修改而延伸出来的开发要点,将有很多的需求点可能在实际应用中并不会需要到,在本系列之中我们将会有所考虑的给予分析解答,主要目的只为了更好的说明如何根据不同的需求点来DIY我们的程序。

虫曰: 《二次开发DIY日记》系列由ChinaBUG企划,根据开发过程[…]

ShopNC二次开发研究日记9:2.4版本内的商品地区怎么修改与开发

今天乘清明假期回来,腰有点疼就来说说怎么修改ShopNC2.4版本的商品地区数据,让它按照你自己的需求来变换噢。
注意:请安装火狐的firebug插件,然后开启。
1、商品列表右边“所在地”修改
2、所在地区列表的常用地区及省份的增加删除
3、改完布局,我们还能修改什么呢?对~前台,商品发布有所在地选项怎么修改噢?
4、前台所在地区只有二级(省市),怎样扩展为三级(省市区)?

什么是程序的二次开发?为什么要做二次开发?

引言
二次开发,摘抄百度百科的说明如下:原文请点击查阅
二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能,一般来说都不会改变原有系统的内核。一般的来说,一些大公司如IBM开发了一个大型的软件系统平台,根据不同的客户的需要,一些其它的中小公司为客户根据需求在该平台上进行第二次有针对性的开发。是否提供相应的接口,有的软件公司只提供软件,但也有小公司连代码一起出售,如是后者,就更方便进行二次开发。比如售票系统,车站里面弄好了,提供几个储存过程给银行,银行就可以代理售票了,这也是一种,还有一种如我们利用delphi,C#等操作word等。
正文
我们在使用ECShop、ShopEX、ZenCart、ShopNC、DEDE(织梦)、destoon、ASPcms、Discuz等系统的时候经常会接触除了模板、插件、皮肤、样式之外的一个新名词:二次开发。那么什么叫做二次开发呢?请看引言部分对这个名词的解释。
摘抄一向不是我的风格,所以,这边要唠叨一下我自己对二次开发的见解。
话说自从有了软件工程之后,我们人为的将程序开发分了好几个阶段什么调研阶段,分析阶段,什么编码阶段,虾米维护阶段,这些的概念请看相关的文章,我这边就解释了。
软件从开发的时候到发布这个过程,如果非要弄一个名词来说明的话只能叫做“一次开发”,当然,这个其实也不是很准确,不过也不要紧,你明白就好。不明白的话,就全当作是程序是谁开发的,那么他做的开发就是一次开发。
如果对程序有点了解的人,肯定会问,那么我开发完一个程序,然后在这个基础上再增加一个功能叫做什么呢?
哈,这个增加一个功能的行为就是“二次开发”了!
所以,我觉得“二次开发”其实就是根据我们的需求在已经存在的程序基础之上做开发这一过程成为二次开发。所以不管你是用什么程序,只要你是根据自己的需求对已经存在的程序做了开发都算二次开发。
所以,
模仿设计网站算不算?算!
为ShopEX,ECShop,ShopNC,ZenCart等程序做模板算不算?算!开发插件算不算?算!
……
你可以自己找很多的例子,万变不离其宗呀,这些都是二次开发。只要你是对已经存在的程序做修改都叫做二次开发。

ShopNC二次开发研究日记5:系统默认8个楼层怎么新增加一个并定义新的样式?

虫曰:
《ShopNC二次开发研究日记》系列由ChinaBUG企划,根据研究ShopNC的二次开发过程而写,其中的案例大多来源于QQ群或者爱好者的提问。

看着默认的8个楼层,你是不是很纠结噢,看看淘宝,看看京东,看看壹号店,为什么大家都要盖那么高的楼呢~
来吧,怨叹是解决不了问题的。动手DIY吧~~
找了一下后台发现没有针对这个功能的操作界面,也就是说新建这个功能需要我们自己开发出来,要不就只能直接操作数据库了~~
我们今天是直接操作数据库来新建楼层,有基础的朋友可以二次开发一下~
我们先进入后台,使用phpmyadmin这个工具,当然你也可以使用其他的,只要你懂得操作就行。
找到shopnc_web表,可能你的前缀跟我的不一样,请将shopnc_改为你的前缀即可,你会发现这个表内已经存在8个记录,而且都好眼熟噢,是不是就是板块楼层哈?执行下面的SQL语句,请自行按照实际修改一番:

ShopEX二次开发DIY日记15之会员下订单会有手机邮箱提醒,怎么改为同时通知站长管理员

虫曰:
《二次开发DIY日记》系列由ChinaBUG企划,根据开发过程中客户需求做的修改而延伸出来的开发要点,将有很多的需求点可能在实际应用中并不会需要到,在本系列之中我们将会有所考虑的给予分析解答,主要目的只为了更好的说明如何根据不同的需求点来DIY我们的程序。

今天,逛一下群发现有人想要下面的修改:shopex会员下订单会邮件提醒会员,现在我想全部改成邮件通知管理员,在哪里把变量改成管理员邮箱。这个想法很好,因为之前也有客户有类似的需求,不过他的需求是系统有新订单时可以自动发邮件通知他。
小故事:
记得当时我问他为什么不直接短信通知他呢?他回答我说,网站发短信需要钱,发邮件不用,而且发送到的邮箱是139邮箱,而移动的邮箱收到邮件通常都会发短信通知你收到邮件了。
超赞的省钱攻略~~
那么今天DIY日记的目的就是打造这么一个系统:会员下订单会有手机邮箱提醒,怎么改为同时通知站长管理员。
我们先来说说这个DIY的前提吧:
ShopEX相应版本的源码
懂一点点的PHP基础
懂得PHP的调试技能
其他编程相关经验
上面的要求随便说说啦,不具备的,那就请不要往下看了~~不会要求你一定要懂,但是可以要求你不要看我的文章。
研究过程啐啐念
打开\core\model\trading\mdl.order.php或者\core_v5\model\trading\mdl.order.php然后找到
$this->fireEvent(‘create’,$data,$data[‘member_id’]); //订单生成成功事件

EcShop/ShopEX/ShopNC二次开发制作设计手机站与WAP站与微商城微网站的一点点思路与想法

虫神:
在ShopNC交流群里面与群友分享了一下手机站与APP手机客户端开发的一些思路,群里的交流不是很好,可能讲的不是很透彻,所以,专门理清思绪重新写一下,与大家分享交流,对此有什么想法的朋友可以留言。
~..~ ~..~ ~..~ ~..~ ~..~ ~..~ 想法篇 ~..~ ~..~ ~..~ ~..~ ~..~ ~..~
最近一段时间手机站,手机APP客户端很火呀~~~也许还要算上WAP站~~以至于群里有人在讨论,要这个,要哪个的商城对应的商城手机站程序或者是APP客户端~
我只能说一句话,其实一个商城网站做的好不好,不是因为你使用了什么牌子的商城程序,也不是因为你的商城有了手机商城,更不会因为你有了APP客户端而更加的热门,而运营的更出色!
1、程序
对于一个客户,一个浏览者来说,网站的程序就是一个屁!因为他不懂!他就懂我看到什么内容,看到什么效果,他只知道在你的网站上的购物体验,是不是很快就能找到自己需要的商品,你的商品是不是够吸引他,至于你用什么程序,程序多门高级,先进,一概不关他的事。
当然,可能关注的会更多,但是一定不是关心你的程序稳定不,高级不。~~~一句话这些都是边角料,人家来消费的不是来考察的
2、手机站(WAP站)
对于这个手机站还有WAP站,其实,我也不知道这是怎么区分的!我就知道早期的WAP站出来的时候还专门开发了一个WML的标签集,可惜,出来没多久就不了了之,一句话市场不认可呀,因为印象中,这个出来没多久,智能手机就开始普及了,然后你们也猜到了,压根就是走过场的,然后就变成了手机站用的语言其实也就是HTML语言了~PS:具体历史是不是这样子的,我不清楚噢,因为当年真的不关注这类的消息。
WAP站:其实就是使用WML语言写的网站,用于移动设备访问的网站,而PC用的是HTML语言。
手机站:就是能用移动设备访问的网站。
然后,你会发现很多WAP手机网站,都是统统使用HTML来开发的,那么是WAP站还是手机站呢?再加上现在的移动设备的越来越高级,相当于移动电脑,那么还存在什么区别呢?也许,区别就是一个名字,一点点无所谓的特效区别吧。所以,手机站跟WAP其实说的都是一个东西,这个是我的结论,目前来说的话。~~~~其实还是有少许区别的,比如JS的支持情况什么的PC上的能操作的在手机上的却不能操作,还需要针对性的做修改。
3、APP手机客户端
随着iPhone与Android手机的流行,APP手机客户端随之盛行,那么这个对我们有什么好处呢?我们到底需要不需要呢?
其实这个需要看各自的商城的情况来说,比如天猫商城、淘宝商城,这个人流大了,每天都要上的,不做成APP客户端,你觉得方便吗?合适吗?~~有这个需求了,你不求着客户,客户也会自动的给你下载安装。
再来说我们的小商城吧,一个在角落蹲着的商城,即使你的APP客户端做的再出色,技术再先进,体验再棒,有人主动给你安装吗?
有,可能是同类的开发者吧,消费者绝大部分是不会安装的!为什么?需求不大呀,我又不需要经常性的去商城看,又不经常去商城购物,我安装干嘛?

ShopEX二次开发DIY日记13之模板主题设计制作:单独页面的创建及单独页模板的配置设计维护提高篇

虫曰:
《二次开发DIY日记》系列由ChinaBUG企划,根据开发过程中客户需求做的修改而延伸出来的开发要点,将有很多的需求点可能在实际应用中并不会需要到,在本系列之中我们将会有所考虑的给予分析解答,主要目的只为了更好的说明如何根据不同的需求点来DIY我们的程序。

在二次开发DIY日记9《ShopEX二次开发DIY日记9之单独页面的创建及单独页模板的配置设计维护基础篇》一文中,已经讲了单独主题页的新建及维护的基本方法,今天来一个提高,顺便填一下基础篇里面挖的那个坑:如果要实现单独主题页的布局、页头、页尾的不一致怎么办?
标题写的是提高篇,其实,也仅仅是增加了代码的修改,要求大家或多或少懂一点CSS与DIV的基础知识。
借用上一篇的一张图片:
图01:单独页面的代码编辑界面
在基础篇里,我们遇上这个步骤的时候是建议大家直接点击保存的,并没有说明这个文档的作用及怎么修改噢,本文就是来解答这个问题。
这个编辑器里面的代码都是page-welcome.html文件里面的内容。
作用就是渲染出那些“坑”位还有“系统区域”,定义这些东西的位置,样式等信息的。
比如我们看到的有一个系统区域,那么如果要把系统区域取消怎么办呢?
很简单,直接将<{main}>这样的字符串给删除或者注释掉,然后保存,然后可视化编辑的时候你将看不到系统区域了~~不过一般没人无聊到这个地步给他取消的哈~建议保留。
请看下图,一般我们都是把暂时不要的给注释掉,就是在花括号上加上*号,然后我们在图04上看到,原先有的图02上的系统功能区块在图04中已经消失了噢。
另外,在代码中我们还看到很多用<{...}>括起来的内容,这些什么意思呢?下面说明一下模板标签噢:
1、<{require file="block/header.html"}>引入我们的页头:这是为了重复利用而设计的,当然你也可以没有这个。
2、<{require file="block/footer.html"}>引入我们的页尾:这是为了重复利用而设计的,当然你也可以没有这个。
3、<{widgets id="abc"}>这是一个名字叫做abc的挂件坑位。你可以有无数个坑位,唯一差别就是id的名字要不一样!
4、<{header}>:引入系统必须的资源,这个资源是放在头部。必须存在,如果没有在上面1中,请自行在页面内包含。
5、<{footer}>:引入系统必须的资源,这个资源是放在尾部。必须存在,如果没有在上面2中,请自行在页面内包含。