文档库 最新最全的文档下载
当前位置:文档库 › 传智播客 PHP教程 韩顺平 dedecms 项目开发笔记

传智播客 PHP教程 韩顺平 dedecms 项目开发笔记

传智播客 PHP教程 韩顺平 dedecms 项目开发笔记
传智播客 PHP教程 韩顺平 dedecms 项目开发笔记

要求:

1.同一开发环境. W AMP

2.最终完成a67 手机电影网的70%功能.(相当于静态页面已经提供.)

3.学习过程中,我们会分析源码和dede数据库的设计思想-> phpcms 或者cmstop

4.参加工作有a. 全新开发b. 加入一个团队,一起开发. c 数据的设计.

学习DEDE的二次开发

◆cms的基本概念

cms(content management system) 内容管理系统,主要是管理内容变化不大的数据(新闻,软件,商品,文章, 电影,视频....),

◆主流的cms

dedecms [中小型网站,使用在企业级的网站不少见.]

phpcms [中型网站,对大型网站也很好.]

cmstop [据说对大型网站支持最好]

◆dede的特点

1.简单、实用,开源(源码.)

2.专门用于个人,中小型门户网站., 企业也可以支持

3.架构PHP+mysql

4.前台是静态页面(访问速度开) ->页面静态化技术.

◆dede的安装

1.先卸载apache和mysql, 成功卸载.

2.安装Wamp (该软件包括apche+mysql+php+phpmyadminj),如果安装后,小的半圆式白

色,说明成功!

3.把uploads 文件夹拷贝到www目录

4.把uploads 改成dedecms名字

5.浏览器中输入http://localhost/dedecms/index.php

6.进入安装界面,记住吧gd库打开,否则后面登录管理员界面不能成功!

7.指定admin的密码,然后看到如下界面

8.登录到dedecms的后台管理

先把dedecms/dede改成manage,然后

http://localhost/dedecms/manage

9 .当进入到管理页面后,需要做一个安全修改

强烈建议data/common.inc.php文件属性设置为644(Linux/Unix)或只读(NT);

DEDE的快速入门

需求1: 现在老板要求你做一个文章管理系统,栏目(类别)包括(武侠、

爱情、音乐...) ,每个栏目(类别)有对应的文章,文章已经给你准备

好了,请你在30分钟搞定该网站,怎么样?

1.先看看dede默认的前台首页面是怎

http://localhost/dedecms/index.php

2.说一个dede 原理

3.我们做栏目

1.先进入后台管理->网站栏目管理

说明: 当我们增加一个栏目时,实际上在dede数据库中有一张表dede_arctype表中增加了一个记录.

2. 给每个栏目增加文章

后台->核心->普通文章(+)->添加文章

?当你添加一篇文章后,

①其实就在在dede_archives表中添加了记录,同时在另外一张附加表dede_addonarticle 中记录额外信息.

②生成了静态页面., 并连接

3. 生成栏目的静态页

后台->生成->更新栏目HTML

先在请大家完成如上功能.

这里dede设计使用垂直分割的技巧.

注意: 如果希望在首页面看到最新的文章,请更新首页面的HTML

后台->生成->更新主页面HTML

刚才我们说:dede的首页面包括前台是可以是静态页面,dede 支持前台页面静态化,步骤后台->生成->更新主页面HTML

在dede开发过程中,目前有四类表关系一览图

◆思考题2: 如果现在我们要做的是电子商务网站,卖我

们的商品,这时用文章这样的形式来管理还合适

吗?—> 每个栏目都可以指定一个内容模型

什么是内容模型呢?

步骤1:先看看dede是否已经提供了商品的模型,如果提供了,你直接使用,否则自己创建. 后台->核心->内容模型管理看看是否有!有就使用,步骤上面一样.

思考: 如果默认给的某个模型字段信息不够,怎么办?->自定义模型.

◆需求3: 在添加某个商品的时候,我们希望多一个信息,就是付费方

式,还希望多一个邮资信息,我们又该怎样处理?

- 引出修改内容模型的问题

步骤:

1.点击核心->内容模型管理->商品修改->字段管理->添加新字段.

说明: 当你操作完毕后,就会在对应的附件表中增加了一个对应的字段.

◆需求4: 请各位同学看看,这里我们有一个问题,就是当你点击武侠

,爱情,电器的时候,会找不到对应的页面,这是为什么呢?

这个就是直接点击更新栏目HTML

说明: 我们设计网站前台的时候,可以参考这样一个思路: 网站分三级目录

首页面->栏目页->内容页

◆思考题:1. 栏目(类别)是保存在哪个表

中的. 2. 一篇文章,一个商品它们最

终是存放在数据库中的哪些表中?

◆答: 栏目(类别)是保存在哪个表中的. dede_arctype

◆一篇文章,一个商品它们最终是存放在数据库中的哪些表中?

内容是分别放在两张表,一张是他的主表,该主表是通用dede_archives , 附件表dede_addonXXX.

◆在DEDE中增加内容的基本步骤是怎样?

(1)找模型,如果有的话,你可以使用,但是你也可以自定义一些字段,你也全新的创建一个

模型,比如: 我现在要搞一个电影网站.

增加一个模型的步骤是:

a.点击核心->内容模型管理->增加新模型, 进入页面后,自己看看就知道怎样添加了

说明: 当你增加一个模型后,就会在数据库中增加一个对应的附件表dede_addonXXX

(2)添加一个栏目,根据你的实际情况来定, 刷新一把才看到

(3)增加内容,根据实际情况输入即可

◆说明一下DEDE 的目录结构

dedecms/a 目录用于存放生成的静态页面

dedecms/data 目录用于存放临时文件和缓存文件

dedecms/images 目录用于存放dede自己的图片

dedecms/include 目录核心类库(标签库,操作图像的类,操作数据库的类)

dedecms/install 目录,安装信息

dedecms/manage 目录,存放后台管理程序

dedecms/member 目录,存放会员管理程序

dedecms/plus 目录,存放插件程序,和将来你开发的程序模块

dedecms/templates 目录,存放dede前台的所有模板文件

dedecms/uploads 目录,存放你上传的图片、视频。。

◆如何去掉广告

思路: 因为dede 创建静态页面的机制,通过模板文件,去创建对应的静态页面,因此我们思路是,修改这个对应的模板文件.

dede的标签问题:

1.如何去查阅标签手册

后台->模板->默认模板管理->点一个修改

可以看到参考标签

◆如何去掉列表表的广告

知识点: 如何去找某个栏目的列表页

后台->网站栏目管理->找到对应的栏目->更新->高级选项->

到dede/templates/default /下去找到对应的模板文件,进行修改即可,然后重新更新栏目HTML

?每个栏目属于一个模型,那么他们对应的栏目列表模板是同一个,修改后,就同时收到影响.

上机练习:

?去掉讨厌的广告(首页面的)

?如何添加自己的广告图片在首页

?去掉讨厌的广告(某个栏目对应列表页)

?去掉讨厌的广告(文章页)

文章页: 就是点击某个具体文章/商品/软件,所看到的具体内容..

◆dede标签的讲解

1.dede 的标签是在模板中使用

2.我们可以建立自己的模板文件,来学习各个标签的使用

◆具体的标签使用

1.单标签

用法

{dede:标签名属性=“值”.../}

举例说明:

{dede:include filename=”head.htm”/}

2.双标签

用法

{dede:标签名属性=”值”....}内容{/dede:标签名}

{dede:标签名属性=”值”....}内容{/dede}

举例说明:

channel标签的用法.

---chanel标签的用法---

{dede:channel type='top' row='8'}

[field:typename/]

{/dede:channel}

知识点: 如何去查看channel标签的源码. /dedecms/include/taglib/channel.lib.php

3.字段标签的用法

举例

{dede:channel type='top' row='8'}

[field:id/]=[field:typename/]

{/dede:channel}

需求: 如果,我们希望把取出的某个字段数据,进行处理,在输入,怎么办?

具体: 对取出typename值,进行md5加密

具体使用如下:

{dede:channel type='top' row='8'}

[field:id/]=[field:typename/]==

[field:typename function='md5(@me)'/]

{/dede:channel}

4.怎样把取出的值进行PHP运行

[field:字段名runphp=”yes”]

这里可以写一些简单的php码(这里的php码一般是比较简单,如果复杂则可以写一个自定义函数来处理.)

[/field:字段名]

5.如何自定义函数

首先在/include/extend.fuc.php 中添加自己的函数

/*

我们自定义的函数

*/

function abc($val){

return $val."hello,world";

}

看看怎么使用

-----------------------

[field:typename function="abc(@me)"/]

注意: dede的标签是不可以嵌套使用,否则出问题.

6.dede标签如何调用全局的变量值

用法是

{dede:global.全局变量名/}

思想:很多的项目,为了开发的方便,把一些常用的变量,做成全局,然后使用使用比较方便. , dede的有一个非常重要的文件. include/common.inc.php文件,中有很多全局值.

举例:

---取出全局变量值

{dede:global.cfg_soft_lang/}

?因为dede的标签是不可以嵌套,所以,如果你要在dede标签中,取出全局变量,则应当这样取

[field:global.全局变量名/] 等价于[field:global name=?全局变量名?/]

举例

[field:global.cfg_soft_lang/]

实战阶段-a67手机电影网的开发.

前提: 网站的前台静态页面,已经开发好了.

1 把dede首页面换成a67网站首页面.

步骤:

a.首先把templates/defualt 备份一份

b.把templates/defualt 清空

c.把a67 的首页.html 和images css js 整体拷贝到templates/default下,

d.首页.html 换成index.htm

e.打开index.htm 进行网页编码,css,js引入,images图片路径修

/>

rel="stylesheet"/>

rel="stylesheet"/>

把“images/ 替换成"{dede:global.cfg_templets_skin/}/images/

g. 更新首页面,浏览即可看到最新的a67 首页.

2. 将dede首页面栏目换成a67电影网的首页面栏目

a.创建电影这个内容模型

b.创建我们的栏目(我的电影、我的电视剧)

c.使用dede 标签,在index.htm 模板中,把我们需要的栏目内容取出{dede:channel}..{/dede:channel}

具体的代码是

3.a67网的栏目列表页面

图示:

点击对应的栏目,可以看到对应的栏目列表页面!!

步骤:

a.请先把不必要的栏目先删除.

b.看看你的电影的模型对应的列表模板文件叫什么名字,然后在templates/defualt 目录下

创建一个空的list_movie.htm 名字.

c.更新栏目HTML

d.更改首页面的栏目的超链接,让它指向直接的列表静态页

这里请大家在首页面模板中href 这样写

{dede:channel type="top" row="8"}

  • [field:typename /]

  • {/dede:channel}

    e.把a67的栏目列表模板文件拷贝到templates/default 名字,是list_movie.htm

    然后做网站编码,资源引入(css/js), 图片的路径的替换,这个和首页面是一样.

    f.把栏目的导航,的首页面改成我们的本地.

    练习.

    ◆把首页面的今日更新的数据,从我们自己的dede取出,并显示

    步骤

    1.首先自己在后台添加一些数据(电影、电视剧)

    2.在首页面的模板文件中,使用标签{dede:arclist} 来取出文档

    3.具体代码是在index.htm中写的.

    上机作出.

    ◆a67网的首页面的今天更新滚动内容的自定义

    特殊的需求,就是,我们希望在取出栏目记录或者是内容记录(电影,电视剧), 是更加灵活.--->{dede:sql}

    举例: 使用{dede:sql语句来完成上述功能}

    基本用法:

    {dede:sql sql=''}

    [field:title/]

    {/dede}

    具体的代码:

    a67网的首页的添加我的电视剧,并完成各个栏目对应的列表页

    请大家完成,当我们点击我的电视剧时,就显示电视剧内容,点击电影就显示电影的内容.

    步骤如下:

    1.找到对应的栏目列表模板文件list_movie.html .做修改

    学生的问题:

    如何安装自己希望的顺序来显示我们的栏目.

    思路:

    {dede:channel} 如果可以接受我们传递的某个数据,然后,我们再在channel.lib.classs 文件中进行处理好?

    {dede:channel orderby=”id”}

    处理方法是,可以再channel.lib.class 中进行二次处理

    //使用调式

    继续这个问题: 比如我点击我的电影,只取出国语电影,怎么办?)

    思考: 因为电影列表是通过{dede:arclist} 取出,因此,我们必须考虑{dede:arclist}进行二次开发?

    步骤:

    1. 找到栏目列表模板文件list_movie.htm

    2. 我们在{dede:arclist } 标签中自定义一个属性hspwhere

    前台调用方法是: list_movie.htm

    后台的标签库的添加码是:

    a67网的主页面和栏目列表的今日更新,点击后进入内容页面

    思路:

    找到内容页的模板文件.

    后台->核心->栏目列表->点击某个栏目->高级选项

    发现电影和电视剧用的文章模板是article_movie.htm

    步骤:

    1.把美工提供的电影内容.htm 拷贝到article_movie.htm

    2.对模板做网页编码,资源引入,图片的路径进行修改

    3.重新生成内容页

    4.修改了首页面模板文件index.htm

    5.对article_movie.htm进行处理,取出对应的数据.

    这里有一个新的知识点,如何在内容页中取出对应记录(电影、电视剧)的字段信息.

    方法是{dede:field.字段名/} 说明这个字段,可以是主表的字段,也可以是附加表字段

    具体的代码如下article_movies.htm

    上机练习到这里!

    面包屑导航标签:

    使用的方法:

    {dede:field.position/}{dede:field.title/}

    a67网的内容页面增加统计浏览量的功能

    首先,我们看看dede自己怎么做的!!!

  • 浏览量:
  • 这里我们需要学习一个新的知识点:

    如何写自己的程序(插件),去操作dede 的后台数据库的表->

    现在我们自己写一个函数,使用Dede 的DedeSql 类的一个全局变量$dsql

    这里我们学习一招技术,如果在一个静态页面中,有部分数据是动态,可以自己写一个PHP 文件,该文件,一般是放在/puls/目录下,比如mysql.php

    然后在你的某个模板文件中这样取调用:

    练习题:

    练习2

    练习3

    需求,当小手移动到星星的时候,星星根据实际情况变化

    思路

    1.通过jquery技术来实现,看上图

    步骤:

    1.article_movie.htm 引入jquery 文件.

    2.编写js 代码,来响应鼠标移动到星星上这个事件. 代码:

    ◆需求:取出热门电影

    思路: 先找到代码,然后修改.list_movie.htm

    代码:

    ◆需求: 如何取出下载地址(动态改变,当后台变化,下载链接也变化)

    思路:

    想: 因为下载地址是有多个,而且是变化,因此没有办法给每个下载地址存放一个字段,我们可以这样想, 我们把所以的下载地址(信息),放入到一个字段中varchar(1024), 然后使用处理函数来灵活的处理

    下载地址(信息)存放到数据库的附加表增加一个字段download, 存放下载地址(信息)下面的格式是我自定义的,在开发中根据项目经理定

    3gp|魔侠传之唐吉可德01|176x144|https://www.wendangku.net/doc/bd8166409.html,/01.3gp

    3gp|魔侠传之唐吉可德02|176x144|https://www.wendangku.net/doc/bd8166409.html,/02.3gp

    3gp|魔侠传之唐吉可德03|176x144|https://www.wendangku.net/doc/bd8166409.html,/03.3gp

    mp4|魔侠传之唐吉可德01|176x400|https://www.wendangku.net/doc/bd8166409.html,/01.mp4

    mp4|魔侠传之唐吉可德02|176x400|https://www.wendangku.net/doc/bd8166409.html,/02.mp4

    步骤:

    1.首先在附件表中增加一个download 字段

    2.把下载的整个网页格式,放在一个函数去处理

    函数plus/extend.func.php

    韩顺平html笔记

    HTML 一、HTML有关知识点 1.html介绍 html是一种标记语言,主要的用途是开发网页,使用html可以展现文字、图片、视频、声音,html是我们web开发(网站开发)。 2.html可以做什么 ?html可以编写静态网页 ?该静态网页可以包括文字、图像、动画、声音、表格、链接。从而构成一个个漂亮的网页 3.Html发展历史 4.Html的基本结构 5.是标记(也叫元素),标记的一般格式: <元素名[属性=“属性值”]>元素内容 如果没有内容可以用:<元素名[属性=“属性值”]/> 6.Html实体标记 7.Html常用标记

    ?html超链接 ●_blank 新的窗口 ●_self 本窗口 ●_parent 父窗口 ●_top整个浏览器窗口 ?html图像元素 ?html表格

    --用于说明行 --用于说一小格
    ?无序列表
    ?有序列表
    ?框架 ?表单元素 文本框: 密码框: 单选框: 复选框:checked是指默认选中的 隐藏域: 图片按钮: ?文本域: ?下拉菜单: 案例:1 需求:打开网页后,显示hello !

    New Document 问题: ?js的位置可以随意放 ?js必须使用 ?在一个html文件中(JSP/PHP/https://www.wendangku.net/doc/bd8166409.html,)可以出现多对(script)片段,浏览器会按照先后顺序一次执行 案例2:Hello world程序改进 ?如何定义变量: ?如何运算: New Document ?Js的变量类型是怎样决定的 1)Js是弱数据类型语言,即:在定义变量侍候,统一使用var表示,甚至可以去点var 这个关键字 2)Js中的变量的数据是由js引擎决定的 Var name=”shunping”; //name是字符串 Var kk=2 //kk是数字 Name=234; //这事name自动变成数 ?Js的命名规(函数/变量): 1)使用大小写字母,数字,$可以命名 2)不能以数字打头 3)不能使用js保留字和关键字(即java里的关键字) 4)区分大小写

    韩顺平html+css+js之JS笔记

    韩顺平html+css+js 之JS笔记 Javascript的基本介绍 ?JS是用于WEB开发的脚本语言: ?脚本语言是什么: ?脚本语言不能独立使用,它和HTML/JSP/PHP/https://www.wendangku.net/doc/bd8166409.html,配合使用 ?脚本语言也有自己的变量,函数,控制语句(顺序,分支,循环) ?脚本语言实际上是解释性语言(即在执行时直接对源码进行执行) ?Java程序.java→.class→jvm , js→浏览器(js引擎来解释执行) ?Js在客户端(浏览器)执行 ?因为js是由浏览器来执行的,因此这里有个问题,不同类型的浏览器可能对js的支持不一样。 New Document 案例:1 需求:打开网页后,显示hello !

    New Document 问题: ?js的位置可以随意放 ?js必须使用 ?在一个html文件中(JSP/PHP/https://www.wendangku.net/doc/bd8166409.html,)可以出现多对(script)片段,浏览器会按照先后顺序一次执行 案例2:Hello world程序改进 ?如何定义变量: ?如何运算: New Document ?Js的变量类型是怎样决定的 1) Js是弱数据类型语言,即:在定义变量侍候,统一使用var表示,甚至可以去点var这 个关键字 2) Js中的变量的数据是由js引擎决定的 Var name=”shunping”; //name是字符串 Var kk=2 //kk是数字 Name=234; //这事name自动变成数 ?Js的命名规范(函数/变量): 1) 使用大小写字母,数字,$可以命名 2) 不能以数字打头 3) 不能使用js保留字和关键字(即java里的关键字) 4) 区分大小写 5) 单行注释:// 6) 多行注释:/*…….*/ 韩顺平JS第三讲

    jquery学习笔记-韩顺平

    1,Jquery是一个javascript框架或者叫做javascript库; 2,用Ajax我们可以给服务器发送一个请求,服务器可以给我回送一个请求; 3,出现javascript框架的根本原因就是为了提高开发者的开发效率; 4,jquery是一个轻量级的js库(压缩后只有21K),这是其他的js库所不及的,它兼容CSS3,还兼容各种浏览器; 5,JQuery是一个快速的,简洁的javascript库,使用户能更方便的处理HTML document,events,实现动画效果,并且方便的为网站提供AJAX交互; 6,JQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。 7,jquery能够使用户的html页保持代码和html内容的分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可; 8,所谓的库就是提供一些现成的方法供你去调用; 9,当前流行的javascript库有: Jquery ,MooTools,Prototype,Dojo,YUI,EXTJS,DWR[主要是运行在服务器上的]; 10,$(document) //---这个表示一个jquery对象; 11,如果使用jquery,则需要引入jquery库 12,jquery对象就是对dom对象的一系列包装,它包装完成后,就可以使用jquery对象提供的方法来进行操作; 13,在使用jquery开发中,有两种对象,1,jquery对象,2,dom对象,如果是jquery对象则只能使用jquery库提供的方法,如果是dom对象,则只能使用js本身提供的方法; 14,分析jquery库文件的运行原理: