当前位置:首页 > CMS教程 > phpcms > 正文

【phpcms-v9】详情文字教程【含各种函数注释】

  • ??
  • 思路:??
  • ??
  • 一、目前在企业中使用比较多的cms内容管理有如下几种:??
  • ??
  • 1、dedecms??
  • 2、phpcms??
  • ??
  • ??
  • 二、我们选择学习v9版本的phpcms,主要有以下几点原因:??
  • ??
  • 1、基于MVC模式的内容管理系统??
  • ??
  • 2、碎片技术??
  • ??
  • ??
  • ??
  • 三、下面,我们就来进行phpcms?v9的安装:??
  • ??
  • ci框架的安装,我们只需要按照如下步骤进行操作就可以了??
  • 1、官网:http://www.phpcms.cn?去下载phpcms?v9最新的版本??
  • ??
  • 2、下载完毕后,解压,并将其复制粘贴到程序的主目录(d:/wamp/xmall/),然后再将其重命名为"mycms",那么"mycms"?就作为cms的项目名称存在了??
  • ??
  • 3、为我们的cms项目搭建一个虚拟主机:??
  • ??
  • ???首先,找到httpd.conf配置文件,开启虚拟主机的配置??
  • ??
  • ???然后,找到httpd-vhosts.conf配置文件,进行虚拟主机的配置??
  • ??
  • ???最后,找到hosts配置文件,为我们的ci项目添加dns映射??
  • ??
  • 4、在浏览器中输入?http://www.mycms.com/install/?回车,就可进行phpcms?v9内容管理系统的安装??
  • ??
  • ??
  • 四、phpcms?v9框架的目录结构分析:??
  • ??
  • 了解v9框架的目录结构,有助于帮助我们快速建立起对v9框架的一个整体认识??
  • ??
  • 打开"mycms"项目,有如下文件和目录??
  • ??
  • 使用协议说明文档、英文版的用户手册,这两项不是项目所必须的,可暂时将其删除??
  • ??
  • |-----api??接口文件目录??
  • |-----caches?缓存文件目录??
  • ????|-----configs?系统配置文件目录??
  • ????????|-----database.php??数据库配置文件??
  • ????????|-----route.php?????路由配置文件??
  • ????????|-----system.php????系统配置文件??
  • ????????|-----cache.php?????缓存配置文件??
  • ????|-----configs_*?????????系统缓存文件目录??
  • ????????|-----configs_commons/caches_data???主要用来存放后台设置的配置信息??
  • ????????????|-----category_content.cache.php栏目与站点映射所对应的配置文件??
  • ????????????|-----category_content_1.cache.php站点1下所有栏目的详细配置信息??
  • ????????????|-----category_item_1.cache.php?文章模型下各栏目所对应的数据量??
  • ????????????|-----category_item_2.cache.php?下载模型下各栏目所对应的数据量??
  • ????????????|-----category_item_3.cache.php?图片模型下各栏目所对应的数据量??
  • ????????????|-----keylink.cache.php?????关联链接配置缓存文件??
  • ????????????|-----model.cache.php???????三大模型配置缓存文件??
  • ????????????|-----mood_program.cache.php????表情配置缓存文件??
  • ????????????|-----position.cache.php????推荐位配置缓存文件??
  • ????????????|-----poster_template_1.cache.php广告位模板配置缓存文件??
  • ????????????|-----sitelist.cache.php????站点列表配置文件,主要缓存所有站点的基本配置信息??
  • ????????????|-----type_content.cache.php????多个站点下的类别配置信息??
  • ????????????|-----type_content_1.cache.php??当前站点下类别配置信息缓存文件??
  • ????????????|-----urlrules.cache.php????url规则配置信息缓存文件??
  • ????????????|-----urlrules_detail.cache.php?url规则详细配置信息缓存文件??
  • ????????????|-----special.cache.php?????专题配置信息缓存文件??
  • ????????????|-----role.cache.php????????角色配置缓存文件??
  • ????????????|-----link.cache.php????????友情链接缓存文件??
  • ????????|-----configs_model/caches_data??
  • ????????????|-----content_form.class.php????生成表单的类库缓存文件??
  • ????????????|-----content_input.class.php???入库时,对表单数据进行验证的类库缓存文件??
  • ????????????|-----content_output.class.php??对从数据表中查询出来的数据进行处理的函数??
  • ????????????|-----content_update.class.php??对要更新的数据进行有效性验证的函数??
  • ????????????|-----model_field_1.cache.php???文章模型所有模型字段的缓存信息??
  • ????????????|-----model_field_2.cache.php???下载模型所有模型字段的缓存信息??
  • ????????????|-----model_field_3.cache.php???图片模型所有模型字段的缓存信息??
  • ??
  • ??????????????
  • |-----phpcms????????????????????????phpcms框架主目录??
  • ???????|-----languages??????????????????框架语言包目录??
  • ???????|-----libs???????????????????框架主类库、主函数库目录??
  • ????????|-----classes??
  • ????????????|-----form.class.php????表单生成类库文件??
  • ????????????|-----application.class.php?应用程序类库文件??
  • ????????????|-----image.class.php???????图片处理类库文件??
  • ????????????|-----attachment.class.php??附件处理类库文件??
  • ????????????|-----param.class.php???????URL参数处理类库文件??
  • ????????|-----functions??
  • ????????????|-----global.func.php???????公共函数库文件??
  • ????????????|-----extension.class.php???扩展函数库文件??
  • ???????|-----model??????????????????框架数据库模型目录??
  • ????????|-----content_model.class.php???????内容模型文件??
  • ????????|-----admin_model.class.php?????管理员模型文件??
  • ????????|-----attachment_model.class.php????附件模型文件??
  • ???????|-----modules????????????????????框架模块目录??
  • ????????|-----admin?????????????admin模块???
  • ????????????|-----index.php?????????index.php控制器文件??
  • ????????|-----content???????????????content模块??
  • ????????????|-----classes???????????content模块通用类库??
  • ????????????|-----fields????????????content模块模型字段??
  • ????????????|-----functions?????????content模块通用函数库??
  • ????????????|-----templates?????????content模块后台模板文件??
  • ????????????|-----index.php?????????index.php控制器文件??
  • ???????|-----templates??????????????????框架系统前台模板目录??
  • ????????|-----default???????????????默认的模板风格??
  • ????????????|-----content???????????content模块模板目录??
  • ????????????????|-----category.html?频道页模板文件??
  • ????????????????|-----list.html?????列表页模板文件??
  • ????????????????|-----show.html?????内容页模板文件??
  • ????????????|-----config.php????????模板配置文件??
  • |-----phpsso_server?????????????????phpsso主目录??
  • |-----statics???????????????????????网站素材文件目录??
  • ????|-----css???????????????????????????????????css文件??
  • ????????|-----images????????????????????images文件??
  • ????????|-----js????????????????????js文件??
  • |-----uploadfile????????????????????上传附件??
  • |-----admin.php?????????????????????后台入口文件??
  • |-----index.php?????????????????????前台入口文件??
  • ??
  • ??
  • ??
  • ??
  • 五、phpcms?v9中的url路由规则:??
  • ??
  • ??
  • 浏览器中输入?http://www.mycms.com/index.php?m=content&c=index&a=list&catid=1??回车时,默认情况下会找到??
  • phpcms??????????????????框架主目录??
  • |-----modules???????????????模块目录??
  • ????|-----content???????????content模块??
  • ????????|-----index.php?????index.php控制器中list方法来显示列表页面??
  • ??????????????
  • ??
  • 到底是不是呢?我们打开index.php控制器文件,并在index方法中添加一些代码,运行输出,证明确实如我们所料??
  • ??
  • 我们可以将浏览器中的url归纳如下:??
  • http://域名/入口文件?m=模块名&c=控制器&a=方法名&catid=参数值??
  • ??
  • ??
  • 当我们在浏览器中输入http://www.myshop.com/index.php?后面没有跟任何参数,?回车时,默认情下会将首页显示出来??
  • ??
  • 这是因为phpcms?v9为我们指定了一个默认执行的模块、控制器和方法??
  • ??
  • 默认控制器的设置在?"caches/configs/routes.php"?配置文件中进行设置的,我们可以重新设置默认的控制器??
  • ??
  • 六、栏目的添加??
  • ??
  • 1、pc设计者认为,栏目详情页的数据都应该属于一个模型,所以在添加栏目时,必须给栏目指定一个模型,至于要选择什么模型,完全取决于栏目详情页要显示什么类型的内容??
  • ???详情页:文章信息类的内容?????文章模型??
  • ???详情页:图片类信息????????????图片模型??
  • ???详情页:下载东西?????????下载模型??
  • ???详情页:播放视频?????????视频模型??
  • ??
  • 2、如果以上模型还不能满足项目的需要,那么我们还可以自定义模型,通常情况下,一个网站是由多种模型的数据来组成的??
  • ??
  • 3、栏目添加选项:??
  • ??
  • 栏目名称:在网站静态化时,创建一个以此目录名命名的目录来存放当前栏目下相关的模板文件??
  • ??
  • 4、pc的设计者认为,每个栏目会对应当前所选模型的三个模板文件:??
  • ??
  • 频道页模板文件??
  • ??
  • 列表页模板文件??
  • ??
  • 内容页模板文件??
  • ??
  • ??
  • 这些模板文件所在位置:phpcms/templates/default/content/?目录下,如果想修改模板文件,只需要到此目录下找到对应的模板文件进行修改就可以了??
  • ??
  • 频道页:category_*.html??
  • 列表页:list_*.html??
  • 内容页:show_*.html??
  • ??
  • 至此,栏目各页面与模型的三个模板文件对应起来了??
  • ??
  • 注意:频道页面的显示是有条件的(当前栏目必须有子栏目才可以)??
  • ??
  • ??
  • 5、栏目添加成功后,栏目信息被存储到了v9_category数据表中,同时还被缓存到了phpcms/caches/caches_common/category_content.cache.php文件中,这个缓存文件非常重要,一定要引起足够的重视,前台的很多数据都是直接从此缓存文件中获取来的??
  • ??
  • ??
  • ??
  • 七、项目的部署:??
  • ??
  • 1、素材文件:??
  • ??
  • statics??
  • ????|-----images??
  • ????????|-----cmsimages?????项目图片文件??
  • ????|-----js??
  • ????????|-----cmsjs?????项目js文件??
  • ????|-----css??
  • ????????|-----cmscss????????项目css文件??
  • ??
  • phpcms??
  • ????|-----templates??
  • ????????|-----new???????新的模板风格??
  • ????????????|-----content???内容模块模板文件??
  • ????????????????|-----category.html?频道页模板文件??
  • ????????????????|-----list.html?????列表页模板文件??
  • ????????????????|-----show.html?????内容页模板文件??
  • ????????????|-----config.php????????添加模板文件的配置??
  • ??????????
  • ????????或者??
  • ??
  • ????????|-----default??
  • ????????????|-----content???内容模块模板文件??
  • ????????????????|-----category_shetu.html???频道页模板文件??
  • ????????????????|-----list_shetu.html???????列表页模板文件??
  • ????????????????|-----show_shetu.html???????内容页模板文件??
  • ????????????|-----config.php????????????配置新添加的模板文件??
  • ??
  • ??
  • 注意:模板文件的命名规范??
  • ??
  • ??
  • 2、进入后台,将栏目与模板文件对应起来??
  • ??
  • 3、常量的定义:phpcms/base.php文件??
  • ??
  • 4、系统类库、函数库、模型文件及配置文件的加载??
  • ??
  • pc_base::load_sys_class();//加载系统类库??
  • pc_base::load_sys_func();//加载系统函数库??
  • pc_base::load_model();//加载模型??
  • pc_base::load_config();//加载配置文件或配置选项信息??
  • pc_base::load_app_func();//加载应用程序函数库??
  • pc_base::load_app_class();//加载应用程序类库??
  • ??
  • 全局范围可用,也可以直接在模板文件中使用,在二次开发时,很有用??
  • ??
  • 5、模板语法:??
  • ??
  • (1)常量表示:??
  • ??
  • {JS_PATH}//相当于??或者?,不带php标识,说明是在输出??
  • ??
  • (2)变量语法:??
  • ??
  • {$title}//会被解析成,不带php标识,说明是输出??
  • ??
  • (3)单行php解析语法??
  • ??
  • {php?$i=10;}//相当于??,带php标识,说明在处理逻辑,而不是输出??
  • ??
  • (4)条件判断:??
  • ??
  • {if?$a?>?$b}??
  • ??????
  • {/if}??
  • ??
  • 解析为:??
  • ??
  • ??
  • if($a>$b){??
  • ??
  • }??
  • ?>??
  • ??
  • (5)循环:??
  • ??
  • {loop?$data?$key?$val}{/loop}??
  • ??
  • 解析为:??
  • ??
  • ??
  • foreach($data?as?$key=>$val){??
  • ??
  • }??
  • ??
  • ?>??
  • ??
  • (6)自增自减:通常跟循环一起使用??
  • ??
  • {php?$i=10;}??
  • {loop?$a?$b}??
  • ????{$i++}??//自增自减,会解析为赋值操作,而不是输出操作,如:??
  • {/loop}??
  • ??
  • (7)包含模板文件:??
  • ??
  • {template?"content","header"}//包含?"templates/default/content/header.html"?模板文件??
  • ??
  • ??
  • ??
  • 6、内容详情页中的变量从何而来???
  • ??
  • 找到phpcms/modules/content/index.php控制器中的show()方法,在方法中随意定义一些变量,??
  • ??
  • 然后,看一下是否能够从模板文件中获取到值,答案是肯定的??
  • ??
  • {title}、{$content}从哪里来???
  • ??
  • 技巧:如果在控制器方法中不能直接搜到模板文件中的变量,那么此变量必定在extract($data);中??
  • ??
  • extract($data);//主要用来将数组中个元素转化为变量,??
  • ??
  • 总结:当模板文件中的变量不能在对应的方法中找到的话,那么此变量必定是从$data数组元素中转化而来的??
  • ??
  • ??
  • 内容页面的变量:??
  • ??
  • (1)包含模板文件??
  • ??
  • {template?"content","header"}??
  • ??
  • (2)生成站点首页url的函数??
  • ??
  • {siteurl($siteid)}??
  • ??
  • (3)面包屑导航??
  • ??
  • {catpos($catid)}??
  • ??
  • (4)来源??
  • ??
  • {$copyfrom}??
  • ??
  • (5)发布时间??
  • ??
  • {$inputtime}??
  • ??
  • (6)文章描述??
  • ??
  • {if?$description}class="summary"?>{$description}{/if}??
  • ??
  • (7)内容??
  • ??
  • {if?$allow_visitor==1}??
  • ????{$content}??
  • ??????
  • ????{if?$voteid}??
  • ????????<>"javascript"?src="{APP_PATH}index.php?m=vote&c=index&a=show&action=js&subjectid={$voteid}&type=2">??
  • ????{/if}??
  • ??????????????????
  • {else}??
  • ????
    "{APP_PATH}index.php?m=content&c=readpoint&allow_visitor={$allow_visitor}">"red">阅读此信息需要您支付?{$readpoint}?{if?$paytype}元{else}点{/if},点击这里支付
    ??
  • {/if}??
  • ??
  • (8)短标题:??
  • ??
  • {if?$titles}??
  • ????
    ??
  • ????<>class="f14">本文导航??
  • ????<>class="list?blue?row-2">??
  • ????{loop?$titles?$r}??
  • ????????
  • {$n}、"{$r[url]}">{$r[title]}
  • ??
  • ????{/loop}??
  • ??????
  • ??????
  • {/if}??
  • ??
  • (9)分页代码:??
  • ??
  • {$pages}??
  • ??
  • (10)相关搜索词:??
  • ??
  • <>"margin-bottom:10px">??
  • ?相关热词搜索:??
  • ?{loop?$keywords?$keyword}??
  • ????"{APP_PATH}index.php?m=content&c=tag&catid={$catid}&tag={urlencode($keyword)}"?class="blue">{$keyword}??????
  • ?{/loop}??
  • ?

    ??
  • ??
  • (11)上一篇、下一篇??
  • ??
  • <>class="f14">??
  • 上一篇:"{$previous_page[url]}">{$previous_page[title]}??
  • 下一篇:"{$next_page[url]}">{$next_page[title]}??
  • ?

    ??
  • ??
  • (12)统计点击量:??
  • ??
  • <>"JavaScript"?src="{APP_PATH}api.php?op=count&id={$id}&modelid={$modelid}">??
  • ??
  • (13)网页标题:??
  • ??
  • {$SEO['title']}{$SEO['site_title']}??
  • ??
  • (14)网页描述:??
  • ??
  • {$SEO['description']}??
  • ??
  • (15)网页关键子:??
  • ??
  • {$SEO['keyword']}??
  • ??
  • ??
  • 7、pc标签的使用:在v9中,我们将使用pc标签作为获取数据的主要方式??
  • ??
  • pc标签分模块来使用,今天,主要来学习内容模块pc标签的使用??
  • ??
  • 内容模块的pc标签可用来完成如下功能:??
  • ??
  • (1)获取内容列表:lists??
  • ??
  • (2)获取点击排行榜:hits??
  • ??
  • (3)获取相关文章:relation??
  • ??
  • (4)获取栏目列表:category??
  • ??
  • 8、自定义pc标签:pc标签的源代码在?phpcms/modules/模块名/classes/模块名_tag.class.php中??
  • ??
  • 我们可根据项目需求,为pc标签增加额外的功能,以满足项目的需要??
  • ??
  • 9、get万能标签:通过sql语句来获取数据??
  • ??
  • 10.碎片标签:碎片功能允许我们将网页分为若干块儿,每一块儿都可以在后台像修改文章内容一样由??
  • ??
  • 编辑人员来可视化的维护,并可实时替换每一块儿的内容??
  • ??
  • {pc:block?pos="daohang"}{/pc}??
  • ??
  • 碎片:碎片其实就是一段HTML代码,只不过这段html代码如果作为碎片的话,就可以由编辑人员在后??
  • ??
  • 台任意更改了??
  • ??
  • 11、扩展函数库:??
  • ??
  • phpcms/libs/functions/global.func.php??
  • ??
  • phpcms/libs/functions/extend.func.php??
  • ??
  • 12、二次开发:??
  • ??
  • 扩展控制器:MY_index.php??
  • ??
  • ?>??
上一篇:自己动手构建一个企业服务模块 下一篇:最后一页