不知到该怎么开始介绍,就直接说了,比如要在商城首页上添加一个自己开发测试用的挂件

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 如何新增挂件的更多相关文章

  1. ecmall公告挂件分析(转)--此挂件写法已有更新的写法。

    ecmall的首页,基本上都是由挂件的形式实现的.ecmall所有的挂件程序,都在external\widgets文件下面.ecmall首页公告的插件,就是notice目录里面. 分析里面文件,con ...

  2. ECMALL模板解析机制.MVC架构分析及文件目录说明.二次开发指南手册(转)

    ECMALL模板解析语法与机制 http://www.nowamagic.net/architecture/archt_TemplateSyntaxAndAnalysis.php ECMALL模块开发 ...

  3. ecmall widgets 挂件开发详解

    Ecmall挂件开发 实质上是后台开发很多页面,分别去调用程序展示这些页面,达到首页内容更换很快的目的,这样做减少后续开发,开发人员只需开发挂件就可以了,至于位置可随意定.(还需调整html,但是起码 ...

  4. ecmall 挂件开发实例一

     (参考网上相关文章,进行测试点评,下述方法测试成功) 1:在页面上添加要展示的页面模块 <div class="left" area="bottom_foot&q ...

  5. ecmall挂件开发实例二(转)

    下述例子讲述了快速增加挂件的方法,但对系统中的代码未做更改,基本参照image_ad挂件的方法. 第 一步: 了解首页模板结构 首页文 件结构 include hearder.html 包含的头文件, ...

  6. ecmall 的一些方法说明

    ecmall/eccore /ecmall.php 常量: define('START_TIME', ecm_microtime()); define('IS_POST', (strtoupper($ ...

  7. ecmall模板语法

    ECMall的模板解析语法介绍 用"{"开头,以"}"结尾就构成一个标签单元 在 2011年07月19日 那天写的     已经有 19105 次阅读了 感谢  ...

  8. ECMall关于数据查询缓存的问题

    刚接触Ecmall的二次开发不久,接到一个任务.很常见的任务,主要是对数据库进行一些操作,其中查询的方法我写成这样: 01 function get_order_data($goods_id) 02 ...

  9. 【Ecmall】ECMall2.x模板制作入门系列(认识ECMall模板)

    ECMall2.x模板制作入门系列之1(认识ECMall模板) 从ECMall2.0全新架构发布以来,随着版本的不断更新,ECMall已经逐渐走向一个稳定时期,是时候整理一些实用教程了.下面给大家带来 ...

随机推荐

  1. hdu-6333-莫队

    Problem B. Harvest of Apples Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K ...

  2. Leetcode 128 *

    class Solution { public: int longestConsecutive(vector<int>& nums) { ; unordered_map<in ...

  3. svn中的ignore

    首先,svn GUI菜单右键的ignore功能,写的模模糊糊,网上也没啥人给出清晰的解释,stackoverflow推荐用命令行控制 SVN有3中方法配置ignore 1.配置文件 C:\Users\ ...

  4. SQL - 常用的特殊查询

    sql 查询某字段不重复的全部记录: select * from table where fid in(Select min(fid) FROM table group by name) :

  5. 解决Eureka Server不踢出已关停的节点的问题

    eureka端: eureka.server.enable-self-preservation (设为false,关闭自我保护主要) eureka.server.eviction-interval-t ...

  6. 在springboot中验证表单信息(六)

    构建工程 创建一个springboot工程,由于用到了 web .thymeleaf.validator.el,引入相应的起步依赖和依赖,代码清单如下: 1 2 3 4 5 6 7 8 9 10 11 ...

  7. MVC的前端和后端的Model Binding

    1.前端提交JSON 字符串 {"id":13,"title":"这里是标题33","day":"2018-8 ...

  8. WinForm之窗体应用程序

    WinForm之窗体应用程序 基本简单数据库操作(增删改查) using System; using System.Collections.Generic; using System.Windows. ...

  9. Win10系列:UWP界面布局基础8

    路由事件 XAML不仅继承了传统的事件处理方式,还引入了一个增强型事件处理机制:路由事件(RoutedEvent).路由事件和传统事件的不同是:路由事件允许一个对象触发事件后,可以同时拥有多个事件接收 ...

  10. 【转载】OpenCV 摄像头控制

    参考:[OpenCV] -- 简单摄像头操作 - 代码人生 - 博客频道 - CSDN.NET http://blog.csdn.net/qiurisuixiang/article/details/8 ...