需求3: 在添加某个商品的时候,我们希望多一个信息,就是付费方式,还希望多一个邮资信息,我们又该怎样处理?

引出修改内容模型的问题

每个模型的字段管理的所有信息 都属于附加表。

步骤:

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

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

需求4: 请各位同学看看,这里我们有一个问题,就是当你点击武侠,爱情,电器的时候,会找不到对应的页面,这是为什么呢?这个就是直接点击 更新栏目HTML

说明: 我们设计网站前台的时候,可以参考这样一个思路: 网站分三级目录    首页面->栏目页->内容页

思考题:1. 栏目(类别)是保存在哪个表中的. 2. 一篇文章,一个商品它们最终是存放在数据库中的哪些表中?

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

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

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

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

(1)    找模型,如果有的话,你可以使用,但是你也可以自定义一些字段,你也全新的创建一个模型,比如: 我现在要搞一个电影网站.

增加一个模型的步骤是:

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

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

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

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

u  说明一下DEDE 的目录结构

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

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

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

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

dedecms/install  目录,安装信息

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

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

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

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

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

u  如何去掉广告

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

dede的标签问题:

  1. 如何去查阅标签手册

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

可以看到参考标签

u  如何去掉列表表的广告

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

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

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

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

u  dede标签的讲解

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

u  具体的标签使用

  1. 单标签

用法

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

举例说明:

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

2.       双标签

用法

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

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

举例说明:

channel标签的用法.

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

<!--channel标签类似 select * from dede_arctype  where ishidden<>1 limit 0,8-->

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

[field:typename/]

{/dede:channel}

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

die();//在源码里面  打印变量

2.       双标签

用法

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

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

举例说明:

channel标签的用法.

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

<!--channel标签类似 select * from dede_arctype  where ishidden<>1 limit 0,8-->

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

[field:typename/]

{/dede:channel}

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

die();

3.字段标签的用法

举例

<!--channel标签类似 SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `#@__arctype` WHERE reid=0 And ishidden<>1 order by sortrank asc limit 0, 8 -->

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

<!--field:typename就是说,把查询的字段typename信息放在这个位置  -->

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

{/dede:channel}

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

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

具体使用如下:

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

<!--field:typename就是说,把查询的字段typename信息放在这个位置  -->

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

<!--如何对取出的字段值,使用php函数 @me就是表示取出的值-->

[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";

}

看看怎么使用

<!--如何在dede中自定义函数,把typename值拼接 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/]

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

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

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

步骤:

  1. 首先把 templates/defualt 备份一份
  2. 把templates/defualt 清空
  3. 把a67 的首页.html 和 images css js 整体拷贝到 templates/default下,
  4. 首页.html 换成 index.htm
  5. 打开 index.htm 进行网页编码,css,js引入,images图片路径修

<meta http-equiv="Content-Type" content="text/html; charset={dede:global.cfg_soft_lang/}" />

<link href="{dede:global.cfg_templets_skin/}/css/style.css" type="text/css"  rel="stylesheet"/>

<link href="{dede:global.cfg_templets_skin/}/css/index.css" type="text/css"  rel="stylesheet"/>

<script language="javascript" src="{dede:global.cfg_templets_skin/}/js/global.js"></script>

<SCRIPT src="{dede:global.cfg_templets_skin/}/js/jquery-1.4.2.min.js" type=text/javascript></SCRIPT>

<SCRIPT src="{dede:global.cfg_templets_skin/}/js/lanrentuku.js" type=text/javascript></SCRIPT>

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

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

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

  1. 创建电影这个内容模型
  2. 创建我们的栏目(我的电影、我的电视剧)
  3. 使用dede 标签,在 index.htm 模板中,把我们需要的栏目内容取出

  {dede:channel}..{/dede:channel}   //获取栏目列表标签

具体的代码是

<ul>

<li><a href="http://www.a67.com/" target="_self">首页</a></li>

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

<li><a href="http://www.a67.com/movie/" title="手机电影" target="_self">

[field:typename /]

</a></li>

{/dede:channel}

<li><a href="http://www.a67.com/zhuanti/" target="_blank">专题</a></li>

</ul>

3.a67网的栏目列表页面

图示:

步骤:

  1. 请先把不必要的栏目先删除.
  2. 看看你的电影的模型对应的列表模板文件叫什么名字,然后在 templates/defualt 目录下创建一个空的  list_movie.htm 名字.(根据你创建的栏目后的高级选型里面,有个对应生产的栏目htm)
  3. 更新栏目HTML
  4. 更改首页面的栏目的超链接,让它指向直接的列表静态页

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

<!-- select 列表 from dede_arctype ...-->

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

<!--大家注意typelink并不是dede_arctype表的字段,他是在程序计算得到-->

<li><a href="[field:typelink/]" title="手机电影" target="_self">

[field:typename /]

</a></li>

{/dede:channel}

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

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

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

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

步骤

  1. 首先自己在后台添加一些数据(电影、电视剧)
  2. 在首页面的模板文件中,使用标签{dede:arclist} 来取出文档
  3. 具体代码是在 index.htm中写的.
{dede:arclist limit='0,10' typeid='5' channelid='18' addfields='language,area,type'}
<dl class="w128">
<dt><a href="/movie/55733.html" title="[field:title/]">
<img alt="[field:title/]" src="[field:litpic/]" onerror="this.src='/views/images/nophoto.jpg'" class="loading">
<span class="bg">[field:area/]</span>
<span class="time">[field:type/]</span>
</a></dt>
<dd>
<p class="p1"><a href="/movie/55733.html" title="[field:title/]">[field:title/]</a></p>
<p class="p2"></p>
</dd>
</dl>
{/dede:arclist}

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

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

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

基本用法:

{dede:sql sql=''}
[field:title/]
{/dede}

            <!--分析:title是从主表取出的,litpic是从主表取出的,  arcrank是从主表取出的,area是从附加表取出的,type也是附加表-->
{dede:sql sql="select t1.title,t1.litpic,t1.arcrank,t2.area,t2.type from dede_archives t1,dede_addonmovie t2 where t1.typeid =5 and t2.aid=t1.id and t1.arcrank=0 order by t1.click desc"}
<dl class="w128">
<dt><a href="/movie/55733.html" title="[field:title/]">
<img alt="[field:title/]" src="[field:litpic/]" onerror="this.src='/views/images/nophoto.jpg'" class="loading">
<span class="bg">[field:area/]</span>
<span class="time">[field:type/]</span>
</a></dt>
<dd>
<p class="p1"><a href="/movie/55733.html" title="[field:title/]">[field:title/]</a></p>
<p class="p2"></p>
</dd>
</dl>
{/dede:sql}

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

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

步骤如下:

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

其它的问题

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

思路:

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

{dede:channel orderby=”id”}

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

die(var_dump($ctag));

目的是去取出id

object(DedeTag)#21 (8) { ["IsReplace"]=> bool(false) ["TagName"]=> string(7) "channel" ["InnerText"]=> string(211) " [field:typename/] " ["StartPos"]=> int(2845) ["EndPos"]=> int(3117) ["CAttribute"]=> object(DedeAttribute)#20 (2) { ["Count"]=> int(3) ["Items"]=> array(4) { ["tagname"]=> string(7) "channel" ["type"]=> string(3) "top" ["row"]=> string(1) "8" ["orderby"]=> string(2) "id" } } ["TagValue"]=> string(0) "" ["TagID"]=> int(6) }

die(var_dump($ctag -> CAttribute));

object(DedeAttribute)#20 (2) { ["Count"]=> int(2) ["Items"]=> array(3) { ["type"]=> string(3) "top" ["row"]=> string(1) "8" ["orderby"]=> string(2) "id" } }

相对于

  class DedeAttribute {
var $Count; //int
var $Items; //array
} $ctag->CAttribute 就是 DedeAttribute类的一个对象实例
$ctag->CAttribute ->Items['orderby']

var_dump($ctag -> CAttribute -> Items["orderby"]);

string(2) "id"

在arclist 加一个 自定义属性

①我们在前台页面写入自定义属性  hspwhere=" addf.language='国语'"

②打印下sql语句,echo $query;

SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart, tp.moresite,tp.siteurl,tp.sitepath ,addf.language,addf.area FROM `#@__archives` arc left join `#@__arctype` tp on arc.typeid=tp.id LEFT JOIN `dede_addonmovie` addf ON addf.aid = arc.id WHERE arc.id in(10,8) ORDER BY arc.sortrank desc

我们不难发现,dede_addonmovie` addf ,给这个表起了个别名,

③仔细观察表的时候,我们又发现底层有一个能获取表参数的函数

$ctag->GetAtt('hspwhere')

输出打印一下   addf.language='国语'   输出了字段和值

④让拿到的内容加入到筛选的函数里面去

    $hspwhere=$ctag->GetAtt('hspwhere');
// echo $hspwhere;
if(!empty($hspwhere)){
$orwheres[] = $hspwhere;
}

u  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/}

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

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

<li><em>浏览量:</em><script src="{dede:field name='phpurl'/}/count.php?view=yes&aid={dede:field name='id'/}&mid={dede:field name='mid'/}" type='text/javascript' language="javascript"></script></li>

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

☞ isset和  empty的区别是什么

empty 判断一个变量是否为“空”,isset 判断一个变量是否已经设置。

$name=0;

$name='';

$name=null;

$name="0";

$name;

if(empty($name)){

       echo "ok"; //上面五种写法empty($name)都是 true

}

isset 函数是用于检测这个变量是否设置过,在下面两种情况下会认为

isset 为假

①$id; 没有给任何值

②或者就是根本没有定义.

因此我们建议在 判断某个表单是否提交有数据(可能是0 '' ),使用

isset来判断

if(isset($_GET/$_POST['变量']){

echo $_GET['变量']

}else{ echo '没有传递数据'}

dedecms基础整理,的更多相关文章

  1. 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法

    这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...

  2. MySQL基础整理(一)之SQL基础(未完成)

    大家好,我是浅墨竹染,以下是MySQL基础整理(一)之SQL基础 1.SQL简介 SQL(Structure Query Language)是一种结构化查询语言,是使用关系模型的数据库应用语言. 2. ...

  3. nutch的一些基础整理

    nutch的一些基础整理 原创 2015年03月22日 18:18:01 标签: nutch / 240 编辑 删除 一.关于配置文件: nutch-default.xml:爬虫的默认配置.在${nu ...

  4. [转帖]nginx基础整理

    nginx基础整理 https://www.cnblogs.com/guigujun/p/6588545.html 目录结构如下: Nginx基础知识 Nginx HTTP服务器的特色及优点 Ngin ...

  5. JAVA基础整理-集合篇(一)

    集合作为JAVA的基础知识,本来感觉自己理解的很清楚了,但是在最近的一次面试中还是答得不尽如人意!再次做一下整理,以便加深理解以及随时查阅. 首先,java.util包中三个重要的接口及特点:List ...

  6. 关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)

    JAVA的基础语法等都跟C有很大的相似之处,所以这里就不多啰嗦了.直接从数组开始. 数组: 1.声明 int [] a; 在声明的过程中,并没有分配空间给数组.我们可以在声明的同时,用new来分配相应 ...

  7. C#基础整理

    元旦整理书架发现一本小册子——<C#精髓>中国出版社2001年出版的,粗略翻了下关于C#的知识点挺全的虽然内容谈得很浅也有很多过时的内容(话说这本书是我在旧书店花5块钱淘的)我保留原有章节 ...

  8. HTML5游戏开发技术基础整理

    随着HTML5标准终于敲定.HTML5将有望成为游戏开发领域的的热门平台. HTML5游戏能够执行于包含iPhone系列和iPad系列在内的计算机.智能手机以及平板电脑上,是眼下跨平台应用开发的最佳实 ...

  9. js数组基础整理

    首页: 主要整理了一下数组中常用的一些基础知识,代码都是自己手敲,有不对的地方希望能指出,目前只有4篇,后续会不断的增加这一板块. 由于少于100字不能发所以把一些最基本的创建数组也写上. // 创建 ...

随机推荐

  1. node+express搭建过程以及安装ejs模板引擎解决方案

    一.Node.js简介 1.Node.js是什么? Node.js 可以作为服务器向用户提供服务,与 PHP.Python.Ruby on Rails 相比,它跳过了 Apache.Nginx 等 H ...

  2. 使用 GitHub API 进行数据分析 (Node.js)

    使用 GitHub API 进行数据分析 (Node.js) Node.js 的访问 GitHub 的 API 库,通过 npm 或者 yarn 安装: yarn add github-api 官方示 ...

  3. 20个最受欢迎的Linux命令(转)

    本文根据 commandlinefu 网站的历史排名,筛选出了前 20 个得票最高的 Linux 命令.看看你都能熟练使用了吗? 1.以 root 帐户执行上一条命令 sudo !! 2.利用 Pyt ...

  4. JS常用的设计模式(5)——代理模式

    代理模式的定义是把对一个对象的访问, 交给另一个代理对象来操作. 举一个例子, 我在追一个MM想给她送一束花,但是我因为我性格比较腼腆,所以我托付了MM的一个好朋友来送. 这个例子不是非常好, 至少我 ...

  5. MVC5 下拉框绑定(单选)

    1.Model [Display(Name = "学历")] public ICollection<System.Web.Mvc.SelectListItem> asd ...

  6. c# 文件名排序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  7. git每次提交都输入密码

    打开gitbash执行即可 git config --global credential.helper store 长期储存密码,因为git默认是不储存密码的,不执行这条命令的话每次更新代码,或者提交 ...

  8. 一分钟学会Git操作流程

    今天整理下公司操作git 流程,尽量用最最简洁的方式整理出来,方便以后有新来的同事学习使用. 我整理的这个Git操作,基本上只需要一分钟,就可以轻松上手啦!!! 一. 拉取提交操作 1.拉取远程代码 ...

  9. XHR的应用场景

    一.简史 IE5.5最早实现XHR,需要通过ActiveXObject创建xhr实例,直到IE7才定义了XMLHttpRequest对象.IE5.5实现XHR之后,其他浏览器紧随其后实现了XHR,直接 ...

  10. 前端之CSS——属性和定位

    一.字体属性 1.font-size(字体大小) p { font-size: 14px; } font-size 属性可设置字体的尺寸. px:像素,稳定和精确 %:把 font-size 设置为基 ...