• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

商派shopex ecstore bbc技术点

ECStore 开心洋葱 2897次浏览 0个评论

模板

标准模板包必要的文件创建⼀个模板包⽂件夹,例如test

新模板包⽂件夹的名称应与描述⽂件中的id 保持⼀致,并且应该由数字和英⽂⼩写组成。

在模板包⽂件夹内创建以下⽂件:

  1. theme.xml 此⽂件⽤来描述模板包的基本信息,以及模板可能包含的挂件。还⽤于模板的备份,导出,和导⼊操作中的模板数据交换。

商派shopex ecstore bbc技术点

  1. 创block,images,widgets文件夹

block————————–可重用文件夹,里面的放header,footer等重用性文件

images————————-静态文件夹,放image和css等静态文件

widgets————————挂件文件夹

  1. 设置默认模板页

将模板包放到/public/theme中

模板开发测试环境⽬前模板的开发测试环境较重要的个地⽅就是⽹店的后台。

如果你在做模板的开发,请先在管理后台应⽤中⼼安装⼀个应⽤程序:《开发者⼯具》app.

安装方法:点击管理后台右上“应用中心”,找到“开发者工具”,进⾏安装;之后,你将在模板

列表上看到”更多“按钮, 点击开更多或看到” 维护”。

模板包的首次加载当次构建好基础模板包。此刻应将模板⽂件夹复制到模板录

既:b2b2c/public/themes 下

这时你的模板列表中将出现此模板的记录

Widget

挂件文件的用处

/themes/widgets,每个目录对应一个特定功能的版块,目录下有这样几个文件 :

_config.html 配置页是在可视化编辑时用到的配置表单

widgets.php 
用于描述挂件基本信息,挂件模板文件、名称对应关系

_preview.html, 版块在后台可视化编辑时的预览

default.html, 版块默认的模板,一个版块可以有多个模板 (可以修改,对应的是widgets.php中$setting[‘template’] = array(

‘default.html’=>app::get(‘topm’)->_(‘默认’)

);的default.html);

theme_widget_<挂件包名>.php, 板块的执行程序(模板级挂件)

创建一个模板级挂件的必备文件结构

1. 配置页(_config.html)

配置页是在可视化编辑时用到的配置表单。

2. 配置页拦截器(theme_widget_cfg_widgetname.php)[可选]

配置页拦截器用于向配置页输出系统数据,例如输出一个系统当前的商品排序方式数组。供页面<select>填充选[如果配置页不需要从系统内取得数据,则此拦截器无需制作。]

3. 挂件拦截器(theme_widget_widgetname.php)挂件拦截器,用于向挂件模板供应后端数据4. 挂件描述文件(widgets.php)

用于描述挂件基本信息,挂件模板文件、名称对应关系。

5. 挂件渲染模板(widgettpl1.html……. widgettplN.html)

一个或多个挂件模板,需要在挂件描述文件中被描述,以便可视化编辑时选择挂件使用的模板。

object 组件使用说明

object 参数列表

return_url //选填此参数和callback配合使用返回值处理链接(控制器)

callback //选填此参数和return_url配合使用返回值处理js函数

breakpoint //选填当数据少于此值时显示下拉框

limitmax //选填选择数据的最大数量

view //选填扩展内容的页面

extendvalue //当有扩展页面并且有输入值时,必填当编辑时,扩展里面需要赋值时通过此data[‘init’] //选填js函数

textcol //选填当select为checkbox时必填选择那些字段显示

name //必填名称

value //选填当编辑是必填选中的值

emptytext //选填为空时显示的内容

* type=”object” //必填

* object=”表名” //必填格式为mdl名或者mdl@appname

* select=”radio or checkbox” //选填默认为radio

multiple=”true” //当select为checkbox时,必填

filter=array() or string //表的查询条件选填

app=”appname” //必填 数据所在的app

<{input type=”object” object=”activity_item” app=”syspromotion” filter=”verify_status=agree” select=checkbox multiple=”true” value=$setting.activity textcol=”title” name=”activity” breakpoint=0}>

Middleware

中间件,一般是在路由配置文件中会配置,如
商派shopex ecstore bbc技术点

当配置文件这样配置的时候,就说明在访问这个路由组中的任何路由时,都会先走这两个中间件,

中间件可以做系统验验证,比如登录状态的检测,当是手机端是自动跳转手机模板等等

命名:app名_middleware_中间件名

目录:app/middleware/

只有两个函数,一个是空的构造函数,另一个是handle()函数

构造函数可以省略

商派shopex ecstore bbc技术点

订单流程

选择商品->直接购买->已经登录->有收货信息->选择支付方式->选择配送类型->

是否使用优惠券->发票和积分抵扣->提交付款->完成订单

选择商品->直接购买->未登录->登录->收货信息判定->选择支付方式->选择配送类型->

是否使用优惠券->发票和积分抵扣->提交付款->完成订单

选择商品->添加到购物车->购物车结算->未登录->登录->收货信息判定->选择支付方式->选择配送类型->

是否使用优惠券->发票和积分抵扣->提交付款->完成订单

选择商品->添加到购物车->购物车结算->登录->收货信息判定->选择支付方式->选择配送类型->是否使用优惠券->发票和积分抵扣->提交付款->完成订单

促销流程

平台活动:

平台发起活动(指定活动时间,报名商家类型(自营非自营),商品类目等)->商家添加商品并报名->平台审核商家报名->通过则商家进入活动,商品打折

商家活动

满折,满减,x件y折

商家发起活动->平台审核->通过活动按时开始结束

Api

1.文件位置

  1. 文件统一放在如下位置:

app/{$app_name}/api/

2.API注册

  1. 注册文件

config/apis.php

2.注册格式

‘api的method’ => [‘uses’ => ‘调用哪个类@哪个方法’, ‘version’=>[‘支持的版本号’]],

‘item.search’ => [‘uses’ => ‘sysitem_api_item_search@getList’, ‘version’=>[‘v1’]],

  1. API请求权限注册 API请求权限是注册给app的,比如topc应用可以请求systrade应用提供的api,需要注册如下信息:

//表示topc可以调用systrade的api,并且每60秒可以调用1000次

‘depends’=>array (

‘topc’ => array (

‘systrade’ => array ( ‘appName’ => ‘systrade’, ‘path’ => ‘*’, ‘limit_count’ => 1000, ‘limit_seconds’ => 60,),

),

),

dev应用提供了一个命令:cmd dev:rpc depends_info命令可以获取当前代码的调用情况。直接将显示出来的数组复制到config/apis.php的depends项即可

表单验证
accepted
验证此规则的值必须是 yes、 on 或者是 1。这在验证是否同意”服务条款”的时候非常有用。
active_url
验证此规则的值必须是一个合法的 URL,根据 PHP 函数 checkdnsrr。
after:date
验证此规则的值必须在给定日期之后,该日期将被传递到 PHP 的 strtotime 函数。
alpha
验证此规则的值必须全部由字母字符构成。
alpha_dash
验证此规则的值必须全部由字母、数字、中划线或下划线字符构成。
alpha_num
验证此规则的值必须全部由字母和数字构成。
before:date
验证此规则的值必须在给定日期之前,该日期将被传递到 PHP 的 strtotime 函数。
between:min,max
验证此规则的值必须在给定的 min 和 max 之间。字符串、数字以及文件都将使用大小规则进行比较。
confirmed
验证此规则的值必须和 foo_confirmation 的值相同。比如,需要验证此规则的字段是 password,那么在输入中必须有一个与之相同的 password_confirmation 字段。
date
验证此规则的值必须是一个合法的日期,根据 PHP 函数 strtotime。
date_format:format
验证此规则的值必须符合给定的 format 的格式,根据 PHP 函数 date_parse_from_format。
different:field
验证此规则的值必须与指定的 field 字段的值不同。
digits:value
验证此规则的值必须是一个 数字 并且必须满足 value 设定的精确长度。
digitsbetween:min,max
验证此规则的值,它的长度必须介于 min 和 max 之间。
email
验证此规则的值必须是一个合法的电子邮件地址。
exists:table,column
验证此规则的值必须在指定的数据库的表中存在。

参考: http://club.ec-os.net/doc/b2b2c-dev/400.framework/800.validator.md#rule-accepted
dbschema
Finder定义
label定义
定义在desktop finder中列的名称

return array (

‘columns’ => array (

‘app_id’ => array (

‘label’ => app::get(‘base’)->_(‘程序目录’),

),

),

);

?>
width定义
定义在desktop finder中列的初始宽度

return array (

‘columns’ => array (

‘app_id’ => array (

‘label’ => app::get(‘base’)->_(‘程序目录’),

‘width => 150,

),

),

);
in_list定义
定义在desktop finder配置列表项中是否可以勾选显示, 默认值为false.

return array (

‘columns’ => array (

‘app_id’ => array (

‘label’ => app::get(‘base’)->_(‘程序目录’),

‘width => 150,

‘in_list’ => true,

),

),

);
default_in_list定义
定义在desktop finder列表中初始安装的情况下, 对应列是否默认显示在列表中, 默认值为false.

return array (

‘columns’ => array (

‘app_id’ => array (

‘label’ => app::get(‘base’)->_(‘程序目录’),

‘width => 150,

‘default_in_list’ => true,

),

),

);
filterdefault定义
默认在desktop高级筛选(搜素), 中是否默认显示, 默认为false. 如果有相关搜索项配置(filtertype), 按配置显示

return array (

‘columns’ => array (

‘app_id’ => array (

‘label’ => app::get(‘base’)->_(‘程序目录’),

‘width’ => 150,

‘in_list’ => true,

‘filterdefault’ => true,

),

),

);
filtertype, filtercustom定义
return array (

‘columns’ => array (

‘name’ => array (

‘type’ => ‘string’,

‘required’ => true,

‘label’ => app::get(‘b2c’)->_(‘商品名称’),

‘is_title’ => true,

‘filtertype’ => ‘custom’, // normal按type类型生成过滤 , custom按dbschema中设定的filtercustom 设置过滤

‘filterdefault’ => true,

‘filtercustom’ =>

array (

‘has’ => app::get(‘b2c’)->_(‘包含’),

‘tequal’ => app::get(‘b2c’)->_(‘等于’),

‘head’ => app::get(‘b2c’)->_(‘开头等于’),

‘foot’ => app::get(‘b2c’)->_(‘结尾等于’),

),

‘in_list’ => true,

‘default_in_list’ => true,

),

),

);

注意: filtertype属性, normal按type类型生成过滤 , custom按dbschema中设定的filtercustom 设置过滤
searchtype
finder列表页中简单搜索的处理方式,如果dbschema中存在searchtype则会在desktop列表上显示相关的简单搜索

默认值为nequal

return array (

‘columns’ => array (

‘title’ => array(

‘type’ => ‘string’,

‘length’ => 90,

‘required’ => true,

‘default’ => ”,

‘label’ => app::get(‘sysitem’)->_(‘商品标题’),

‘comment’ => app::get(‘sysitem’)->_(‘商品标题’),

‘is_title’ => true,

‘searchtype’ => ‘has’,

‘filtertype’ => ‘custom’,

‘filterdefault’ => true,

‘order’ => 12,

),

),

);

目前支持类型

类型描述
than大于
小于<
nequal等于
tequal等于
sthan小于等于
bthan大于等于
has包含
head头部
foot尾部
nohas不包含
between介于之间
in在之中

is_title定义
例如, 商品表有cat_id(类目表ID)字段, 那么在finder上cat_id字段会显示类目表中设置为is_title的字段(cat_name)的值.

注意: 同时一张表只能有一个字段能设置为is_title属性.

商品表

return array (

‘columns’ => array (

‘cat_id’ => array (

‘label’ => app::get(‘base’)->_(‘商品类目ID),

‘width => 150,

‘in_list’ => true,

‘filterdefault’ => true,

),

),

);

类目表

return array (

‘columns’ => array (

‘cat_name => array (

‘label’ => app::get(‘base’)->_(‘分类名称’),

‘is_title’ => true,

‘width => 150,

‘in_list’ => true,

‘filterdefault’ => true,

),

),

);
order定义
order属性定义了在desktop finder上列的默认排列顺序.

return array (

‘columns’ => array (

‘cat_name => array (

‘label’ => app::get(‘base’)->_(‘程序目录’),

‘order’ =>10,

),

),

);

促销:

怎么添加的

添加逻辑

结算优惠 逻辑 在哪里处理

订单创建的

添加:

满折为例:

页面控制器:app/topshop/controller/promotion/fulldiscount.php

方法: saveFulldiscount()通过这个方法来添加

调用接口:

商派shopex ecstore bbc技术点

所有的促销都在syspromotion这个app 中,

商派shopex ecstore bbc技术点

满折的接口文件,

商派shopex ecstore bbc技术点

处理函数是在/syspromotion/lib/fulldiscount.php,其他促销也是这么对应的

处理逻辑分为三步

1. 保存促销规则,表名是syspromotion_fulldiscount

商派shopex ecstore bbc技术点

2.保存促销关联表,表名是syspromotion_promotions,这张表保存了所有促销,包括满折满减等等,但不包括平台活动(这张表暂时还没看出有什么作用),savePromotions()这个函数在父类syspromotion/lib/abscrapt/promotions.php 中

商派shopex ecstore bbc技术点

3.促销规则对应的商品

商派shopex ecstore bbc技术点

三步都成功,commit提交
商派shopex ecstore bbc技术点

这个是处理促销和商品关联表的函数

购物车:

购物车分为登录和未登录状态的,登录的存在数据表中,systrade_cart,未登录的存在cookie中

未登录是在topc/lib/cart/offline.php中处理

登录之后是调用接口
商派shopex ecstore bbc技术点

具体实现代码是在systrade/lib/data/cart.php处理


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明商派shopex ecstore bbc技术点
喜欢 (0)

您必须 登录 才能发表评论!

加载中……