刚刚接触phpcms,先从它的目录结构说起。

如下图所示,是phpcms的主目录结构:

其中api是接口目录,这个接口不是很明白。大概其是把别的内容加入进来,比如论坛啊什么的。

caches是缓存文件,存放的是缓存的信息,缓存能够提升网站的友好性,当第一次加载后,第二次就会很快的加载。

html目录,不晓得是什么意思。里面空空的。大概其是一些转化为html的文件存放在里面吧。

然后就是phpcms,这个是phpcms的核心目录,里面又有很多子目录,如下图所示:

languages是语言包,libs是一些核心类和函数,model目录里面是一些模型,moudules是模块,里面有一些控制器类,函数和模板,每个模块都对应着相应的控制器、函数和模板。plugin是插件目录。templates是模板信息。不过有点晕的是,不晓得与modules里的模板有什么区别。

分析完phpcms,接下来是phpsso_server目录,关于phpsso,我查了一下,PHPSSO是用PHP开发的单点登录系统。在接入PHPSSO的多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。PHPSSO可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制,是目前比较流行的企业业务整合的解决方案之一。它是一个独立的系统,里面的架构跟整个的phpcms差不多。

然后就是statics,这个目录存放的是一些美工的信息,css,js,images等。前台的后台的都存放在里面。

还有就是uplandfile目录,里面是一些上传的文件。

phpcms是一种mvc设计模式的内容管理系统。它的前台入口文件为index.php。

/**
* index.php PHPCMS 入口
*
* @copyright (C) 2005-2010 PHPCMS
* @license http://www.phpcms.cn/license/
* @lastmodify 2010-6-1
*/
//PHPCMS根目录 define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR); include PHPCMS_PATH.'/phpcms/base.php'; pc_base::creat_app();

由index.php进入核心目录phpcms中。然后进入真正的PHPCMS框架入口文件base.php。

后台入口文件为admin.php。

<?php
header('location:index.php?m=admin');
?>

略微看了一下,只是一个跳转,跳转到index.php界面,同时多了一个参数,大概这个参数就是控制页面进入后台的。

phpcms用的是mvc架构,在模板中用的是一种自己的模板技术,类似于Smarty,可以将html与PHP代码分开。随便找一个模板看一下。

{template 'member', 'header'}
<script language="javascript" type="text/javascript" src="{JS_PATH}admin_common.js"></script>
<link href="{CSS_PATH}dialog.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript" src="{JS_PATH}dialog.js"></script>
<div id="memberArea">
{template 'member', 'left'}
<div class="col-auto">
<div class="col-1 ">
<h6 class="title">收件箱</h6>
<div class="content">
<form name="myform" id="myform" action="{APP_PATH}index.php?m=message&c=index&a=delete" method="post" onsubmit="checkuid();return false;">
<table width="100%" cellspacing="0" class="table-list">
<thead>
<tr>
<th width="5%"><input type="checkbox" value="" id="check_box" onclick="selectall('messageid[]');"></th>
<th width="35%">标 题</th>
<th width="8%">回 复</th>
<th width="15%">发件人</th>
<th width="15%">发送时间</th>
</tr>
</thead>
<tbody>
{loop $infos $info}
<tr>
<td width="5%" align="center"><input type="checkbox" name="messageid[]" value="{$info['messageid']}"></td>
<td width="35%" align=""><a href="{APP_PATH}index.php?m=message&c=index&a=read&messageid={$info['messageid']}">{if $info['status']==1}<font color=red><b>{$info['subject']}</b></font>{else}{$info['subject']}{/if}</a></td>
<td width="8%" align="center">{if $info['status']!=2}{/if}{$info['reply_num']}</td>
<td width="15%" align="center">{$info['send_from_id']}</td>
<td width="15%" align="center">{date('Y-m-d H:i:s',$info['message_time'])} </a>
</tr>
{/loop} </tbody>
</table>
<div class="btn"><a href="#" onClick="javascript:$('input[type=checkbox]').attr('checked', true)">全选</a>/<a href="#" onClick="javascript:$('input[type=checkbox]').attr('checked', false)">取消</a>
<input name="submit" type="submit" class="button" value="删除选中" onClick="return confirm('确认要删除 『 选中 』 吗?')">&nbsp;&nbsp;</div> </form> <div id="pages">{$pages}</div>
</div>
<span class="o1"></span><span class="o2"></span><span class="o3"></span><span class="o4"></span>
</div> </div>
</div>
<script type="text/javascript">
function read(id, name) {
window.top.art.dialog({id:'sell_all'}).close();
window.top.art.dialog({title:'查看详情'+name+' ',id:'edit',iframe:'?m=message&c=index&a=read&messageid='+id,width:'700',height:'450'}, function(){var d = window.top.art.dialog({id:'see_all'}).data.iframe;var form = d.document.getElementById('dosubmit');form.click();return false;}, function(){window.top.art.dialog({id:'see_all'}).close()});
}
function checkuid() {
var ids='';
$("input[name='messageid[]']:checked").each(function(i, n){
ids += $(n).val() + ',';
});
if(ids=='') {
window.top.art.dialog({content:'请选择再执行操作',lock:true,width:'200',height:'50',time:1.5},function(){});
return false;
} else {
myform.submit();
}
} </script>
{template 'member', 'footer'}

这是一个消息message页面的代码,里面会有一些{}括起来的内容,它就是phpcms自带的模板技术。可以将php页面的信息渲染到界面中去。

略看了一下模板目录中的内容,如下所示:

有一种模块化的感觉,有评论模块、有内容模块、有链接模块、有消息模块、有查询模块等等。

大概其,采用的是mvc架构,还是比较清晰的。对于二次来发来说,搞清目录结构还是很重要的。还要研究研究代码。

文章转自:http://www.cnblogs.com/jiqing9006/archive/2012/07/24/2606553.html

(三)phpcms之文件目录的更多相关文章

  1. Phpcms所有系统变量列表 Phpcms V9 文件目录结构

    Phpcms所有系统变量列表 用户变量: view plaincopy to clipboardprint? $_userid    用户id   $_username 用户名   $_areaid  ...

  2. PHPCMS详细文件目录结构

    PHPCMS详细文件目录结构 根目录 |  –  api  接口文件目录 |  –  caches 缓存文件目录 |  – configs 系统配置文件目录 |  – caches_* 系统缓存目录 ...

  3. Linux学习--第三天--linux文件目录、ls、mkdir、mv、rm、touch、cat、tac、more、less、head、tail、ln、chmod、chown、chgrp、umask

    文件目录 目录名 备注 bin 下面的命令所有人都可以运行 sbin 只有root才能运行,s代表super /mnt,/media,/misc 都是挂载目录,但一般只用mnt /opt 第三方软件安 ...

  4. PHPCMS V9完全开发介绍

    PHPCMS V9 文件目录结构: 根目录 | – api 接口文件目录 | – caches 缓存文件目录 | – configs 系统配置文件目录 | – caches_* 系统缓存目录 | – ...

  5. paip.最好的脚本语言node js 环境搭建连接mysql

    paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模 ...

  6. Node.js的模块载入方式与机制

    Node.js中模块可以通过文件路径或名字获取模块的引用.模块的引用会映射到一个js文件路径,除非它是一个Node内置模块.Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始 ...

  7. SharePoint2010主题和样式揭秘

    转:http://www.cnblogs.com/Ryu666/archive/2011/07/28/2119652.html 好久好久没写技术博客了,差点以为技术已经离我远去.但鱼离不开水,我怎能把 ...

  8. Delphi XE7下 Intraweb 发布为ASP.NET应用程序

    一.XE7下Intraweb开发这里就不说了,重点是在开发Intraweb时与ISAPI不同之处要选择 IW library,编译成DLL文件. 二.网站的配置 1.这是站点的物理路径,c:\site ...

  9. 【IOS实例小计】UIImageView

    预备知识: UIImage 是一个专门存储图片数据的对象,默认兼容的图片格式是 PNG,可以通过文件.Quartz image对象或 image Data数据得到一个图片对象. UIImage相关功能 ...

随机推荐

  1. MySQL全文检索笔记 转载

    1. MySQL 4.x版本及以上版本提供了全文检索支持,但是表的存储引擎类型必须为MyISAM,以下是建表SQL,注意其中显式设置了存储引擎类型 CREATE TABLE articles ( id ...

  2. js 组件的写法

    var Test1 = function(){ var name = ""; this.setName = function(username){ name = username; ...

  3. mouseover和mouseout事件在鼠标经过子元素时也会触发

    JavaScript的mouseover和mouseout事件,在绑定元素内部有子元素的情况下, 经过绑定元素时会多次触发mouseover和mouseout事件. jQuery解决办法: jquer ...

  4. chkconfig-增加一个服务设置服务自启动

    参考 http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796873.html 如何增加一个服务: 1.服务脚本必须存放在/etc/ini ...

  5. vscode编写插件详细过程

    前言 之前编写了一个vscode插件用vscode写博客和发布,然后有园友要求写一篇来介绍如何开发一个vscode扩展插件,或者说介绍开发这个插件的过程.然而文章还没有写,园子里面已经有人发布一个文章 ...

  6. css3:user-select属性

    一.user-select简介 这是在css3 UI规范中新增的一个功能,用来控制内容的可选择性 二.user-select:值 auto——默认值,用户可以选中元素中的内容 none——用户不能选择 ...

  7. [BZOJ 3218] A + B Problem 【可持久化线段树 + 网络流】

    题目连接:BZOJ - 3218 题目分析 题目要求将 n 个点染成黑色或白色,那么我们可以转化为一个最小割模型. 我们规定一个点 i 最后属于 S 集表示染成黑色,属于 T 集表示染成白色,那么对于 ...

  8. Book of Evil

    Codeforces Round #196 (Div. 2) D:http://codeforces.com/contest/337/status/D 题意:给你一个树,然后树中有一m个点,求到这m个 ...

  9. 移植qt5.3.1到arm

    最近刚入手一款开发板(比较低端,刚毕业工作还没一个月,穷屌丝一个).在学校以前都是用的是Friendly Arm的6410,使用的qt版本是使用的最多的4.7.0版本,入手的板子是4.7.4.qt5出 ...

  10. Android开源项目发现--- 工具类依赖注入DI篇(持续更新)

    通过依赖注入减少View.服务.资源简化初始化,事件绑定等重复繁琐工作 1. AndroidAnnotations(Code Diet) android快速开发框架 项目地址:https://gith ...