`
fatter
  • 浏览: 2597 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ecmall挂件开发

阅读更多
                        Ecmall挂件开发
实质上是后台开发很多页面,分别去调用程序展示这些页面,达到首页内容更换很快的目的,这样做减少后续开发,开发人员只需开发挂件就可以了,至于位置可随意定.(还需调整html,但是起码后台取数据不用做了)
流程介绍:
1:ecmall模板页面调用widget页面(整个过程比较复杂)
  <!--{widgets page=index area=cycle_image}-->
参数:page:指明页面是index页面
     Area:指明显示的区域。(相当于告诉程序生成的页面是放在那里的)
2:经过ecmall模板引擎重新生成一个临时php文件,上面那句代码被解析成这样的php代码。
<!--{widgets page=index area=cycle_image}-->
                     ||
<?php $this->display_widgets(array('page'=>'index','area'=>'cycle_image')); ?>

3:查看下display_widgets()方法的源码
/**
* 视图回调函数[显示小挂件]
*
* @author    Garbin
* @param     array $options
* @return    void
*/
function display_widgets($options) {
$area = isset ( $options ['area'] ) ? $options ['area'] : '';
$page = isset ( $options ['page'] ) ? $options ['page'] : '';
if (! $area || ! $page) {
return;
}
include_once (ROOT_PATH . '/includes/widget.base.php');

/* 获取该页面的挂件配置信息 */
$widgets = get_widget_config ( $this->_get_template_name (), $page );

/* 如果没有该区域 */
if (! isset ( $widgets ['config'] [$area] )) {
return;
}

/*将该区域内的挂件依次显示出来 */
foreach ( $widgets ['config'] [$area] as $widget_id ) {
$widget_info = $widgets ['widgets'] [$widget_id];
$wn = $widget_info ['name'];
$options = $widget_info ['options'];

$widget = & widget ( $widget_id, $wn, $options );
$widget->display ();
}
}

/**
* 获取当前使用的模板名称
*
* @author    Garbin
* @return    string
*/
function _get_template_name() {
return 'default';
}

/**
*    获取指定风格,指定页面的挂件的配置信息
*
*    @author    Garbin
*    @param     string $template_name
*    @param     string $page
*    @return    array
*/
function get_widget_config($template_name, $page)//default index
{
    static $widgets = null;
    $key = $template_name . '_' . $page;
    if (!isset($widgets[$key]))
    {
        $tmp = array('widgets' => array(), 'config' => array());
        $config_file = ROOT_PATH . '/data/page_config/' . $template_name . '.' . $page . '.config.php';
        if (is_file($config_file))
        {
            /* 有配置文件,则从配置文件中取 */
            $tmp = include_once($config_file);
        }

        $widgets[$key] = $tmp;
    }

    return $widgets[$key];
}


/**
*    获取挂件实例
*
*    @author    Garbin
*    @param     string $id
*    @param     string $name
*    @param     array  $options
*    @return    Object Widget
*/
function &widget($id, $name, $options = array())
{
    static $widgets = null;
    if (!isset($widgets[$id]))
    {
        $widget_class_path = ROOT_PATH . '/external/widgets/' . $name . '/main.widget.php';
        $widget_class_name = ucfirst($name) . 'Widget';
        include_once($widget_class_path);
        $widgets[$id] = new $widget_class_name($id, $options);
    }

    return $widgets[$id];
}

    /**
     *    显示
     *
     *    @author    Garbin
     *    @param    none
     *    @return    void
     */
    function display()
    {
        echo $this->get_contents();
}

    /**
     *    将取得的数据按模板的样式输出
     *
     *    @author    Garbin
     *    @return    string
     */
    function get_contents()
    {
        /* 获取挂件数据 */
        $this->assign('widget_data', $this->_get_data());

        /*可能有问题*/
        $this->assign('options', $this->options);
        $this->assign('widget_root', $this->widget_root);

        return $this->_wrap_contents($this->fetch('widget'));
    }


实例开发:
1:在页面上添加要展示的页面模块
<div class="left" area="bottom_foot" widget_type="area">
    <!--{widgets page=index area=bottom_foot}-->
</div>
2:修改工程目录下/data/page_config/default.index.config.php添加该模块的相关信息
   'widgets' =>
  array (
     '_widget_1000' =>
                 array (
                 'name' => 'test',
                 'options' =>
                             array (
                             'ad_image_url' => 'data/files/mall/template/200908070207084061.gif',
                             'ad_link_url' => '',
                              ),
                 ),
  ),
  'config' =>
    array(
      'bottom_foot' =>
      array (
            0 => '_widget_1000',
            ),
),

3:在工程目录external/widgets建name(跟上面定义的name要一致)目录,然后再建文件main.widget.php 
  class TestWidget extends BaseWidget{
    var $_name = 'test';
    function _get_data(){
      $test_mod=&m('test');
      $users=$test_mod->getAll("select * from ecm_member");
          return $users;
    }
  } 
4:在includes/model下建模型文件(同数据库交互)
  class TestModel extends BaseModel{
     
    
   }
5:在同级目录创建widget.html文件(该模板为展示内容)
<div class="module_common">
    <h2><b class="news" title="NEWS公告栏"></b></h2>
    <div class="wrap">
        <div class="wrap_child">
            <ul class="news_list">
                <!--{foreach from=$widget_data item=user}-->
                <li>{$user[user_name]}</li>
                <!--{/foreach}-->
            </ul>
        </div>
    </div>
</div>
分享到:
评论

相关推荐

    ECMALL 挂件开发指南

    ### ECMALL挂件开发指南详解 #### 一、概述 ECMALL是一款非常流行的电子商务平台系统,它提供了丰富的插件和挂件支持,使得开发者能够根据自己的需求定制各种功能和服务。本文将详细介绍ECMALL挂件开发的过程及...

    ECMall挂件开发指南.rar

    "ECMall挂件开发指南"是针对该平台挂件开发的一份详细教程,旨在帮助开发者了解如何为ECMall创建自定义功能模块,即挂件。 挂件在ECMall中扮演着重要角色,它们可以增加网站的功能性和互动性,而无需修改核心代码,...

    ECMall挂件开发文档

    ### ECMall挂件开发知识点详解 #### 一、什么是ECMall挂件? 挂件(Widget)是指一种可让用户在ECMall系统中任意页面的任意位置以任意样式显示任意数据的小型应用或功能模块。它能够有效地解决传统Web应用程序中...

    Ecmall挂件开发

    对于ecmall挂件的开发很有帮助,方便初学都进行学习,大家一起进步哟,加油!!!

    ecmall挂件

    Ecmall挂件是针对Ecmall电子商务平台设计的一系列装饰性组件,旨在提升网站的视觉效果和用户体验。Ecmall是一款开源的电子商务系统,它提供了丰富的功能和高度的可定制性,允许商家根据自己的需求打造个性化的在线...

    ECMALL 仿京东分类挂件(gbk版)

    ECMALL是一款基于PHP开发的电子商务系统,专为中小企业提供在线商城解决方案。"仿京东分类挂件(gbk版)"是针对ECMALL系统的一个定制化插件,旨在模仿京东网站的商品分类展示方式,提升用户在浏览商品分类时的体验。...

    ECMall开发帮助文档

    挂件开发涉及模板文件、配置文件和挂件控制器的创建,让开发者可以轻松添加自定义展示内容。 5. **模块开发**: 模块是ECMall中更复杂的功能组件,例如,可以开发一个新闻模块或博客模块。模块开发涉及更多的文件...

    ecmall仿淘宝商城店铺分类挂件.rar

    而“仿淘宝商城店铺分类挂件”则是针对ECMall平台开发的一款功能组件,旨在提升用户体验,增强店铺分类的可视化效果,让用户能够更加方便快捷地找到自己感兴趣的商品类别。 一、挂件简介 挂件在ECMall中通常是指一...

    ECMALL热门销售挂件

    ECMALL是一款基于PHP开发的开源电子商务系统,其设计目标是为企业提供一个灵活、可扩展的在线购物平台。"ECMALL热门销售挂件"是一个专门为ECMALL平台设计的功能模块,用于展示店铺中最畅销的商品,吸引顾客注意力,...

    Ecmall使用手册(站长)

    ECMall的挂件、插件和模块机制使得二次开发变得简单。开发者可以通过阅读官方提供的API文档和示例代码,快速上手开发自己的组件。同时,由于ECMall的代码结构清晰,注释丰富,即便是初学者也能较快理解并动手实践。 ...

    ECMall模块开发文档

    ### ECMall模块开发知识点 #### 1. 模块的定义 ##### 1.1 什么是模块 在ECMall的上下文中,模块是指一种独立于主体程序之外的程序代码集合,它可以为主程序提供额外的功能扩展。具体而言,ECMall模块具有自己的前...

    ecmall首页田字格式图片展示挂件

    在电子商务网站开发中,ECMall是一款开源的电商系统,为商家提供了丰富的功能和自定义选项。本知识点主要聚焦于“ecmall首页田字格式图片展示挂件”,这是一个设计用于ECMall首页的特色功能,它能以田字格的形式展示...

    Ecmall使用手册

    - ECMall 2.0采用了一套灵活的挂件、插件和模块机制,这使得开发者能够轻松定制功能和服务,同时也便于用户根据自身需求进行二次开发。 - 支持多语言特性,使得ECMall能更好地服务于全球市场,满足不同国家和地区...

    Ecmall结构汇总 .docx

    本篇将详细解析Ecmall的目录结构和核心功能,以便理解其工作原理和进行二次开发。 ### 1. 目录结构 Ecmall的主要目录结构分为以下几个部分: #### (1) admin 这是后台管理界面的文件夹,包含用于后台管理的各种...

    Emall widget制作--详情

    在开发Ecmall Widget时,开发者通常会继承`Widget.base.php`并重写其中的方法以满足特定需求。例如,创建一个新的挂件`ProductListWidget`,可能会覆盖`_get_data()`来获取商品列表,覆盖`fetch()`来定义商品列表的...

    ECMALL插件免费开源分享,含:统一、独立支付等插件,统一支付接口,独立支付模型

    ... ... 所有模块现在全部免费发布,但不保证因为一些其他原因而出现的无法安装,可以免费在线询问我们的QQ: 1356231055 或者加QQ群免费咨询:47101787 部分功能展示如下: ...店铺自定义挂件自由拖拽编辑系统

    最新仿苏宁易购商城源码(完整版)

    1. **Ecmall框架**:Ecmall的使用意味着源码基于PHP开发,具有良好的可维护性和扩展性,开发者可以利用其内置的模板引擎和模块化设计,轻松调整网站布局和功能。 2. **ShopEx内核**:ShopEx的集成增强了系统的功能...

Global site tag (gtag.js) - Google Analytics