二次开发入口文件:

  1、dirname(__FILE___) 函数返回的是脚本所在在的路径

  2、__FILE__ 当前运行文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

  3、DIRECTORY_SEPARATOR:是一个显示系统分隔符的命令,DIRECTORY_SEPARATOR是php的内部常量,不需要任何定义与包含即可直接使用

第一课:

1、phpsso 相当于 Ucenter

2、首页index.html可以删除,后台可以再生成,测试访问index.php

3、设置-》站点管理、添加站点 :phpcms 有伪战群的概念(eg. 北京校区、上海校区)

4、设置-》管理员管理--口令卡:预防黑客在用户登录后台时截获登录信息,登录时输入变化的口令卡。

5、模块-》模块管理 :对应代码 phpcms/modules/

6、内容-》管理栏目: 修改后要更新栏目缓存!

7、频道--分类页,列表页--内容列表,内容--文章内容,模型--(文章、图片、视频)不同的模板及数据表

8、采集管理:序列网址---取到URL,去掉规律数字 _(*),测试,网址中必须包含--对采集的网址进行过滤

9、<base href="http://www.baidu.com">  base为基础网址,后面的URL都以前一个base为主体

10、获取网址:  找到唯一的分割代码点的截取位置

第二课:

div+css

1、<base target="_blank">  头部<title> 位置:所有链接都是以弹出的方式打开。

2、css样式中 width:200px !important; 火狐识别,ie忽略

第三课:

HTML5+css3

第四课:

响应式布局

第五课:

bootstrap

第六课:

phpcms 模板引擎

1、category.html:频道页模板,index.html:首页模板,show.html:内容页模板

2、如果需要模板没有建,就会在缺省模板里继承

3、如何切换模板:a.配置缺省目录(cms\phpcms\templates\default)里的配置文件config.php,将其复制到新模板目录配置其模板名及目录,

  b.编辑模板:后台-》界面-》模板风格

  c.访问新模板:设置-》站点管理-》修改-》模板风格配置

4、是否允许在新编辑模板设置:cms\caches\configs\system.php, 将其配置文件是否允许在新编辑模板改为1

5、模板引擎语法:

  a. 模板页面(**.html)里支持php语法插入,但一般不要用

  b.在模板里输出常量使用{},后台php的变量、常量可以在模板{}中直接输出,变量使用$,常量不使用$符号

  c.在模板里<?php ?>  等价于  {php }

  d.{}可以调用所有的php函数,但少用,也可直接用phpcms自带的系统函数(公共函数库:cms\phpcms\libs\functions\gobal.func.php)

  e.  if语句:   {if $num==10} aaaaaaaaa {elseif $num== 11} ccccc {else} bbbbbbbb {/if}

  f. 遍历: {loop $data $r} {$r}  {/loop}     下标值  {loop $data $k $r} {$k}===>{$r} {/loop}   , 默认有 $n 变量计数,不用声明

  j.  pc标签:对常用模块进行数据读取。  {pc:} {/pc}   具体参数可在后台界面里可视化修改

  h. 碎片工具箱:不成体系的部分。{pc:block pos="index"}{/pc} ,pos:碎片位置, 碎片在代码中加完得在可视化里点添加碎片才能进行管理

  i. {template "content","footer"}  :包含(包含内容模块的页脚)

第七课:

  1、bootstrap不兼容IE7以下的版本(IE8也不好使);且库量大,比正常页面加载慢一些。

  2、<!--[if IE 8 ]><html class="ie ie8" lang="en"> <!endif>-->

    <!--[if (gte IE 9) | ! (IE)]><!-->

    <html class="not-ie" lang="en">

    <!--<![endif]-->

    此语句可以让ie8兼容

  3、在静态目录下(cms\statics\),直接新建个文件夹放新的样式文件(css/js/images),如何在代码中动态引入:可用网站根目录{WEB_PATH}statics/test/css/**.css

  4、动态地址:{APP_PATH} 相当于 http://localhost/cms/

第八课:

  1、对象就是一个东西

  2、类生成对象,是对象的描述,类(电脑配置单)->对象(电脑)

  3、类是一个工具箱,对象是拿到工具箱,用里面的工具

  4、PHPCMS用到的有关类和对象的php语法:

    a.拿到类;b.创建这个类的对象;c.通过对象访问类中的成员

    $对象名->属性     ;    $对象名->方法()

  5、封装:

    类中的方法供自己类使用,可以封装起来(private function 方法(){}),除了方法可以封装,属性也可以用private封装(避免使用时对属性进行更改);

  6、继承:

    a.可以对继承的类进行添加新的方法,父类封装(private)的方法不能继承使用;

    b.在父类中用protected进行保护,继承的子类可以使用,别处不行,默认是public,都可以使用;

    c.继承的子类和父类写同样的方法,是对父类的重写,调用新的方法;

    d.如果父类不让子类改写方法,父类可以用 final 来标记方法,final标记的类不能被子类继承;

;

  7、构造方法:

   a.构造方法是创建对象第一个调用的方法(__construct());

   b.通常用它执行一些有用的初始化任务。该方法无返回值。如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。

   c.与此类似就是析构方法,析构函数不能带有任何参数,其名称必须是 __destruct() 。

  8、静态方法:

    a.静态方法用static 修饰方法,对象调用此方法时可以直接 类名::方法()  使用,不用声明类

  9、parent修饰的方法:

    在子类中继承父类,对父类的一个方法进行了重写,要想再调用父类的那个方法可以用parent::方法()

  10、项目-》模块组成-》mvc组成-》控制器-》操作组成;

    每个操作-》步骤组成--调用模型和视图;

    ?m=模块名&c=控制类&a=操作(事件);

    在cms\phpcms\modules\中创建一个文件夹为模块m,在模块文件夹中创建一个文件为控制器c,在控制器中写类以及方法,类名与控制器名一致,方法就是操作a,前天控制器名index.php,后台与模块名一样

第九课:

  1、后台的控制器类必须登录设置,必须需要继承后台的类,pc_base::load_app_class("admin","admin",0)

  2、defined('IN_PHPCMS') or exit('No permission resources.'); 表示必须得通过主入口(index.php)进入类,防止通过文件路径直接访问控制器文件

  3、所有pc_base:: 都是 phpcms/base.php 中声明的方法

  4、模块中的类文件夹(classes),如何在控制器中使用:

    a.  pc_base::load_app_class("类名")  :调用,声明: $demo = pc_base::load_app_class("类名");

    b. pc_base::load_app_class("类名","模块名",true) :第二个参数省略默认访问当前模块下的类文件,第三个参数表示是声明(true)还是继承

    c. pc_base::load_app_class() :加载应用的类(各自模块自己用的类,当然别人也可以用)

  5、pc_base::load_sys_class() : 加载系统的类(是系统中全局函数 phpcms\libs\classes)

    a. 参数1:类名; 参数二:扩展地址; 参数3: 是否初始化

  6、pc_base::load_model() :加载数据模型

  7、pc_base::load_sys_func("函数库名","模块名") : 加载系统函数

  8、pc_base::load_app_func("函数库名","模块名") :加载应用函数

  9、一个功能完成的事,写类;一个函数完成的事,写函数

  10、安装模块:

    a.在数据库module数据包中添加新模块数据

    b.后台扩展-》菜单管理-》添加菜单-》更新缓存

  11、前台加载模板:

    a. phpcms\templates\当前使用的模板风格下

    b. 在模板中建一个和模块名相同的文件夹,里面放html文件

    c. 控制器加载模板:include template('模板文件所在文件夹名','模板文件');

    d. 没有控制器也可以访问到,可以任意使用pc标签

  12、后台模板加载:

    a. 没有pc标签

    b. include $this->admin_tpl("模板名");

    c. 后台模块一定要写在自己模块的templates目录下,文件名不是.html,而是.tpl.php格式

    d.include $this->admin_tpl("模板名","模块名"); 有第二个参数是找其他模块中的模板

    e. 语言包:phpcms\languages,需要在页面显示的中文或英文,建成两个文件,变量,在页面<?php echo L("变量")?>;但一般都直接在页面把输出改成文字。

第十课:

  1、控制器里的数据,自动扔给模板,模板可以直接使用

  2、后台添加模块,数据库添加数据后,显示[hash]数据验证失败,因为后台只可以在界面处访问,不能通过url直接访问

  3、链接数据库:

    a.phpcms\libs\classes\model.class.php  通过这个类来操作数据库;

    b.phpcms\model\   每有一张表就有一个model,新模块再新建一个model;caches\configs\database.php  为数据库配置文件

    c.     function __construct() {
              $this->db = pc_base::load_model('mytest_model');
         }

      来加载新建的数据表的model,用$this->db 来对数据表进行操作

    d. php 时间长转时分秒:<?php echo data("Y-m-d",$info['ptime']) ?>

    e. 添加数据按钮:扩展-》菜单管理-》添加菜单

    f. form类:phpcms\libs\classes\form.class.php

    j. $show_validator = $show_scroll = $show_header = true;  //开启表单验证

    h.extract() : 将数组转化为变量

第十一课:

  1、模块添加功能:

    a.在本模块下,新建my_*.php 控制器,可以防止系统升级时覆盖添加的功能。

    b.继承:class My_* extend *{}

  2、连接新的表:

    a.在构造方法里(__construct(){})中写的东西,其他所有方法都能用。

    b.$this->db2=pc_base::load_model('mytest_model');  //直接加载新的model

    c. 加载的新的model会影响以前连接的表($this-db),因为构造方法会覆盖父级里的构造方法,可以在子类的构造方法中调用被覆盖的父类构造方法(在子类构造方法中,parent::__construce(); 可以再次初始化父类的构造方法)

  3、子类中如果有构造方法,意味着父类的构造方法被覆盖,再调用下父类的构造方法,可以重新加载父类的构造方法,避免覆盖。

  4、提取phpcms框架:

    a.在phpsse_server文件中:复制全部文件到新文件中

    b.配置:caches/configs/system.php(站点的位置、站点的域名、附件的网址),如果不改会造成验证码出错,或介面排版混乱。

    c.配置database.php(服务器主机名,用户名,密码,库名,表前缀等) ;新建数据库,复制表(sso相关),sso_admin、sso_session

    d.删除model类,数据库控制类,保留admin_model.class.php、session_model.class.php;删除phpcms/models/下所有应用,保留admin模块。

    e.登录后台,右侧有错误:找到admin/index.php文件,在控制器的方法function right(){} 删除。

    f.添加新模块:在models中添加新模块,添加表到sso下,model添加

    j.以上为后台模板,没有模板引擎,可以添加smtary引擎。

    h.移植站点:在phpcms/caches/configs/system.php,将所有旧域名换成新域名,后台,站点设置改为新域名,(更新缓存以及栏目缓存);进入后台内容,附件管理-》附件地址替换成新地址;在内容中,批量更新url,把所有文章的地址都更新一下。

第十二课:PHPcms和discuz! 整合

  1、PHPcms 做前端,论坛有discus!--腾讯系(或phpwind--阿里系)

  2、phpsso为一个单独的系统,多个phpcms网站用一个phpsso:安装第二个phpcms的时候选择仅安装phpcms,然后将已经安装的phpcms地址输入安装(设置-》phpsso配置秘钥必须跟phpsso里的秘钥一致)

  3、跟discuz!同步用户信息:(UCenter和phpsso类似一样)安装含UCenter的discuz!。

  4、配置UCenter:phpsso中的系统设置-》UCenter 的配置进行相关配置(表前缀‘discuz‘.pre_ucenter,必须指明库);应用id: ,秘钥:先去discuz 中设置

  5、应用管理-》添加新应用(自定义安装),先提交可以生成通信秘钥,将其复制到phpsso中设置,UCenter中新添加应用id为phpsso中的应用id,提交。(配置文件在phpsso_server\caches\comfigs\uc_ocnfig.php)

  6、设置切换自动登录:修改discuz代码(详见手册)

  7、模块统一:

    a.phpcms后台->模块-》数据源-》外部数据源-》添加外部数据源

    b.调用论坛数据:使用get标签调用数据源,链接地址复制帖子地址,将帖子id改为动态id.

    c. phpcms:caches/caches_teplate/default/content/index.php--首页模板,可以看出怎么链接的数据

  8、URL重写:

    a. 动态地址3个参数以后不利于百度搜索,需要将其改为伪静态地址

    b. 在后头内容-》管理栏目-栏目后面的修改按钮-》生成html设置-》更新栏目缓存;也可以批量编辑->批量更新URL-》批量更新栏目页-》更新缓存-》生成首页。

    c. 修改apache配置文件(httpd.conf),让其支持模块,LoadModule reWrite_module modules/md_rewrite.so 打开注释,将其开启;将phpcms的.htaccess文件(将伪静态转化成动态地址)拷贝到项目根目录

  9、主程序与web程序分离(将主程序放于www之外的文件夹,防止被攻击)

    a. 将phpcms主程序移除www之外,

    b. 修改入口文件index.php : include '' 的base目录;修改api.php : include '' 的 base 目录

  10、sphinx 搜索。

phpcms开发使用的更多相关文章

  1. 用phpcms开发模块时中文乱码问题

    学着用phpcms开发一个文件管理模块,出现中文乱码,折腾了半天,总结如下 1.自己在mysql客户端建表,默认表格的编码为latin1_swedish_ci,虽然可以建好后用alter命令修改编码, ...

  2. phpcms二次开发中无法获取SESSION的值

    今天在在phpcms开发留言板用到验证码,提交数据,后台无法$_SESSION['code']无法获取验证码值,也无法打印var_dump($_SESSION)值,我们只需要在文件头部添加如下代码: ...

  3. 23个phpcms v9模板制作及二次开发常用代码案例

    0:调用最新文章,带所在版块 {pc:get sql="SELECT a.title, a.catid, b.catid, b.catname, a.url as turl ,b.url a ...

  4. 关于phpcms中mysql和mysqli的区别

    用phpcms开发一个考试成绩查询的小模块,用电脑上以前下载的phpcms版本为框架开发,一切顺利.想着下载一个最新版本,以后也免了升级的麻烦.于是,下载好,然后把模块目录.model数据库连接文件. ...

  5. phpcms加载系统类与加载应用类之区别详解

    <?php 1. 加载系统类方法load_sys_class($classname, $path = ''", $initialize = 1)系统类文件所在的文件路径:/phpcms ...

  6. phpcms 缓存

    PHPCMS设置和读取缓存文件 PHPCMS开发中经常用到读取文件缓存,比如常见的当前站点类别,是保存在缓存文件中的,读取的时候 用:$this->categorys = getcache(‘c ...

  7. phpcms v9 后台首页 去掉团队信息等版权

    phpcms\languages\zh-cn\admin.lang.php $LANG['main_product_team'] = 'PHPCMS开发团队'; phpcms\modules\admi ...

  8. Phpcms 前台页面实现分页

    phpcms开发就是模仿里面原有的方法进行扩展,前台要实现分页,就去找后台页面的分页实现. 如后台 扩展->后台操作日志,就有分页展示. 1.先去添加自己的分页方法(千万不要在原来的方法上修改, ...

  9. phpcms v9模板制作常用代码集合(转)

    phpcms v9模板制作常用代码集合(个人收藏) 1.截取调用标题长度 {str_cut($r[title],36,'')} 2.格式化时间 调用格式化时间 2011-05-06 11:22:33 ...

随机推荐

  1. 广州某小公司:ThreadLocal面试

    <对线面试官>系列目前已经连载24篇啦!有深度风趣的系列! [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 & ...

  2. Tomcat与spring的类加载器案例

    Tomcat与spring的类加载器案例接下来将介绍<深入理解java虚拟机>一书中的案例,并解答它所提出的问题.(部分类容来自于书中原文) Tomcat中的类加载器在Tomcat目录结构 ...

  3. WEB安全新玩法 [3] 防护交易数据篡改

    在任何涉及交易的系统中,客户与商家之间的交易数据具有核心作用,如购买商品的价格.数量.型号和优惠券等.在客户挑选商品的过程中,这些交易数据逐渐形成:待客户提交订单时,交易数据被商家接收,形成双方认可的 ...

  4. YOLO V4的模型训练

    1.YOLO V4模型训练的基本思路 所有机器学习涉及模型训练,一般都有训练集.验证集.测试集,因此需要准备数据集.有了数据集,再调用训练的算法,获取训练的结果.v3.v4模型训练方法相同. 2.YO ...

  5. Python基础之:Python的数据结构

    目录 简介 列表 列表作为栈使用 列表作为队列使用 列表推导式 del 元组 集合 字典 循环 简介 不管是做科学计算还是编写应用程序,都需要使用到一些基本的数据结构,比如列表,元组,字典等. 本文将 ...

  6. ceph-csi源码分析(4)-rbd driver-controllerserver分析

    更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(4)-rbd driver-controllerserver分析 当 ...

  7. 乘风破浪,.Net Core遇见MAUI(.NET Multi-platform App UI),进击现代化跨设备应用框架

    什么是MAUI https://github.com/dotnet/maui .NET Multi-platform App UI (MAUI) 的前身是Xamarin.Forms(适用于Androi ...

  8. 使用VS2017开发APP中使用VUE.js开发遇到打包出来的android文件 在低版本的android(4.3)中无法正常使用

    使用VS2017开发VUE的APP应用遇到的问题集合 1,  打包出来的apk文件在Android 6.0版本以上手机可以正常打开,在Android 4.3版本手机上无法打开 原因:一开始猜测是不是V ...

  9. web自动化之windows页面切换

    一.为什么切换windows页面 在页面操作过程中,存在点击某个元素之后会重新打开一个windows页面,如果不切换至新页面的话,无法在新页面中进行操作,程序会出现报错 二.如何切换 1.获取当前所有 ...

  10. Docker搭建EFK日志收集系统,并自定义es索引名

    EFK架构图 一.EFK简介 EFK不是一个软件,而是一套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志系统. EFK是三个开源软件的缩写,分 ...