phpwind(简称:pw)是一个基于PHP和MySQL的开源社区程序,是国内最受欢迎的通用型论坛程序之一。phpwind第一个版本ofstar发布于2004年。目前phpwind项目品牌由阿里云计算有限公司拥有,软件全面开源免费。现已有累积超过100万的网站采用phpwind产品,其中活跃网站近10万。自2011年发布PHPWind8.x系列版本以来,phpwind围绕着提升社区内容价值和推进社区电子商务两个大方向,开发单核心多模式的产品,实现新型的社区形态。今年筹备发布的phpwind9.0将采用phpwind自主研发的Windframework框架并整合基于阿里云云计算架构的社区云平台应用中心,将为未来的社区提供更丰富多样的解决方案。
如何自定义开发PW9.0:
pw采用经典的MVC结构和企业级的分层架构,各个模块和层次各司其职,耦合性低。下面简单介绍常用目录的作用
src/service/用于存放Model类
template/用于存放View类
src/applications/ 用于存放Controller类
M层都有srv,dm,dao等目录
srv用于存放各种业务逻辑,比如发一个帖子,需要各种权限判断之后才能插入
dm是数据字段映射以及简单规则判断,不明白没关系
dao就是处理增改删查的sql
另外还有一些scv,dm,dao目录上的独立文件,我们称为数据服务(ds),这是基础的数据元服务层,相当于dao层的再包装,只有ds才能调用dao里的接口,这么理解就对了。
1、 创建src/applications/cms/controller/IndexController.php
<?php Wind::import('LIB:base.PwBaseController'); class IndexController extends PwBaseController { /** * 这是首页 通过index.php?m=cms访问 * @see WindController::run() */ public function run() { $ds = Wekit::load('cms.PwCms'); $this->setOutput($ds->get(), 'content'); } /** * 这是内容页 通过index.php?m=cms&a=read访问 * Enter description here ... */ public function readAction() { } /** * 用于模块的门户机制安装,调试完成后请删除 通过index.php?m=cms&a=setup访问 */ public function setupAction() { $srv = Wekit::load('design.srv.router.PwDesignRouter'); $srv->set('cms', 'index', 'run', 'cms首页'); $srv->set('cms', 'index', 'read', 'cms阅读页','id'); //如果不需要单独定制阅读页样式(像论坛的版块页门户编辑保存时的提醒),把id去掉 这里假设阅读页参数为id $this->showMessage('success'); } } ?>
2、创建 template/cms/index_run.htm,请使用门户标准模板,不然进行不了门户管理
下载地址:http://www.phpwind.net/read/2863370
<!doctype html> <html> <head> <template source='TPL:common.head' load='true' /> </head> <body> <pw-start/> <div class="wrap"> <template source='TPL:common.header' load='true' /> <!--如果要使用公共头部,请加这一行--> <div class="main_wrap"> <pw-navigate/> <div class="cc"> <!-- 网页设计区域开始 --> <pw-drag id="segment_drag"/> {$content} <!-- 网页设计区域结束 --> </div> </div> <pw-footer/> </div> <script> Wind.use('jquery', 'global'); </script> <pw-end/> </body> </html>
3 创建 src/applications/cms/PwCms.php文件
<?php /** * 只有这个文件,才能使用dao里的接口,请遵循这个规定 */ class PwCms { public function get() { return '我是内容123'; } public function getList() { return array( 1=>array('id'=>123, 'content'=>'我是内容123'), 2=>array('id'=>124, 'content'=>'我是内容124'), ); } } ?>
浏览器地址栏输入http://localhost/index.php?m=cms&a=setup 提示安装成功
再输入http://localhost/index.php?m=cms