dedecms原理

简单使用

现在老板要求你做一个文章管理系统,栏目(类别)包括(武侠、爱情、音乐...) ,每个栏目(类别)有对应的文章,文章已经给你准备好了,请你在30分钟搞定该网站,怎么样?

步骤:

1、登录到dedecms后台创建了三个栏目(类别)

后台->核心->网站栏目管理->添加顶级栏目

添加三个,刷新首页即可看看.

2、给每个栏目添加对应的文章给武侠文章栏目添加文章

后台->核心->普通文章->添加文章      (缩略图代码可以拿出来用)

这里可以添加文章, 刷新首页面就看看

当你点击 某个文章的超链接时,就可以看到对应的文章内容

3、创建栏目页

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

这时,我们的三级页面,全部走通.

细节问题:

1、dede设计者认为,每个栏目都属于一个模型 武侠文章|音乐文章=>文章模型,一个内容 模型,对应多个栏目  dede_channeltype 在默认情况下有提供5个内容模型

2、dede设计者认为,所有的数据(电影,文章,软件,新闻)属于一个栏目,为了记录这个栏目信 息,放入dede_arctype表

字段名

含义

Id

编号 主键

Topid

上一级id是谁 0代表顶级栏目

1、dede的设计者认为,所有的记录(新闻,文章,软件。。)都应该把数据放入到表 dede_archives[主表],还有一部分数据放入对应 从表

2、dede设计者认为,不管是什么样的数据,(新闻,文章,软件..)他们有相同字段,把相同的 字段放入主表(dede_archives),同时认为,每种数据,都有自己独特的字段,于是把这些 信息,放入从表。比如:

新闻news   从表:dede_addonnews

商品goods  从表:dede_addongoods

3、当我们在后台,创建一个栏目时,

(1) 就会在 dede_arctype 表中记录这个栏目信息

(2) 同时,会创建一个对应的文件夹,栏目文件夹 dedecms/a/栏目文件夹/

4、我在某个栏目,创建一条记录时,

(1) 该记录会保存到 数据库中(dede_archives+对应从表)

同时成静态页面 dedecms/a/栏目文件夹/

实例1:添加内容管理

如果现在我们要做的是电子商务网站,卖我们的商品,这时用文章这样的形式来管理还合适吗? 但是内容管理没有商品,内容模型有商品

在dede后台的规定, 如果一个内容模型,没有一个栏目,则不会出现内容添加的选项.

隐藏栏目  隐藏内容待审核

提出一个严肃的问题. 首页如何静态化.

在dedecms 中栏目页面和首页面需要手动点击生成静态页面.

栏目页面的静态化 : 后台->生成->更新栏目页 (自动生成对应的静态页面)

首页面的静态   : 后台->生成->更新首页面( index.html)

实例2:内容模型添加字段

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

dedecms允许用户自定义字段,操作如下: 后台->内容模型管理

在添加某个字段信息的时候,dede提供了一个叫联动类型的字段,常用的联动信息已经提供.地区. 比如给商品添加一个邮寄到地址

后台->内容模型管理->增加一个联动类型(注意,字段的名称,要和dede给出名字一致)

后台->内容模型管理->联动类别管理

实例3:更新栏目列表

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

当我们点击首页的某个栏目,可以进入到对应的栏目列表页,需要我们手动的点击更新栏目页:步骤:后台->生成->更新栏目HTML

注意 :我可以选择你要更新的哪个栏目

说明:当我们点击更新栏目HTML,就会在该栏目对应的 目录

dedecms/a/栏目文件夹/ 生成两个静态文件 index.html 还有 xx_list.html

原理示意图:

增加网站内容步骤

现在我要上一个租赁信息, 需求是内容模型自己创建 myhouse

(1) 创建自己的内容模型 myhouse

后台->内容模型管理->填写你的信息, 最后点击创建

结果: 在 dede_channeltype 表中有这个信息; 会创建附件表 dede_addonmyhouse

(1) 根据自己的需求,来创建自定义的字段

后台->内容模型管理->点击你的某个模型->字段增加, 添加自己的信息

结果: 在 dede_addonmyhouse 表中就会有一个新的字段创建, (alter table 表名 add cloumn 字段名 类型)

(2) 创建一个具体的栏目

出租房屋/求租房屋

到 后台->网站栏目管理 ->增加一个栏目

刷新后台页面:

(1) 增加信息

点击内容管理->房屋信息

根据实际情况来填写内容.

(2) 然后更新首页面和栏目页面HTML

后台-> 生成  -> 更新首页面HTMl ....栏目页面HTML

每个栏目会对应两个目标文件 栏目模板,内容模板

注意: 当我们更新后,求租房屋这个 栏目页生成 ( 因为你还没有提供 对应的栏目模板,因此默认使用list_default.htm) 对应内容也会使用默认模板(这时可能提示错误)

自定义两个模版然后更新html看静态页面 大小都是0kb

(3) 我们需要美工,至少两个模板

列表模版list_XXX.htm

内容(文本)模板 article_XXX.htm

到此就可以把信息大量的创建.

dedecms的标签使用

dedecms 标签的使用

在后台->模板->默认模板管理 ,点击 修改,就可以看到 dedecms提供的标签.

去掉广告.

思路:

因为我的首页面的静态页是通过 模板创建来,到的首页面对应的模板文件,把模板文件中关于广告的代码,去掉即可. dedecms/templets/default/index.htm 模板

广告标签是 {dede:myad}   去掉, 如果 index.htm 文件中 include其它模板文件,则需要把引入的模板文件的 myad去掉.

找到模板文件去掉广告(某个栏目对应列表页)

找到该栏目的对应的模板文件.可以到 后台->栏目管理->看看某个栏目的

模板是哪个?然后修改.

系统学习dede标签

学习方法:写一个自己的模版  写各种标签看效果

把主页模版改成自己的

(1) 单标签

形式 : {dede:标签名  参数=’值’ /}

举例 :includelude filename=’head.htm’/}

{dede:inc

(2) 双标签

形式: {dede:标签名 参数=’值’ ...} 内容 {/dede:标签名}

举例:

<!--取出网站的导航栏目-->

<!--type='top' 表示取出顶级栏目 row表示取出多少行-->

<!--dede:channel 标签 相当 select ?  from dede_arctype where ? 去调用一个标签库类文件 channel.lib.php

--->

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

[field:typename/]

{/dede:channel}

(3) 如何对取出的字段内容,进行简单的处理

[field:字段名 function=’函数名(@me)’]

我对取出的栏目信息,进行md5加密.

案例 :

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

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

{/dede:channel}

(4) 对取出的内容做一个简单的业务处理

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

//简单的业务逻辑.

[/filed:字段名]

举例说明

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

@me = (@me==’’) ? ‘空的’ : @me

[/filed:字段名]

(5) 现在我希望有自己的一个函数,该函数可以,在字段信息后面添加一个 hello, 并返回.

形式是

[field:字段名 function=’函数(@me)’/]

案例:

<br/>

****如何在字段上使用自定义函数***********

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

☞ myfun1这个函数要写到

dedecms/include/extend.func.php

☞ dede标签不嵌套使用.

(6) 如何在dede中使用全局的变量

在dedecms/include/common.inc.php 文件中定义了很多重要的全局变量的,我们可以使用dede标签进行引用

基本使用方法:

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

如果需要在{dede}标签内部使用

[field:global.全局变量名/]

☞ 支持自定义全局变量.

案例:

****如何在字段上使用自定义函数***********

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

<br/>

[field:global.cfg_softname/]-[field:global.my_global_val/]

{/dede:channel}

<br/>*********<br/>

{dede:global.cfg_soft_lang/}--{dede:global.cfg_softname/}

dedecms原理及使用的更多相关文章

  1. DEDECMS数据库执行原理、CMS代码层SQL注入防御思路

    我们在上一篇文章中学习了DEDECMS的模板标签.模板解析原理,以及通过对模板核心类的Hook Patch来对模板的解析流量的攻击模式检测,达到修复模板类代码执行漏洞的目的 http://www.cn ...

  2. (转)DEDECMS模板原理、模板标签学习 - .Little Hann

    本文,小瀚想和大家一起来学习一下DEDECMS中目前所使用的模板技术的原理: 什么是编译式模板.解释式模板,它们的区别是什么? 模板标签有哪些种类,它们的区别是什么,都应用在哪些场景? 学习模板的机制 ...

  3. (转)浅谈dedecms模板引擎工作原理及自定义标签

    理解织梦模板引擎有什么意义?一方面可以更好地自定义标签.更多在于了解织梦系统,理解模板引擎是理解织梦工作原理的第一步.理解织梦会使我们写php代码时更顺手,同时能学习一些php代码的组织方式. 这似乎 ...

  4. 浅谈dedecms模板引擎工作原理及其自定义标签

    浅谈dedecms模板引擎工作原理: 理解织梦模板引擎有什么意思? 可以更好地自定义标签.更多在于了解织梦系统,理解模板引擎是理解织梦工作原理的第一步. 理解织梦会使我们写PHP代码是更顺手,同时能学 ...

  5. dedecms在列表或首页取得文章首图的功能改进

    在网上找过资料,效果不是很满意,第一个是原理说的不对,第二个是后缀写死. 原文大致如下: 当文章缩略图是自动选取文章内第一个图片裁减所得时 他的命名规则是有规律的 比如原文是1.jpg 它对应的缩略图 ...

  6. Dedecms 图片加上Alt或Title等属性写法

    代码如下:$this->Fields['typename'] = $this->TypeLink->TypeInfos['typename']; SetSysEnv($this-&g ...

  7. DedeCms文档关键词替换,优先替换长尾关键词

    本文教大家:dedecms文档关键词维护之关键词出现多次,只给出现的第一个加链接的 举例:当文章中出现了一百次台历时,按官方的原理,他会给一百个台历都加上链接的.dedecms这如何是好? 解决方法( ...

  8. dedecms首页怎么调用公司简介的内容

    DeDeCMS功能虽然强大,但还是有些细节上的功能没有实现,正如本文描述的问题一样,DEDECMS要在网站首页调用公司简介的内容,而且还要截取前多少个字符数的时候,DEDECMS标签中没有能实现这样的 ...

  9. (转) dedecms中自定义数据模型

    刚学习完dedecms的标签语法,我有很多困惑,觉得标签的意义比较抽象,不知道如何用标签来写一些具体的内容.如果有一些数据库的编程经验,就知道一个很常用的编程范例—增删改查.比如说,我要建立的是书本的 ...

随机推荐

  1. 函数式编程—函数的关系—is-a、has-a、use-a

    is-a:函数的实现与函数类型的关系: has-a:匿名(闭包)函数的创建者与匿名函数的关系:匿名函数与环境和上下文(函数)的关系: use-a:高阶函数与参量函数的关系: 函数式编程的基本功之一就是 ...

  2. sql中exists和notexists用法总结(并和in的比较)

    首先头脑中有三点概念: 1.EXISTS子查询找到的提交 NOT EXISTS 子查询中 找不到的提交 说明:不要去翻译为存在和不存在,把脑袋搞晕. 2.建立程序循环的概念,这是一个动态的查询过程.如 ...

  3. [RN] React Native 使用 FlatList 和 ScrollView 的下拉刷新问题

    React Native 使用 FlatList 和 ScrollView 实现 下拉刷新时,RefreshControl 控件不起作用, 后来经查明,原来 RefreshControl 要加在 Sc ...

  4. UE4的多线程

    1. 源代码 AsyncWork.h 2. 多线程的使用 参考文档:https://wiki.unrealengine.com/Using_AsyncTasks 当我们需要执行一个需要很长时间的任务时 ...

  5. linux 所有命令无法使用

    配置nginx时,错误export之后linux 所有命令无法使用 出现这个问题是因为系统的环境变量没有正确配置造成的,造成这个原因有很多,比如系统升级,比如不正当操作等导致环境变量被覆盖修改,解决的 ...

  6. [golang][gui]Hands On GUI Application Development in Go【在Go中动手进行GUI应用程序开发】读书笔记03-拒交“智商税”,解密“GUI”运行之道

    和老外的原文好像没多大联系了,哈哈哈,反正是读书笔记,下面的内容也是我读此书中的历程,也写进来吧.不过说实话,这框架的作者还挺对我脾气的,哈哈哈. 拒交“智商税”,解密“GUI”运行之道 我很忙 项目 ...

  7. win10系统2分钟睡眠

    https://blog.csdn.net/widenstage/article/details/78982722 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe ...

  8. 使用adb连接Mumu模拟器

    1)下载Mumu模拟器 2)运行Mumu模拟器 3)找到mumu安装目录下的MuMu\emulator\nemu\vmonitor\bin目录 4)在当前目录打开cmd,执行 adb connect ...

  9. pytesseract.pytesseract.TesseractError: (1, 'Error opening data file /usr/local/share/tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata"

    pytesseract.pytesseract.TesseractError: (1, 'Error opening data file /usr/local/share/tessdata/chi_s ...

  10. NOIP 2013货车运输

    当然这题有很多做法,但是我看到没有人写DSU的很惊奇 按照之前做连双向边题的经验,这题可以用并查集维护联通 然后对于每个询问\(x,y\),考虑启发式合并 当两个点集\(x,y\)合并时,一些涉及到其 ...