在开始之前,我还是会很、灰常、系分、超级、very变态、垃圾、恶心地广告一句:Deskor是一个优秀的开源框架!
deskor的开发者,也就是那个超级变态无耻的一米六二,希望所有开发者都愿意并且能够有机会来帮deskor来进行开发,所以,他给deskor设计一个modules的概念,就是程序根目录下的那个modules目录。任何人都可以在这个目录下建立一个目录并且开始他的deskor Modules开发。
那让我们现在就来开始写一个模块儿吧。让我的名字留在deskor的开发者名单上。让我们满足一米六二那点可怜的理想。
我们假想,你的Web服务器的根目录是D:/webroot/.您的deskor的文件放在D:/webroot/deskor/下面。
首先我们要在D:/webroot/deskor/modules下建立一下目录,这里我们建立一个叫myphotos的目录。这个目录的结构是这样的:
D:/webroot/deskor/modules/myphotos /app /css /script /images /include /filters /events index.php mod_info.php
然后我们看看D:/webroot/deskor/modules/myphotos/index.php的内容:
一般情况下它都是这样的:
- <?php
- include "mod_info.php";
- include("../../index.php");
- ?>
这个非常清楚,是必须的。您不需要改动一个字儿。
再看看D:/webroot/deskor/modules/myphotos/mod_info.php:
- <?php
- $mod_info["name"]="像册模块";
- $mod_info["description"]="是由小傻帽写的一个像册程序。";
- $mod_info["dirname"]="myphotos";
- $mod_info["path_addons"]="modules/".$mod_info["dirname"]."/";
- ?>
这个大家也都能看懂,myphotos是我们建立的放模块的目录的名称。$mod_info["name"],$mod_info["description"]这些都不重要啦,只是您向其他人介绍这个模块的功能的。当然,您可以把它写得天花乱坠,妙笔生花。您在这里把死人吹成活人都可以。
这个文件中,其实只有$mod_info["dirname"]是对我们的程序的运行有影响的.这个您可一定要设置好.当然这个变量会影响$mod_info["path_addons"].
然后我们要开始我们的编程之旅了。激动了吧。别激动,精彩在后面呢。
首先我要让您知道,我们的url地址将会是这样的:
http://***.com/deskor/modules/myphotos/?mod=****&act=*****
其中mod表示controller名字。act表示action的名字。
假设访问地址是这样的:
http://***.com/deskor/modules/myphotos/?mod=photos&act=listall
那就代表应该有这样几个文件:
在D:/webroot/deskor/modules/myphotos/app/layouts/目录下应有这样一个文件。最开始这个文件可以非常简单,只包括这样几行:
- <?php
- if(file_exists($config["ABSPATH"].$mod_info["path_addons"]."app/views/$control/$act.php"))
- require_once($config["ABSPATH"].$mod_info["path_addons"]."app/views/$control/$act.php");
- ?>
这个文件是整个显示层的布局文件,您可以在这段代码的前面加上头,在后面加上尾。
在D:/webroot/deskor/modules/myphotos/app/controls/目录下应有一个photos.php文件。
在D:/webroot/deskor/modules/myphotos/app/models/目录下,应有一个photos.php.在一般情况下,这个文件定义要用到的数据表的结构。
在D:/webroot/deskor/modules/myphotos/app/views/目录下应该有一个photos目录,这个目录下有一个listall.php文件。
我的D:/webroot/deskor/modules/myphotos/app/controls/photos.php是这样的写的:
- <?php
- class controllerPhotos extends controller{
- function listall()
- {
- global $data;
- $photosObj=new modelPhotos();
- $data["photos"]=$photosObj->findRows();
- }
- }
- ?>
那么这个modelPhotos类是在哪里定义的呢?
我们打开D:/webroot/deskor/modules/myphotos/app/models/photos.php,内容应是这样的:
- <?php
- class modelphotos extends model {
- /**
- * 主键列名
- *
- * @var string
- */
- var $primaryKey="id";
- /**
- * 表格名称
- *
- * @var string
- */
- var $tableName="myphotos_byxurenlu";
- /**
- * 一个描述表格结构的数组。
- *
- * @var Array
- */
- var $tableMap=array(
- "tableName"=>"myphotos_byxurenlu",
- "primaryKey"=>"id",
- "columns"=>array(
- array("name"=>"id","type"=>TYPE_KEYID,"KEY"=>true),
- array("name"=>"username","type"=>TYPE_STRING),
- array("name"=>"uid","type"=>TYPE_INT),
- array("name"=>"uploadDate","type"=>TYPE_DATE),
- array("name"=>"uploadTime","type"=>TYPE_TIME),
- array("name"=>"text","type"=>TYPE_TEXT),
- array("name"=>"title","type"=>TYPE_STRING),
- array("name"=>"path","type"=>TYPE_STRING),
- array("name"=>"lastmodify","type"=>TYPE_TIMESTAMP)
- )
- );
- }
- ?>
这里大家会发现其实就是定义了一个数据表。其实这个model基类已经封装了很多方法。我们的findRows()方法,会自动地从这个表中取出最前一页的内容。当然这个一页是多少,是可以改的。
最后问题是,我们在control类里面查出了一个页的数据记录,那我们怎么显示呢?
so easy,我们看看D:/webroot/deskor/modules/myphotos/app/views/photos/listall.php,在里面写上这样一段文字:
- <?php
- foreach ($data["photos"]["rows"] as $row)
- {
- echo '<a href="uploads/'.$row["uid"]."/".$row["path"].'" title="'.$row["title"].'">';
- echo ('<img src=uploads/'.$row["uid"].'/small.'.$row["path"].' style="border:3px solid white;" />');
- echo "</a> ";
- }
- echo "<div align='right' style='font-size:12px;margin-right:100px;'>";
- echo $data["photos"]["pagestr"];
- echo "</div>";
- ?>
这就将第一页的照片都显示出来了。在这里,我们建议,如果您不记得$data的结构了,您可以用来查看数据的结构。hoho,是不是很酷啊。怎么样,来试试??
然后济览http://***.com/deskor/modules/myphotos/?mod=photos&act=listall一下,是不是效果没出来?
这很简单,因为这个表里还没有内容嘛。打开phpmyadmin,在myphotos_byxuren中加上几行,是不是再看http://***.com/deskor/modules/myphotos/?mod=photos&act=listall, 是不是就看到了个大概?
您会注意到,下面带有分页分类,是的,没错,我们把分页也帮您做好了。开始享受他吧。
还没有评论。