邓_phpcms_phpcms授课思路复习

    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. ?>
上一篇:c++ 调用 wmi 获取数据


下一篇:activiti报错ProcessEngines.getDefaultProcessEngine()为null