ecmall 如何新增挂件
不知到该怎么开始介绍,就直接说了,比如要在商城首页上添加一个自己开发测试用的挂件
1.找到模版文件夹的index.html,路径:themes/mall/default/index.html
自己选一个地方用于摆放挂件的位置,新建div,代码如下:
- <div style="height:300px;background-color:gray" area="my" widget_type="area">
- <!--{widgets page=index area=my}-->
- </div>
然后刷新页面看到灰色div。 这里解释一下,在index.html里会有很多div 都包含area 和widget_type 这两个属性,这就是显示所必须的。
area=“my” ,属性值自定义,widget_type="area" 这个是不变的。这一步我们已经为挂件准备好位置了。
2. 新建一张数据库表test 字段id,name,money然后自己插入三条数据。
ecmall里 每一张表对应一个model
现在新建test表对应的model,命名test.model.php里面内容代码如下:类名采用驼峰命名法,必须继承BaseModel
- <?php
- class TestModel extends BaseModel{
- var $table ="test";
- var $prikey ="id";
- function getData(){
- $tese=m('test);
- $test_res=$tese->find(array(
- 'condtions'=>'id>1',
- 'limit'=>2,
- 'order'=>'id desc',
- ));
- return $test_res;
- }
- }
- ?>
3.配置文件: data/page_config里应该有两个配置文件,default.gcategory.config.php(商品分类页)和default.index.config.php(商城首页)
如果是新安装的ecmall 打开应该是没有,你可以在首页上先添加两个挂件,然后系统就会自己生成配置文件了。
现在就当是新安装的,既然测试挂件要在首页上,那么自己新建一个default.index.config.php。内容代码如下
- <?php
- return array (
- 'widgets' => //第一部分 为挂件定义id值以及一些信息
- array (
- '_widget_2017' => //注意这个键 (自己定义)
- array (
- 'name' => 'test', //注意这个name 要与你的挂件名一样
- 'options' =>'我可是你的挂件啊', //这个是描述
- ),
- ),
- 'config' => //第二部分 这个部分的作用就是 my区域将包含id为 _widget_2017的挂件 也就是上面的 name为test 的挂件。
- array (
- 'my' => //这个键对应index.html 挂件摆放位置的div的area属性值
- array (
- 0 => '_widget_2017', // 注意这个值 要和上面键的一样
- ),
- ),
- );
- ?>
这样配置文件就写好了。
4.上面做完准备工作,现在开始开发挂件,在external/widgets里 赋值一个已存在的挂件文件夹,改名为test,直接修改里面文件的代码。
一个挂件对应一个文件夹,一个文件夹里面有四个文件:
config.html 配置界面模版
main.widget.php 挂件主程序文件 这个相当于控制器
widget.html 挂件显示模版 显示挂件应该显示的内容
widget.info.php 挂件信息文件 这个就是配置一些说明
打开widget.info.php 里面就是一个数组,简单易懂,想改就改一下,注意 其中最后一个 configurable 如果是false 就代表该挂件不可以被编辑 那么 config.html 就没有用了,这里就先设置成false。
打开main.widget.php 修改类名 还是注意驼峰命名法,简单的代码如下:
- <?php
- /**
- *测试挂件
- *
- * @param
- * @return array
- */
- class TestWidget extends BaseWidget
- {
- var $_name = 'test';
- function _get_data()
- {
- $recom_mod =& m('test');
- $data = $recom_mod->getData(); //直接调用test.model里写好的方法,
- //$data = $recom_mod->find(array('conditions'=>"id>1")); //调用testmodel继承的basemodel里的方法
- // var_dump($data);exit;
- return $data;
- }
- }
- ?>
这个时候,在test数据表里的内容就已经查到了,$data这个数组就包含了需要的内容
最后再打开widget.html
在模版上循环$data输出就可以了 用到的是smarty的语法,简单的显示一下数据
- <!--{foreach from=$widget_data item=goods}-->
- <li>
- <h3><a href="" target="_blank" title="{$goods.name|escape}">{$goods.name|escape}</a><span>{$goods.money|price}</span></h3>
- </li>
- <!--{/foreach}-->
至于为什么 main.widget.php里返回的$data在模版页上可以直接用,可能,也许,应该是预先加载了这个模版,谁知道呢,谁让我菜呢,我也很无奈。
5.完成了以上步骤以后,登录后台
点击编辑就回到首页,最上面显示可用挂件,最后一个应该就是新添加的挂件,然后拖动到 回个背景的div里,就ok了。
关于ecmall报错:
这个是不兼容php5.5的原因,可以自行百度。
ecmall 如何新增挂件的更多相关文章
- ecmall公告挂件分析(转)--此挂件写法已有更新的写法。
ecmall的首页,基本上都是由挂件的形式实现的.ecmall所有的挂件程序,都在external\widgets文件下面.ecmall首页公告的插件,就是notice目录里面. 分析里面文件,con ...
- ECMALL模板解析机制.MVC架构分析及文件目录说明.二次开发指南手册(转)
ECMALL模板解析语法与机制 http://www.nowamagic.net/architecture/archt_TemplateSyntaxAndAnalysis.php ECMALL模块开发 ...
- ecmall widgets 挂件开发详解
Ecmall挂件开发 实质上是后台开发很多页面,分别去调用程序展示这些页面,达到首页内容更换很快的目的,这样做减少后续开发,开发人员只需开发挂件就可以了,至于位置可随意定.(还需调整html,但是起码 ...
- ecmall 挂件开发实例一
(参考网上相关文章,进行测试点评,下述方法测试成功) 1:在页面上添加要展示的页面模块 <div class="left" area="bottom_foot&q ...
- ecmall挂件开发实例二(转)
下述例子讲述了快速增加挂件的方法,但对系统中的代码未做更改,基本参照image_ad挂件的方法. 第 一步: 了解首页模板结构 首页文 件结构 include hearder.html 包含的头文件, ...
- ecmall 的一些方法说明
ecmall/eccore /ecmall.php 常量: define('START_TIME', ecm_microtime()); define('IS_POST', (strtoupper($ ...
- ecmall模板语法
ECMall的模板解析语法介绍 用"{"开头,以"}"结尾就构成一个标签单元 在 2011年07月19日 那天写的 已经有 19105 次阅读了 感谢 ...
- ECMall关于数据查询缓存的问题
刚接触Ecmall的二次开发不久,接到一个任务.很常见的任务,主要是对数据库进行一些操作,其中查询的方法我写成这样: 01 function get_order_data($goods_id) 02 ...
- 【Ecmall】ECMall2.x模板制作入门系列(认识ECMall模板)
ECMall2.x模板制作入门系列之1(认识ECMall模板) 从ECMall2.0全新架构发布以来,随着版本的不断更新,ECMall已经逐渐走向一个稳定时期,是时候整理一些实用教程了.下面给大家带来 ...
随机推荐
- Http简单解析过程
1.域名解析:浏览器先搜索自身的DNS缓存->搜索操作系统自身的DNS缓存(浏览器没有找到缓存或缓存已经失效)->读取本地host文件(操作系统DNS也没找到)->浏览器发起DNS的 ...
- 浏览器行为模拟之requests、selenium模块
requests模块 前言: 通常我们利用Python写一些WEB程序.webAPI部署在服务端,让客户端request,我们作为服务器端response数据: 但也可以反主为客利用Python的re ...
- 【转】EF 获取类的属性并排除特定属性(getType().GetProperties())
当获取一个类型(class)的所有属性时,想排除指定属性,该如何操作? 比如:EF中一个实体类型UserEntity,通过反射获取这个类的属性时,想排除这个为映射的字段ID 使用以下方法即可! Pro ...
- windows的网上邻居
要说以前中学最怕上什么课就是电脑课,要说电脑印象最深的是什么软件就是总摆在桌面又听不懂又点进去什么都没有的“网上邻居”. “网上邻居”指的是同一局域网内在线的的电脑,更简单些就是连在同一路由器中开机的 ...
- JQuery进度条
需要实现效果如下图. 页面代码<div class='progress_bar' data-color='#f66' data-per='"+list[i].percent+" ...
- js之close()方法
.close()方法只适用于通过window.open()打开的弹出窗口.对于浏览器的主窗口,如果没有得到用户允许是不能关闭的.不过,弹出窗口可以调用top.close()在不经用户允许的情况下关闭自 ...
- LaTeX技巧10:LaTeX数学公式输入初级入门
LaTeX最强大的功能就是显示美丽的数学公式,下面我们来看这些公式是怎么实现的. 1.数学公式的前后要加上 $ 或 \( 和 \),比如:$f(x) = 3x + 7$ 和 \(f(x) = 3x + ...
- ubuntu中更新.netcore到2.1版本
如果需要安装新版本到dotnetcore,需要先卸载旧版本(https://github.com/dotnet/core/blob/master/release-notes/download-arch ...
- 【资料收集】Converting Between cv::Mat and QImage or QPixmap
参考: 方法一 Convert between cv::Mat and QImage 两种图片类转换 - Grandyang - 博客园 http://www.cnblogs.com/grandyan ...
- Docker安装websphere(四)
在Docker容器里安装webshpere <!--前提:已经安装好了docker,能够正常使用.--> (1)docker安装websphere(需要账号和密码登录,不挂载数据卷) 获取 ...