zoukankan      html  css  js  c++  java
  • 【转】phpcms基础内容

    <?php  
      
    思路:  
      
    一、目前在企业中使用比较多的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 echo JS_PATH; ?> 或者 <?=JS_PATH?>,不带php标识,说明是在输出  
      
    (2)变量语法:  
      
    {$title}//会被解析成<?php echo $title;?>,不带php标识,说明是输出  
      
    (3)单行php解析语法  
      
    {php $i=10;}//相当于 <?php $i=10;?> ,带php标识,说明在处理逻辑,而不是输出  
      
    (4)条件判断:  
      
    {if $a > $b}  
          
    {/if}  
      
    解析为:  
      
    <?php  
      
    if($a>$b){  
      
    }  
    ?>  
      
    (5)循环:  
      
    {loop $data $key $val}{/loop}  
      
    解析为:  
      
    <?php  
      
    foreach($data as $key=>$val){  
      
    }  
      
    ?>  
      
    (6)自增自减:通常跟循环一起使用  
      
    {php $i=10;}  
    {loop $a $b}  
        {$i++}  //自增自减,会解析为赋值操作,而不是输出操作,如:<?php $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}<div class="summary" >{$description}</div>{/if}  
      
    (7)内容  
      
    {if $allow_visitor==1}  
        {$content}  
        <!--内容关联投票-->  
        {if $voteid}  
            <script language="javascript" src="{APP_PATH}index.php?m=vote&c=index&a=show&action=js&subjectid={$voteid}&type=2"></script>  
        {/if}  
                      
    {else}  
        <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>  
    {/if}  
      
    (8)短标题:  
      
    {if $titles}  
        <fieldset>  
        <legend class="f14">本文导航</legend>  
        <ul class="list blue row-2">  
        {loop $titles $r}  
            <li>{$n}、<a href="{$r[url]}">{$r[title]}</a></li>  
        {/loop}  
        </ul>  
        </fieldset>  
    {/if}  
      
    (9)分页代码:  
      
    {$pages}  
      
    (10)相关搜索词:  
      
    <p style="margin-bottom:10px">  
     <strong>相关热词搜索:</strong>  
     {loop $keywords $keyword}  
        <a       href="{APP_PATH}index.php?m=content&c=tag&catid={$catid}&tag={urlencode($keyword)}" class="blue">{$keyword}</a>      
     {/loop}  
    </p>  
      
    (11)上一篇、下一篇  
      
    <p class="f14">  
    <strong>上一篇:</strong><a href="{$previous_page[url]}">{$previous_page[title]}</a>  
    <strong>下一篇:</strong><a href="{$next_page[url]}">{$next_page[title]}</a>  
    </p>  
      
    (12)统计点击量:  
      
    <script language="JavaScript" src="{APP_PATH}api.php?op=count&id={$id}&modelid={$modelid}"></script>  
      
    (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  
      
    ?>  
    

      

  • 相关阅读:
    微信小程序 单选按钮 最佳
    微信小程序 单选按钮的实现
    微信小程序 单选框实现
    Java Code To Create Pyramid and Pattern
    Java language
    npm Err! Unexpected end of JSON input while parsing near
    Node.js Express FrameWork Tutorial
    Higher-Order Function Examples
    Create First HTTP Web Server in Node.js: Complete Tutorial
    Node.js NPM Tutorial: Create, Publish, Extend & Manage
  • 原文地址:https://www.cnblogs.com/cblx/p/4961488.html
Copyright © 2011-2022 走看看