1. 思路:
    2. 一、目前在企业中使用比较多的cms内容管理有如下几种:
    3. 1、dedecms
    4. 2、phpcms
    5. 二、我们选择学习v9版本的phpcms,主要有以下几点原因:
    6. 1、基于MVC模式的内容管理系统
    7. 2、碎片技术
    8. 三、下面,我们就来进行phpcms v9的安装:
    9. ci框架的安装,我们只需要按照如下步骤进行操作就可以了
    10. 1、官网:http://www.phpcms.cn 去下载phpcms v9最新的版本
    11. 2、下载完毕后,解压,并将其复制粘贴到程序的主目录(d:/wamp/xmall/),然后再将其重命名为"mycms",那么"mycms" 就作为cms的项目名称存在了
    12. 3、为我们的cms项目搭建一个虚拟主机:
    13. 首先,找到httpd.conf配置文件,开启虚拟主机的配置
    14. 然后,找到httpd-vhosts.conf配置文件,进行虚拟主机的配置
    15. 最后,找到hosts配置文件,为我们的ci项目添加dns映射
    16. 4、在浏览器中输入 http://www.mycms.com/install/ 回车,就可进行phpcms v9内容管理系统的安装
    17. 四、phpcms v9框架的目录结构分析:
    18. 了解v9框架的目录结构,有助于帮助我们快速建立起对v9框架的一个整体认识
    19. 打开"mycms"项目,有如下文件和目录
    20. 使用协议说明文档、英文版的用户手册,这两项不是项目所必须的,可暂时将其删除
    21. |-----api  接口文件目录
    22. |-----caches 缓存文件目录
    23. |-----configs 系统配置文件目录
    24. |-----database.php  数据库配置文件
    25. |-----route.php     路由配置文件
    26. |-----system.php    系统配置文件
    27. |-----cache.php     缓存配置文件
    28. |-----configs_*         系统缓存文件目录
    29. |-----configs_commons/caches_data   主要用来存放后台设置的配置信息
    30. |-----category_content.cache.php栏目与站点映射所对应的配置文件
    31. |-----category_content_1.cache.php站点1下所有栏目的详细配置信息
    32. |-----category_item_1.cache.php 文章模型下各栏目所对应的数据量
    33. |-----category_item_2.cache.php 下载模型下各栏目所对应的数据量
    34. |-----category_item_3.cache.php 图片模型下各栏目所对应的数据量
    35. |-----keylink.cache.php     关联链接配置缓存文件
    36. |-----model.cache.php       三大模型配置缓存文件
    37. |-----mood_program.cache.php    表情配置缓存文件
    38. |-----position.cache.php    推荐位配置缓存文件
    39. |-----poster_template_1.cache.php广告位模板配置缓存文件
    40. |-----sitelist.cache.php    站点列表配置文件,主要缓存所有站点的基本配置信息
    41. |-----type_content.cache.php    多个站点下的类别配置信息
    42. |-----type_content_1.cache.php  当前站点下类别配置信息缓存文件
    43. |-----urlrules.cache.php    url规则配置信息缓存文件
    44. |-----urlrules_detail.cache.php url规则详细配置信息缓存文件
    45. |-----special.cache.php     专题配置信息缓存文件
    46. |-----role.cache.php        角色配置缓存文件
    47. |-----link.cache.php        友情链接缓存文件
    48. |-----configs_model/caches_data
    49. |-----content_form.class.php    生成表单的类库缓存文件
    50. |-----content_input.class.php   入库时,对表单数据进行验证的类库缓存文件
    51. |-----content_output.class.php  对从数据表中查询出来的数据进行处理的函数
    52. |-----content_update.class.php  对要更新的数据进行有效性验证的函数
    53. |-----model_field_1.cache.php   文章模型所有模型字段的缓存信息
    54. |-----model_field_2.cache.php   下载模型所有模型字段的缓存信息
    55. |-----model_field_3.cache.php   图片模型所有模型字段的缓存信息
    56. |-----phpcms                        phpcms框架主目录
    57. |-----languages                  框架语言包目录
    58. |-----libs                   框架主类库、主函数库目录
    59. |-----classes
    60. |-----form.class.php    表单生成类库文件
    61. |-----application.class.php 应用程序类库文件
    62. |-----image.class.php       图片处理类库文件
    63. |-----attachment.class.php  附件处理类库文件
    64. |-----param.class.php       URL参数处理类库文件
    65. |-----functions
    66. |-----global.func.php       公共函数库文件
    67. |-----extension.class.php   扩展函数库文件
    68. |-----model                  框架数据库模型目录
    69. |-----content_model.class.php       内容模型文件
    70. |-----admin_model.class.php     管理员模型文件
    71. |-----attachment_model.class.php    附件模型文件
    72. |-----modules                    框架模块目录
    73. |-----admin             admin模块
    74. |-----index.php         index.php控制器文件
    75. |-----content               content模块
    76. |-----classes           content模块通用类库
    77. |-----fields            content模块模型字段
    78. |-----functions         content模块通用函数库
    79. |-----templates         content模块后台模板文件
    80. |-----index.php         index.php控制器文件
    81. |-----templates                  框架系统前台模板目录
    82. |-----default               默认的模板风格
    83. |-----content           content模块模板目录
    84. |-----category.html 频道页模板文件
    85. |-----list.html     列表页模板文件
    86. |-----show.html     内容页模板文件
    87. |-----config.php        模板配置文件
    88. |-----phpsso_server                 phpsso主目录
    89. |-----statics                       网站素材文件目录
    90. |-----css                                   css文件
    91. |-----images                    images文件
    92. |-----js                    js文件
    93. |-----uploadfile                    上传附件
    94. |-----admin.php                     后台入口文件
    95. |-----index.php                     前台入口文件
    96. 五、phpcms v9中的url路由规则:
    97. 浏览器中输入 http://www.mycms.com/index.php?m=content&c=index&a=list&catid=1  回车时,默认情况下会找到
    98. phpcms                  框架主目录
    99. |-----modules               模块目录
    100. |-----content           content模块
    101. |-----index.php     index.php控制器中list方法来显示列表页面
    102. 到底是不是呢?我们打开index.php控制器文件,并在index方法中添加一些代码,运行输出,证明确实如我们所料
    103. 我们可以将浏览器中的url归纳如下:
    104. http://域名/入口文件?m=模块名&c=控制器&a=方法名&catid=参数值
    105. 当我们在浏览器中输入http://www.myshop.com/index.php 后面没有跟任何参数, 回车时,默认情下会将首页显示出来
    106. 这是因为phpcms v9为我们指定了一个默认执行的模块、控制器和方法
    107. 默认控制器的设置在 "caches/configs/routes.php" 配置文件中进行设置的,我们可以重新设置默认的控制器
    108. 六、栏目的添加
    109. 1、pc设计者认为,栏目详情页的数据都应该属于一个模型,所以在添加栏目时,必须给栏目指定一个模型,至于要选择什么模型,完全取决于栏目详情页要显示什么类型的内容
    110. 详情页:文章信息类的内容     文章模型
    111. 详情页:图片类信息            图片模型
    112. 详情页:下载东西         下载模型
    113. 详情页:播放视频         视频模型
    114. 2、如果以上模型还不能满足项目的需要,那么我们还可以自定义模型,通常情况下,一个网站是由多种模型的数据来组成的
    115. 3、栏目添加选项:
    116. 栏目名称:在网站静态化时,创建一个以此目录名命名的目录来存放当前栏目下相关的模板文件
    117. 4、pc的设计者认为,每个栏目会对应当前所选模型的三个模板文件:
    118. 频道页模板文件
    119. 列表页模板文件
    120. 内容页模板文件
    121. 这些模板文件所在位置:phpcms/templates/default/content/ 目录下,如果想修改模板文件,只需要到此目录下找到对应的模板文件进行修改就可以了
    122. 频道页:category_*.html
    123. 列表页:list_*.html
    124. 内容页:show_*.html
    125. 至此,栏目各页面与模型的三个模板文件对应起来了
    126. 注意:频道页面的显示是有条件的(当前栏目必须有子栏目才可以)
    127. 5、栏目添加成功后,栏目信息被存储到了v9_category数据表中,同时还被缓存到了phpcms/caches/caches_common/category_content.cache.php文件中,这个缓存文件非常重要,一定要引起足够的重视,前台的很多数据都是直接从此缓存文件中获取来的
    128. 七、项目的部署:
    129. 1、素材文件:
    130. statics
    131. |-----images
    132. |-----cmsimages     项目图片文件
    133. |-----js
    134. |-----cmsjs     项目js文件
    135. |-----css
    136. |-----cmscss        项目css文件
    137. phpcms
    138. |-----templates
    139. |-----new       新的模板风格
    140. |-----content   内容模块模板文件
    141. |-----category.html 频道页模板文件
    142. |-----list.html     列表页模板文件
    143. |-----show.html     内容页模板文件
    144. |-----config.php        添加模板文件的配置
    145. 或者
    146. |-----default
    147. |-----content   内容模块模板文件
    148. |-----category_shetu.html   频道页模板文件
    149. |-----list_shetu.html       列表页模板文件
    150. |-----show_shetu.html       内容页模板文件
    151. |-----config.php            配置新添加的模板文件
    152. 注意:模板文件的命名规范
    153. 2、进入后台,将栏目与模板文件对应起来
    154. 3、常量的定义:phpcms/base.php文件
    155. 4、系统类库、函数库、模型文件及配置文件的加载
    156. pc_base::load_sys_class();//加载系统类库
    157. pc_base::load_sys_func();//加载系统函数库
    158. pc_base::load_model();//加载模型
    159. pc_base::load_config();//加载配置文件或配置选项信息
    160. pc_base::load_app_func();//加载应用程序函数库
    161. pc_base::load_app_class();//加载应用程序类库
    162. 全局范围可用,也可以直接在模板文件中使用,在二次开发时,很有用
    163. 5、模板语法:
    164. (1)常量表示:
    165. {JS_PATH}//相当于 <?php echo JS_PATH; ?> 或者 <?=JS_PATH?>,不带php标识,说明是在输出
    166. (2)变量语法:
    167. {$title}//会被解析成<?php echo $title;?>,不带php标识,说明是输出
    168. (3)单行php解析语法
    169. {php $i=10;}//相当于 <?php $i=10;?> ,带php标识,说明在处理逻辑,而不是输出
    170. (4)条件判断:
    171. {if $a > $b}
    172. {/if}
    173. 解析为:
    174. <?php
    175. if($a>$b){
    176. }
    177. ?>
    178. (5)循环:
    179. {loop $data $key $val}{/loop}
    180. 解析为:
    181. <?php
    182. foreach($data as $key=>$val){
    183. }
    184. ?>
    185. (6)自增自减:通常跟循环一起使用
    186. {php $i=10;}
    187. {loop $a $b}
    188. {$i++}  //自增自减,会解析为赋值操作,而不是输出操作,如:<?php $i++;?>
    189. {/loop}
    190. (7)包含模板文件:
    191. {template "content","header"}//包含 "templates/default/content/header.html" 模板文件
    192. 6、内容详情页中的变量从何而来?
    193. 找到phpcms/modules/content/index.php控制器中的show()方法,在方法中随意定义一些变量,
    194. 然后,看一下是否能够从模板文件中获取到值,答案是肯定的
    195. {title}、{$content}从哪里来?
    196. 技巧:如果在控制器方法中不能直接搜到模板文件中的变量,那么此变量必定在extract($data);中
    197. extract($data);//主要用来将数组中个元素转化为变量,
    198. 总结:当模板文件中的变量不能在对应的方法中找到的话,那么此变量必定是从$data数组元素中转化而来的
    199. 内容页面的变量:
    200. (1)包含模板文件
    201. {template "content","header"}
    202. (2)生成站点首页url的函数
    203. {siteurl($siteid)}
    204. (3)面包屑导航
    205. {catpos($catid)}
    206. (4)来源
    207. {$copyfrom}
    208. (5)发布时间
    209. {$inputtime}
    210. (6)文章描述
    211. {if $description}<div class="summary" >{$description}</div>{/if}
    212. (7)内容
    213. {if $allow_visitor==1}
    214. {$content}
    215. <!--内容关联投票-->
    216. {if $voteid}
    217. <script language="javascript" src="{APP_PATH}index.php?m=vote&c=index&a=show&action=js&subjectid={$voteid}&type=2"></script>
    218. {/if}
    219. {else}
    220. <CENTER><a href="{APP_PATH}index.php?m=content&c=readpoint&allow_visitor={$allow_visitor}"><font color="red">阅读此信息需要您支付 <B><I>{$readpoint} {if $paytype}元{else}点{/if}</I></B>,点击这里支付</font></a></CENTER>
    221. {/if}
    222. (8)短标题:
    223. {if $titles}
    224. <fieldset>
    225. <legend class="f14">本文导航</legend>
    226. <ul class="list blue row-2">
    227. {loop $titles $r}
    228. <li>{$n}、<a href="{$r[url]}">{$r[title]}</a></li>
    229. {/loop}
    230. </ul>
    231. </fieldset>
    232. {/if}
    233. (9)分页代码:
    234. {$pages}
    235. (10)相关搜索词:
    236. <p style="margin-bottom:10px">
    237. <strong>相关热词搜索:</strong>
    238. {loop $keywords $keyword}
    239. <a       href="{APP_PATH}index.php?m=content&c=tag&catid={$catid}&tag={urlencode($keyword)}" class="blue">{$keyword}</a>
    240. {/loop}
    241. </p>
    242. (11)上一篇、下一篇
    243. <p class="f14">
    244. <strong>上一篇:</strong><a href="{$previous_page[url]}">{$previous_page[title]}</a>
    245. <strong>下一篇:</strong><a href="{$next_page[url]}">{$next_page[title]}</a>
    246. </p>
    247. (12)统计点击量:
    248. <script language="JavaScript" src="{APP_PATH}api.php?op=count&id={$id}&modelid={$modelid}"></script>
    249. (13)网页标题:
    250. {$SEO['title']}{$SEO['site_title']}
    251. (14)网页描述:
    252. {$SEO['description']}
    253. (15)网页关键子:
    254. {$SEO['keyword']}
    255. 7、pc标签的使用:在v9中,我们将使用pc标签作为获取数据的主要方式
    256. pc标签分模块来使用,今天,主要来学习内容模块pc标签的使用
    257. 内容模块的pc标签可用来完成如下功能:
    258. (1)获取内容列表:lists
    259. (2)获取点击排行榜:hits
    260. (3)获取相关文章:relation
    261. (4)获取栏目列表:category
    262. 8、自定义pc标签:pc标签的源代码在 phpcms/modules/模块名/classes/模块名_tag.class.php中
    263. 我们可根据项目需求,为pc标签增加额外的功能,以满足项目的需要
    264. 9、get万能标签:通过sql语句来获取数据
    265. 10.碎片标签:碎片功能允许我们将网页分为若干块儿,每一块儿都可以在后台像修改文章内容一样由
    266. 编辑人员来可视化的维护,并可实时替换每一块儿的内容
    267. {pc:block pos="daohang"}{/pc}
    268. 碎片:碎片其实就是一段HTML代码,只不过这段html代码如果作为碎片的话,就可以由编辑人员在后
    269. 台任意更改了
    270. 11、扩展函数库:
    271. phpcms/libs/functions/global.func.php
    272. phpcms/libs/functions/extend.func.php
    273. 12、二次开发:
    274. 扩展控制器:MY_index.php
    275. ?>

邓_phpcms_phpcms授课思路复习的更多相关文章

  1. eclipse中 使用maven搭建ssh项目 思路复习(含有pom.xml)

    首先在web.xml中配置监听器 在服务器启动的时候 进行bean对象的创建(只会创建单例对象 dao service   多例对象action可不会创建  每个多例对象是不同的 创建了有什么意义呢 ...

  2. react第十九单元(react+react-router-dom+redux综合案例1)

    第十九单元(react+react-router-dom+redux综合案例1) #课程目标 复习 综合练习 实战能力 #知识点 react react-router redux #授课思路 #案例和 ...

  3. 《有限元分析基础教程》(曾攀)笔记一-二维杆单元有限元程序(基于Python)

    曾攀老师的<有限元分析基础教程>第三章有二维杆单元的推导,并结合一个例题进行了解析解和基于Matlab的程序求解.但是我感觉书中的MATLAB代码有点罗嗦,而且一些实现方法也比较麻烦,比如 ...

  4. Android开发全套视频教程在线观看网盘下载

    千锋金牌讲师老罗老师简介: 国内第一批Android教学讲师,10多年软件开发经验,6年多教学经验,曾担任广东电信北京分公司移动事业部项目经理,主持过微软中国平台考试系统.山西省旅游局智能化平台等大型 ...

  5. java亿级流量电商详情页系统的大型高并发与高可用缓存架构实战视频教程

    亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 完整高清含源码,需要课程的联系QQ:2608609000 1[免费观看]课程介绍以及高并发高可用复杂系统中的缓存架构有哪些东西2[免费观看]基于 ...

  6. Deeplearning.ai课程笔记--汇总

    从接触机器学习就了解到Andrew Ng的机器学习课程,后来发现又出来深度学习课程,就开始在网易云课堂上学习deeplearning.ai的课程,Andrew 的课真是的把深入浅出.当然学习这些课程还 ...

  7. 2019年Unity学习资源指南[精心整理]

    前言 进入一个领域,最直接有效的方法就是,寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括: 1.主流的学习社区与网站. 2.该领域的知名大牛与热心分享的从业者. 3.如何有效的 ...

  8. react第二单元(react的组件-state-props-setState)

    第二单元(react的组件-state-props-setState) 课程目标 理解组件和组件的创建.以及能够根据实际场景去划分合理的组件. 理解并且能够灵活的应用组件中的state.props. ...

  9. react第一单元(简介)

    第一单元(react简介) 课程目标 理解react这个框架在前端开发中的地位 理解react诞生的原因和意义(react是一个用于快速构建前端视图的javaScript库) 理解什么是虚拟dom.原 ...

随机推荐

  1. 求字符数组逆序数(poj1007)

    int InversionNumber(char* s,int len) { int ans=0;  //s逆序数 int A,C,G;  //各个字母出现次数,T是最大的,无需计算T出现次数 A=C ...

  2. 基于zepto的移动端日期和时间选择控件

    前段时间给大家分享过一个基于jQuery Mobile的移动端日期时间拾取器,大家反应其由于加载过大的插件导致影响调用速度.那么今天我把从网络上搜集到的两个适合移动端应用的日期和时间选择插件分享给大家 ...

  3. SQL重复记录查询的几种方法

    http://www.jb51.net/article/34820.htm \ 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 复制代码 代码如下: select * f ...

  4. MySQL:表的操作 知识点难点总结:表完整性约束及其他常用知识点二次总结🙄

    表操作 一 : 修改表表表表表表表表表: ALTER TABLE 语法 1. 改表名rename alter table 表名 rename 新表名 2. 增加字段add alter table 表名 ...

  5. 微信小程序开发教程目录

    本系列教程是自己在工作中使用到而记录的,没有顺序之分 如有错误之处,请给与指正,也不希望误导了别人 微信小程序开发教程目录 微信小程序之注册和入门 微信小程序之HTTPS请求 微信小程序开发之选项卡 ...

  6. 【Python3的函数初识】

    一.函数 1.什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率,可扩展性强. 2.函数的分类 在python中函数分两类:内 ...

  7. PHP连接LDAP进行登录验证

    基于安全性考虑,准备把PHP做的自动化平台加入ldap登录验证,具体做法如下: 了解背景: LDAP 的全称是"轻量级目录访问协议(Lightweight Directory Access ...

  8. PyQt4 的事件与信号 -- 重写事件处理方法

    # PyQt中的事件处理主要依赖重写事件处理函数来实现 import sys from PyQt4 import QtCore, QtGui class MainWindow(QtGui.QWidge ...

  9. XCode8中的sizeClass设置

    xcode8出来很久了,xcode9都要出来了,项目中由于一直没遇到用到适配屏幕的情况,所以一直也就忽略了这个知识点.今天忽然想起来,就抱着试一试的态度打开了xcode,我去~就我现在了解而言,屏幕大 ...

  10. redux入门指南

    前言:大概一个月没有写博客了,这两天正好是周末,就写点东西来梳理下之前几个月的所写与所得; 大概两个月前,学习了一下 redux ,还是一点难度的,花了我一天的时间来搞明白他, 但是都没怎么记录,今天 ...