Concrete5初使用心得

CF5是一款强大的LAMP CMS框架(http://www.concrete5.org/),核心采用了一部分ZEND FRAMEWORK框架,架构比较独特不同于传统的DEDECMS, PHPCMS等,利用内部已有的Add-ons 可以快速建立一个企业网站,

一,体会:


1,根目录下的concrete目录下是核心文件,不允许随便去修改,如果想覆盖默认的系统模板布局等,可以在根目录下的文件夹中去覆盖系统默认提供的add-ons布局


2,使用CF5时,必须抛弃掉传统PHP CMS框架的思想,CF5是以多个模块组件搭建起来的一款应用,可以在前台页面进入编辑模式后,对前台页面内容(包括布局)直接进行编辑,对一些动态数据,例如新闻,可以通过设置数据源来加载,支持是否显示分页等;


3,多语言实现,CF5默认支持主流的几十种语言,可以去社区下载免费的国际化 ADD-ON并安装后,在仪表牌会出现安装的这个功能,可进入做详细的设置,并可指定网站默认加载的语言项(例如像做一个繁体中文,简体中文,英文网站,我选择了繁体对应地区为中国香港,但这里有个BUG,繁体会有问题,但繁体选择地区为中国台湾后,则正常了)


4,其他一些有用免费ADD-ON,我网站向添加一个轮播图片效果,社区有提供免费的nivo-slider(http://www.concrete5.org/marketplace/addons/nivo-slider/),其他好用的ADD-ON还在搜索中


5,关于模板的设计: 当我们想将自己美工设计的网页,用CF5来创建应用时,这时可以按官方文档的要求,在themes目录中建立模板的大体布局(尤其是做多语言网站时,得考虑一套模板要供多种语言共用,所以模板大体布局不能包含有语言方面的元素),个性化元素在安装完模板后,在进入页面的编辑模式后动态添加;


6,CF6一个页面的元素有3类:

1)布局:
$a = new Area('Main1');
$a->display($c);

2)strack:

多个block的集合


3) block:

可以理解为组件,例如nav-bar, internal form, image,等已经安装好的ADD-ON


二,所有通过仪表盘创建pages, block, strack等,都可以通过code来实现

1,创建block

在 /block/目录下创建block文件夹,如果命名有下划线,在控制器命名时需要使用驼峰表达,如果建立一个block
/block/hello_word
controller.php  控制器 HelloWorldBlockController extends BlockController
db.xml 存储的表及字段信息
add.php 增加时用
edit.php 修改时用
view.php 前台展现时用
view.css 前台展现用CSS

然后到后台仪表盘进行block的安装

一些父控制器会默认执行的回调函数及执行顺序
A:  on_start()
B:  view() / add() / edit()  / save / delete()
C:  on_before_render()
D:  on_page_view()

更详细过程可查看源码:/concrete/core/libraries/block_controller.php


三,二次开发一个 image gallery 体会(不一定完全正确,只是自己的一些体会而已)

/block: 如果想修改内置的一些block的布局或功能,可以在这里面重写相应的页面,因为CF5加载的顺序是先找自定义目录,然后没有再加载系统核心目录;或做一些独立的功能(有有DB.XML,控制器,VIEW.PHP ADD.PHP等文件),不想package可能会设计比较多的功能;  二次开发完成后,需要到后台进行安装

/package: 如果要自己写一个block功能,比如 cookbook gallery(图片相册),可以在这里做

/package下的目录结构:


package 的控制器格式:
class CookbookGalleryPackage extends Package {

protected $pkgHandle = 'cookbook_gallery';
protected $appVersionRequired = '5.6.0';

protected $pkgVersion = '0.9.0';


public function getPackageName(){

return t("xxx");

}

public function getPackageDescription(){

return t("sssss");

}

public function install(){

$pkg = parent::install();

BlockType::installBlockTypeFromPackage('cookbook_gallery', $pkg);

}

}


block 控制器格式:


DB.XML


后天仪表盘进行package 安装


block控制器增加add/edit方法,那么在前台使用这BLOCK去执行add.php/edit.php时,会先调用block控制器的add/edit方法



添加view方法,前台显示是使用



add.php /  edit.php使用一样的代码:


view.php




建立gallery显示图片的来源(把来源定位为唯一标识,并制定包含的图片,这样在现实相册是就可以得到来源的图片了),这里的Name会在block列表中显示,为什么block列表中不直接显示 cookbook gallery呢,我理解从目录层次结构来看,一个cookbook gallery的package下面可以做不同的block功能,所以blocks用的复数,也大概表达了下面可以建立多个不同的block



前台进入编辑模式后,增加block,选择自己二次开发的Photo Gallery



这里实际就是add.php/eidt.php的布局



这里是view.php的布局




页面会自动加载各种block的控制器,而加载到gallery控制器时,会自动加载DB.XML中定义好的表的字段数据,并作为控制器的属性(在view中直接以字段名为变量名来获取字段数据)

block控制器的的add() / edit() / view()  是CF5提供的hook方法,方便二次开发用


一个模板可以定义为多种page type ;一种page type可以是多个page



(备注:截图来自 [Packt Publishing] concrete5 Cookbook.pdf)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值