ECMall中Widgets模式的布局引擎
自己做过框架的人,可能都会思考一个问题,模板引擎需要什么特性?
Widgets模式,很多系统中都有出现,但对于纯开发人员,不管前端或后台人员来说,都觉得稍微麻烦了一点。因为他将界面硬生生的拆分出了很多零散的部分,对于编程人员来说,有点不流畅的感觉。
ECMall中也使用了Widgets的特性。
Widgets在使用时,可以接受参数的定义,这样尽可能的重复使用代码,而且逻辑与表现分离,开发和维护比较方便。
只是ecmall中的widgets 不支持指定 表现代码,某个widgets的所有实例只能使用同一个视图文件。
如果能增加自定义视图的特性,将会比较完美。
ps 一句话搞定
widget.base.php
/**
* 将取得的数据按模板的样式输出
*
* @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); $widget_filename = empty($this->options['view']) ? 'widget' : $this->options['view']; //这句话 return $this->_wrap_contents($this->fetch($widget_filename)); //相应调整
}
ECMall中Widgets模式的布局引擎的更多相关文章
- <转载>网页设计中的F式布局
		
地址:http://www.uisdc.com/understanding-the-f-layout-in-web-design 网页设计中的F式布局 今天我们来重点介绍网页设计中的F式布局.传统的布 ...
 - ecmall 中Url体系改造实践
		
前面有过一篇ECMall 中URL体系的改造思路http://www.cnblogs.com/x3d/p/3627260.html 这两天基于这个思路,做了实践. 为什么要改造? ECMall是完整的 ...
 - CSS3中的Flexbox弹性布局(一)
		
CSS3引入了一种新的布局模式——Flexbox布局,即伸缩布局盒模型(Flexible Box),用来提供一个更加有效的方式制定.调整和分布一个容器里项目布局,即使它们的大小是未知或者动态的,这里简 ...
 - 【原】谈谈对Objective-C中代理模式的误解
		
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
 - CSharpGL(26)在opengl中实现控件布局/渲染文字
		
CSharpGL(26)在opengl中实现控件布局/渲染文字 效果图 如图所示,可以将文字.坐标轴固定在窗口的一角. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入( ...
 - MVC5+EF6 入门完整教程十一:细说MVC中仓储模式的应用
		
摘要: 第一阶段1~10篇已经覆盖了MVC开发必要的基本知识. 第二阶段11-20篇将会侧重于专题的讲解,一篇文章解决一个实际问题. 根据园友的反馈, 本篇文章将会先对呼声最高的仓储模式进行讲解. 文 ...
 - 深入理解JavaScript中创建对象模式的演变(原型)
		
深入理解JavaScript中创建对象模式的演变(原型) 创建对象的模式多种多样,但是各种模式又有怎样的利弊呢?有没有一种最为完美的模式呢?下面我将就以下几个方面来分析创建对象的几种模式: Objec ...
 - MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用
		
摘要: 第一阶段1~10篇已经覆盖了MVC开发必要的基本知识. 第二阶段11-20篇将会侧重于专题的讲解,一篇文章解决一个实际问题. 根据园友的反馈, 本篇文章将会先对呼声最高的仓储模式进行讲解. 文 ...
 - 在ListView中使用多个布局
		
要想在一个ListView中使用多个布局文件,比如一个信息List包含了一个信息标题和每个信息对应的时间. 关键的步骤是实现Adapter类的getItemViewType 和getViewTypeC ...
 
随机推荐
- scrapy爬虫框架实例二
			
本实例主要通过抓取慕课网的课程信息来展示scrapy框架抓取数据的过程. 1.抓取网站情况介绍 抓取网站:http://www.imooc.com/course/list 抓取内容:要抓取的内容是全部 ...
 - Spring结合AspectJ的研究
			
本文阐述以下内容:1.AspectJ是什么及使用方式2.Spring AOP和AspectJ的区别3.Spring结合AspectJ的使用方法和原理4.Spring注解方式使用AspectJ遇到的问题 ...
 - Android - Animation(二)
			
Android - Animation(一) 一文总结了Android中的补间动画(View Animation/Tween Animation)和帧动画(Drawable Animation/Fra ...
 - Hibernate关系映射(三) 多对一和一对多
			
一.多对一 学生Student和班级Grade实现多对一,多个学生对应一个班级. Student.java实体类,映射了班级的属性. package com.lxit.entity; import j ...
 - 【Firefly API文档】—— Package DBentrust
			
http://bbs.gameres.com/thread_219653_1_1.html package dbentrust 该包下面主要是数据库的处理与memcached存储.里面封装了,从mem ...
 - Pthreads并行编程之spin lock与mutex性能对比分析(转)
			
POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API.线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用 ...
 - JDBC数据库编程:PreparedStatement接口
			
使用PreparedStatement进行数据库的更新及查询操作. PreparedStatement PreparedStatement是statement子接口.属于预处理. 使用statemen ...
 - jsfiddle在线測试Html、CSS、JavaScript——http://jsfiddle.net/
			
jsfiddle在线測试Html.CSS.JavaScript,并展示測试结果 1.选择jQuery1.9.1 2.选择jQuery UI 1.9.2 3.Html <ul id="n ...
 - mongodb安装的两条命令
			
1. 安装 下载并安装,注意安装方式为custom,路径自定义(d:\chengxu\mongodb),安装成功后在mongodb文件夹下新建data文件夹(内新建db文件夹)和logs文件夹(内新建 ...
 - iDempiere VS ADempiere
			
怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建.http://osssme.org/ 第三篇:iDempiere VS ADempiere 一直以来,什么谁谁谁VS谁谁谁的, ...