dedecms基础整理,
需求3: 在添加某个商品的时候,我们希望多一个信息,就是付费方式,还希望多一个邮资信息,我们又该怎样处理?
引出修改内容模型的问题
每个模型的字段管理的所有信息 都属于附加表。
步骤:
- 点击 核心->内容模型管理->商品修改->字段管理->添加新字段.
说明: 当你操作完毕后,就会在对应的 附件表中增加了一个对应的字段.
需求4: 请各位同学看看,这里我们有一个问题,就是当你点击武侠,爱情,电器的时候,会找不到对应的页面,这是为什么呢?这个就是直接点击 更新栏目HTML
说明: 我们设计网站前台的时候,可以参考这样一个思路: 网站分三级目录 首页面->栏目页->内容页
思考题:1. 栏目(类别)是保存在哪个表中的. 2. 一篇文章,一个商品它们最终是存放在数据库中的哪些表中?
答: 栏目(类别)是保存在哪个表中的. dede_arctype
一篇文章,一个商品它们最终是存放在数据库中的哪些表中?
内容是分别放在两张表 ,一张是他的主表,该主表是通用 dede_archives , 附件表 dede_addonXXX.
u 在DEDE中增加内容的基本步骤是怎样?
(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的标签问题:
- 如何去查阅标签手册
后台->模板->默认模板管理->点一个修改
可以看到参考标签
u 如何去掉列表表的广告
知识点: 如何去找某个栏目的列表页
后台->网站栏目管理->找到对应的栏目->更新->高级选项->
到 dede/templates/default /下去找到 对应的模板文件,进行修改即可,然后重新更新栏目HTML
☞ 每个栏目属于一个模型,那么他们对应的栏目列表模板是同一个,修改后,就同时收到影响.
u dede标签的讲解
- dede 的标签是在 模板中使用
- 我们可以建立自己的模板文件,来学习各个标签的使用
u 具体的标签使用
- 单标签
用法
{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网站首页面.
步骤:
- 首先把 templates/defualt 备份一份
- 把templates/defualt 清空
- 把a67 的首页.html 和 images css js 整体拷贝到 templates/default下,
- 首页.html 换成 index.htm
- 打开 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电影网的首页面栏目
- 创建电影这个内容模型
- 创建我们的栏目(我的电影、我的电视剧)
- 使用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网的栏目列表页面
图示:
步骤:
- 请先把不必要的栏目先删除.
- 看看你的电影的模型对应的列表模板文件叫什么名字,然后在 templates/defualt 目录下创建一个空的 list_movie.htm 名字.(根据你创建的栏目后的高级选型里面,有个对应生产的栏目htm)
- 更新栏目HTML
- 更改首页面的栏目的超链接,让它指向直接的列表静态页
这里请大家在 首页面模板中 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取出,并显示
步骤
- 首先自己在后台添加一些数据(电影、电视剧)
- 在首页面的模板文件中,使用标签{dede:arclist} 来取出文档
- 具体代码是在 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网的首页的添加我的电视剧,并完成各个栏目对应的列表页
请大家完成,当我们点击我的电视剧时,就显示电视剧内容,点击电影就显示电影的内容.
步骤如下:
- 找到对应的栏目列表模板文件 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
步骤:
- 把 前端提供的 电影内容.htm 拷贝到 article_movie.htm
- 对模板做 网页编码,资源引入,图片的路径进行修改
- 重新生成内容页
- 修改了首页面模板文件 index.htm
- 对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基础整理,的更多相关文章
- 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法
这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...
- MySQL基础整理(一)之SQL基础(未完成)
大家好,我是浅墨竹染,以下是MySQL基础整理(一)之SQL基础 1.SQL简介 SQL(Structure Query Language)是一种结构化查询语言,是使用关系模型的数据库应用语言. 2. ...
- nutch的一些基础整理
nutch的一些基础整理 原创 2015年03月22日 18:18:01 标签: nutch / 240 编辑 删除 一.关于配置文件: nutch-default.xml:爬虫的默认配置.在${nu ...
- [转帖]nginx基础整理
nginx基础整理 https://www.cnblogs.com/guigujun/p/6588545.html 目录结构如下: Nginx基础知识 Nginx HTTP服务器的特色及优点 Ngin ...
- JAVA基础整理-集合篇(一)
集合作为JAVA的基础知识,本来感觉自己理解的很清楚了,但是在最近的一次面试中还是答得不尽如人意!再次做一下整理,以便加深理解以及随时查阅. 首先,java.util包中三个重要的接口及特点:List ...
- 关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)
JAVA的基础语法等都跟C有很大的相似之处,所以这里就不多啰嗦了.直接从数组开始. 数组: 1.声明 int [] a; 在声明的过程中,并没有分配空间给数组.我们可以在声明的同时,用new来分配相应 ...
- C#基础整理
元旦整理书架发现一本小册子——<C#精髓>中国出版社2001年出版的,粗略翻了下关于C#的知识点挺全的虽然内容谈得很浅也有很多过时的内容(话说这本书是我在旧书店花5块钱淘的)我保留原有章节 ...
- HTML5游戏开发技术基础整理
随着HTML5标准终于敲定.HTML5将有望成为游戏开发领域的的热门平台. HTML5游戏能够执行于包含iPhone系列和iPad系列在内的计算机.智能手机以及平板电脑上,是眼下跨平台应用开发的最佳实 ...
- js数组基础整理
首页: 主要整理了一下数组中常用的一些基础知识,代码都是自己手敲,有不对的地方希望能指出,目前只有4篇,后续会不断的增加这一板块. 由于少于100字不能发所以把一些最基本的创建数组也写上. // 创建 ...
随机推荐
- 深入理解Javascript封装DOMContentLoaded事件
最近在写一个Javascript的框架,刚把DOMContentLoaded事件封装好,略带小兴奋,把开发过程中遇到的原理和兼容性问题做篇笔记,省的忘记到处找. 我们在写js代码的时候,一般都会添加w ...
- [转]mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理
本文转自:http://www.cnblogs.com/shootingstar/p/5629668.html 1.mvc5+ef6+Bootstrap 项目心得--创立之初 2.mvc5+ef6+B ...
- [转]Session and application state in ASP.NET Core
本文转自:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state By Rick Anderson and Steve ...
- SQL脚本整理系列一 分隔函数
原来效果: fName Scroe 王某某 ,, 李某某 , 王某某 李某某 李某某 ,, 王某某 执行后效果: name score 李某某 李某某 李某某 王某某 王某某 王某某 王某某 王某某 ...
- sass文件处理
sass注释方式有两种: 1.标准的css注释/**/: 2.//双斜杠形式的单行注释(不会被转译): 标准的css注释 双斜杆单行注释 sass文件后缀名有两种: 1.后缀名为sass,不适用用大括 ...
- 创建简单的node服务器
昨天咱们说了封装ajax,今天咱们说一下 自己创建一个建议的node服务器: 话不多说直接上代码: var http = require('http') //对URL 解析为对象//1.导入模块 UR ...
- 【转】 ASP.NET使用ICallbackEventHandler无刷新验证用户名是否可用
功能说明:当用户在用户名输入框输入字符并焦点离开此输入框时,自动到数据库用户表中验证此用户名是否已被注册,如果已被注册,显示[不可用],反之,显示[可用],期间页面不刷新,读者也可以考虑将提示文字换成 ...
- LeAndroid招聘汇总
招聘Android通讯开发经理 工作地点:北京-朝阳区 工作经验:3-5年 薪资范围:¥ 面议 学历要求:本科以上 职责描述1.负责设计指导开发和优化Android网络通讯相关功能:2.负责设计指导开 ...
- python 初识
一.Python介绍 Python简介 Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...
- ExecutorService的invokeAny方法
一.此方法获得最先完成任务的结果,即Callable<T>接口中的call的返回值,在获得结果时,会中断其他正在执行的任务 示例代码: import java.util.ArrayList ...