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. ?>

最新文章

  1. mybatis-generator-gui--一个mybatis代码自动生成界面工具
  2. 块级元素和内联元素的区别(HTML)
  3. Nginx反向代理关于端口的问题
  4. Oracle中创建用户和授权
  5. TFS使用中的问题
  6. flappy pig小游戏源码分析(1)——主程序初探
  7. C# DataTable转换成DataRow
  8. DAG的动态规划 (UVA 1025 A Spy in the Metro)
  9. 解决本地软件链接不上虚拟机mysql 的问题:grant all privileges on *.* to &#39;root&#39;@&#39;%&#39; identified by &#39;nsfocus&#39;
  10. BZOJ 3389: [Usaco2004 Dec]Cleaning Shifts安排值班
  11. nginx安装配置
  12. UBUNTU安装 SSH 服务
  13. C语言#和##操作符使用方法
  14. kerberos简单介绍
  15. nowcoder 寻找(LCA)
  16. Tirgger SimpleTrigger CronTrigger(四)
  17. Docker Compose 容器编排
  18. Shallwe学长的模拟赛
  19. WCF DEMO1 创建自托管宿主
  20. git push要输入密码问题

热门文章

  1. ES6 modules 详解
  2. Java编程思想读书笔记(一)【对象导论】
  3. 第四章:大数据 の HBase 基础
  4. Java学习笔记9(面向对象二:this、继承、抽象类)
  5. windows服务管理操作
  6. PE解析器的编写(四)——数据目录表的解析
  7. 入门干货之Electron的.NET实现-Electron.NET
  8. HyperLedger Fabric基于zookeeper和kafka集群配置解析
  9. MYSQL:数据库安装 windows
  10. AOP及spring AOP的使用