韩顺平dedecms讲解上课记录

感谢韩顺平:

如何打开php的gd库,通过php设置-》php扩展--》phpdb库;打上勾就行;

dede存在四张十分重要的表,channeltype,模型表最原始的发源
arctype:每条记录是一个栏目是发源表2

archives:内容主表是:是发源表3属于一个文章或者电影的主要内容信息

addonarticle:这是附加表,就是每篇文章,或者电影都有自己特色信息在这里填写

模型的具体体现就是主表和附加表,主表是不能动的,所以在内容模型中增加一个字段
实际上是在附加表中增加一个字段,这里是调用aler更改表这个命令,其实arctype就是模型到主表和附加表的过度表

增加字段在底层实际上这样运行的:

<?php
$conn=mysql_connect("localhost","root","");
mysql_select_db("dedecmsv57utf8sp1");

$sql="alter table dede_addonshop add post_mode default ...";

增加一个模型,其实就是在最原始的模型表中增加一个记录
并且增加一张与之对应的附加表

a目录下面都是所有的静态页面:data:用于存放临时文件和缓存文件
images用于存放dede自己的图片
dedecms/include目录 核心类库(标签库,操作图像的库)
里面有一个taglib文件夹,里面有很多标签需要自己学习,这是公司自己定义
dedecms/install目录:存放安装信息,删除install_lock.txt删除就可以重新安装
dedecms/manage:就是后台的文件,每天啃一点
dedecms/members:会员管理程序,将来的重点,权限,级别,可读可写,
dedecms/plus:插件,或者自己写,模块
dedecms/templates:存放dede前台的所有模板文件
dedecms/uploads:存放上传的文件,按照时间存放

查找标签的用法:
后台-》模板-》默认模板管理-》点击修改

可以看到参考的标签
去掉广告的办法:在模板首页面中查找myad标签和head.htm中查找myad将所在div全部删掉然后生成首页的静态文件就行!

列表页是针对栏目而言的,而不是针对模型而言的。每个栏目对应一个列表页

{商品有自己的列表页面}这个在后台的栏目管理中可以查询得到
index_shop.htm:封面模板
list_shop.htm:列表模板不只是文章列表还是商品列表
article_shop.htm:文章模板不只是文章内容还是商品详情
所以单独的栏目的广告没有去掉需要在这里面删除!

每个栏目属于一个模型,那么他们对应的栏目列表模板是同一个
这个可以后台栏目管理可以看出,然后看高级选项,里面可以看出
对应列表模板!

后台里面的生成中可以看主页的html模板是index.htm
所以我们将index.htm备份,然后自己设置一个test.htm来测试自己学习
标签!

怎么样将模板文件转化成静态,这是哪个程序控制的
我们可以通过抓包来确定那个文件来处理的,就是看
它是向哪个文件发出请求!
结果发现:manage/makehtml_homepage.php

我们在这个文件中可以通过这个命令进行调试:
else if($dopost=="make")
{
die("信息=".$templet);
这里就可以可以输出信息,花上半天的时间就可以调试的差不多了!
也可以通过这种方式进行调试
file_put_contents("d:/mylog.txt",$dopost);

用法:
{dede:标签名 属性="值" ../}
举例说明:
{dede:include filename="head.htm" /}
下面的双标签!:
{dede:channel type="top" row="8"}..{/dede:channel}
{dede:channel type="top" row="8"}..{/dede}有时候可以这样封闭!

channel标签实际上是取得栏目这个表中的记录!

可以查看dede源码就可以对dede进行二次开发了
知识点:如何查看channel标签的源码:/dedecms/include/taglib/channel.lib.php

#@_arctype表示#@表示dede系统的前缀!

这里就是调试php的标签的内部代码:

if($type==‘top‘)
{
$sql = "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, $line ";
die("sql=".$sql);
}
下面的die是可以进行调试的
可以看出上面就是sql语句,那么我们可以通过拼接点sql语句进行有条件的查询
或者我们自定义属性,然后拼接到sql语句中进行查询!

安全性:需要把dede这个目录更改成manage,这样会更加安全,别人不知道我使用的开源是dedecms;

全局变量定义在include/common.inc.php文件中,而且都是现算出来的!

dede的标签是不能够嵌套的
但是如果需要在dede标签中取得全局变量该怎么办?
应该将原始的取法:{dede:global.cfg_soft_lang/}
更改成[field:global.cfg_soft_lang/]等价[field:global name=‘全局变量‘/]

在更新栏目的时候生成栏目的html的时候需要将隐藏的文章都删除,以为之前将模板
都删除了,如果不删除没有模板的栏目就会报错的!

栏目管理中的--》增加栏目--》高级选项中可以看到模板!
在标签库中可以看到taglib/channel.lib.php中看到
typelink=typeurl是在程序中计算得到的!

<!-- flag参数表示是否设置头条,或者是否置顶-->
{dede:arclist flag=‘h,p‘}
{/dede:arclist}
h和p可以以分号隔开!

channelid=‘18‘ addfields=‘language‘

select t1.litpic,t2.language,t2.pfz,t1.title from dede_archives t1,dede_addonmovie t2 where t1.typeid=7 AND t1.id=t2.aid

<!--{dede:arclist flag=‘h‘ channelid=‘18‘ addfields=‘language,pfz‘ typeid=‘7‘ limit=‘0,5‘}-->

<!--{/dede:arclist}-->

select t1.litpic t2.language,t2.pfz,t1.title from dede_archives t1,dede_addonmovie t2 where t1.typeid=7 AND t1.id=t2.aid AND t1.arcrank=0

<!-- flag参数表示是否设置头条,或者是否置顶-->

{dede:sql sql=‘select t1.litpic,t2.language,t2.pfz,t1.title from dede_archives t1,dede_addonmovie t2 where t1.typeid=7 AND t1.id=t2.aid AND t1.arcrank=0 order by t1.click asc‘}
<li class="c[field:global.autoindex/]"><a href="http://www.a67.com/movie/7989" target="_blank"><img src="[field:litpic/]" alt="爱情维修站 3GP MP4高清下载" /></a><p>
[field:language/]
</p><b><a href="http://www.a67.com/movie/7989" target="_blank">
[field:title/]
</a><img src="[field:global name=‘cfg_templets_skin‘/]/images/1.jpg"><em>[field:pfz/]分</em></b></li>
{/dede:sql}
注意:查询字段之间需要用逗号隔开!

349 西北工业

下面的就是:
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.pfz FROM `#@__archives` arc
LEFT JOIN `#@__arctype` tp on arc.typeid=tp.id LEFT JOIN `dede_addonmovie` addf ON addf.aid = arc.id WHERE
arc.typeid IN (7) And arc.channel = ‘18‘ And arc.arcrank > -1 ORDER BY arc.sortrank desc LIMIT 0,5

需要拼接where条件就想办法在orderby的前面进行拼接一点where条件!
addf.language=‘国语‘

下面的可以拼接多个条件:

<div class="movie_list">
<!--dede:arclist对于这个标签,如果你不写typeid,在栏目模板文件中会自动根据点击的栏目就会带一个typeid-->
{dede:arclist hspwhere=" addf.language=‘国语‘ AND addf.area="channelid=‘18‘ addfields=‘language,pfz‘limit=‘0,5‘}
<li class="d[field:global.autoindex/]"><a href="http://www.a67.com/movie/7989" target="_blank"><img src="[field:litpic/]" alt="爱情维修站 3GP MP4高清下载" /></a><p>[field:language/]</p><b><a href="http://www.a67.com/movie/7989" target="_blank">[field:title/]</a><img src="[field:global name=‘cfg_templets_skin‘/]/images/1.jpg"><em>[field:pfz/]分</em></b></li>
{/dede:arclist}
</div>
可以拼接多个条件按照大陆,等等条件进行排序!

面包屑:
<div class="weizhi">当前位置:{dede:field.position/}{dede:field.title/}</div>

<script src="{dede:field name=‘phpurl‘/}/mysql.php?aid={dede:field name=‘id‘/}&type=update&$num=10"type=‘text/javascript‘
language="javascript"></script>

<?php
//这里我们require_once common.inc.php目的是为了使用该文件中定义好的全局变量
require_once(dirname(__FILE__)."/../include/common.inc.php");

$type=$_GET[‘type‘];
$nums=$_GET[‘num‘];
$aid=$_GET[‘aid‘];

if($type==‘update‘){

$sql="UPDATE dede_archives SET click=click+50 WHERE id=7";
file_put_contents("d:\\aab.log",$sql);
$dsql->ExecuteNoneQuery($sql);
echo "document.write(‘hello‘);\r\n";

}

include\datalistcp.class.php里面有一个pageSize可以设置,而且这个文件对应的所有页面dede标签是可以嵌套的!

建立数据库的时候增加一个表,由于设置了存储引擎导致创建失败
解决办法是:去掉引擎设置和编码设置,建立成功后再在操作中设置引起和编码格式的设置就会成功:

create table comments(

id int unsigned primary key auto_increment,

userid mediumint(8) unsigned not null default 0,

title varchar(128) not null default ‘‘,

content longtext not null default ‘‘,

addtime int unsigned not null default 0,

movieid mediumint(8) unsigned not null default 0

)type=MyISAM default charset=utf8;

评论的网址:
http://dedecms.com/pinglun/index.php?c=pinglun&a=listpl&aid=13

如果是评分值就可以设置deciml,这样不会像float造成精度丢失,也不会像varchar一样一位位的比较,导致判断大小的失误!

SELECT * FROM dede_archives WHERE 1;
函数FROM_UNIXTIME(pubdate,‘%Y-%m-%d‘)就是将时间戳转化成指定的格式;

select * from FROM_UNIXTIME(pubdate,‘%Y-%m-%d‘) from dede_archives

下面集中解决昨日更新功能:
1.返回现在的年月日:
select curdate() from dede_archives;
2.当前日期减去一天的时间即返回前一天的年月日:
select date_sub(curdate(),interval 1 day) from dede_archives;
3.查询更新日期等于前一天的所有的记录就是跟第二条的时间相等就列出所有的记录:
select * from dede_archives where FROM_UNIXTIME(pubdate,‘%Y-%m-%d‘)=date_sub(curdate(),interval 7 day);

1456488910
查询前一天的记录:
select date_sub(curdate(),interval 1 day) from dede_archives;
上面全部查的昨天的记录!

select * from dede_archives where FROM_UNITIME(pubdate,‘%Y-%m-%d‘)=date_sub(curdate(),interval 3 day) from dede_archives

昨日更新的最终代码:
<li><span><a href="#" target="_blank">昨天更新</a> |</span>
{dede:arclist hspwhere="FROM_UNIXTIME(pubdate,‘%Y-%m-%d‘)=date_sub(curdate(),interval 7 day)" limit=‘0,10‘}
<a href="#" target="_blank">[field:title/]</a>
{/dede:arclist}

---------------
http://www.a67.com/movie/p.2
http://www.a67.com/movie/434548

{dede:trim replace=‘‘}<a([^>]*)>{/dede:trim}
{dede:trim replace=‘‘}</a>{/dede:trim}
就是将超链接的符号去掉:trim就是修剪的意思,将能够匹配的都去掉
其中[^>]*表示超链接非介绍标签所有匹配,dede标签{/dede:trim}就是去掉超链接

时间: 2024-08-01 22:37:17

韩顺平dedecms讲解上课记录的相关文章

servlet&amp;jsp入门.....韩顺平笔记

u 背景知识介绍 J2EE的13种技术 java->servlet->jsp [技术总是有一个演变过程] zip粘贴到word设置 u 回顾一下我们现有的技术 java 基础(面向对象,集合,界面,线程,文件,网络) jdbc (java 的数据库编程) oracle / mysql / sqlserver html css javascript (web  开发)  ->网页设计 xml serlvet+jsp ->java web开发[使用java技术做 web开发] u ja

韩顺平老师亲临成都 PHP基础班火爆开班

"哇~~是他,居然是他!" "我自学的只是就是看他的视频资料" "我接触PHP到了解PHP也是因为在网上下载的他的视频" "没想到能见到他本人... ..." 小伙伴们这么惊讶,究竟是谁呢?没错,就是我们既熟悉又陌生的韩顺平老师.相信很多知道传智播客的同学,都在官网上看过我们的自学视频,其中韩顺平老师的视频由于人性化和专业化,更为得到大家的广泛关注,这次韩老师亲临成都,参与我们首期PHP基础班开班,更是引爆全场!许多经典和出人

分层模式开发+MVC模式开发--韩顺平雇员数据库管理

1.分层模式 在使用分层设计模式编写代码之前,我们更多的是采用面向过程然后眉毛胡子一把抓,在一两个程序代码里写完所有的功能,这样只适合于小型个人项目.因为不利于阅读和修改,只有编程的个人比较熟悉程序的结构.这不利于程序的扩展性和协同开发.所以,我们引入一个固定的模式来进行编程,使得所有代码结构清晰明确,而且易于扩展延伸. 此处介绍的一种模式是分层模式.把程序分成几个层次:界面层.业务逻辑层.数据层. 界面层:主要功能就是实现界面的显示.比如要在登陆页面显示输入框之类,就需要login.php中放

http请求详解,防盗链技术_韩顺平PHP视频听课笔记

韩顺平PHP视频听课笔记 第84讲 http请求详解,防盗链技术 1,  通过httpwatch插件来抓取http请求内容 2,  http1.0短连接, http1.1长连接 http1.0短连接:每次通信时间很短,效率极低,已被废除. http1.1长连接:通话时间长.只要现在基本都采用http1.1. 只要Connection的状态为keep-alive,就说明是通话状态 3,  http是tcp/ip协议的一个应用层协议,http也是我们web开发的基础. 4,  一个问题:看一个tes

韩顺平_PHP程序员玩转算法公开课(第一季)01_算法重要性_五子棋算法_汉诺塔_回溯算法_学习笔记_源代码图解_PPT文档整理

文西马龙:http://blog.csdn.net/wenximalong/ 课程说明:算法是程序的灵魂,为什么有些网站能够在高并发,和海量吞吐情况下依然坚如磐石,大家可能会说: 网站使用了服务器集群技术.数据库读写分离和缓存技术(比如memcahced和redis等),那如果我再深入的问一句,这些优化技术又是怎样被那些天才的技术高手设计出来的呢? 我在上大学的时候就在想,究竟是什么让不同的人写出的代码从功能看是一样的,但从运行效率上却有天壤之别, 就拿以前在软件公司工作的实际经历来说吧, 我是

韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏

韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏_学习笔记_源代码图解_PPT文档整理 分类: PHP 2012-12-12 15:01 4256人阅读 评论(0) 收藏 举报 文西马龙:http://blog.csdn.net/wenximalong/ 采用面向对象思想设计超级马里奥游戏人物(示意图) 怎么用通过按键,来控制图片的位置 这个小游戏,用面向对象会很方便,不用面向对象会很麻烦很麻烦,比如以后要讲解的坦克大战的游戏,要是用纯的面向过程或

初级Oracle和SQL学习者的学习笔记。韩顺平-玩转oracle。

我自己就是一个oracle和sql的初学者,前段时间看了韩顺平老师的oracle视频教程,觉得很深入浅出,收获了很多.同时自己也做了不少笔记,现在想将纸质笔记以自己的话总结出来.俗话说得好:教学总是相得益彰,在总结的过程中想必会加深自己的印象,能够巩固自己的学习过程. oracle 用户部分: 创建用户:create user user_name identified by user_password; 此时用户并没有连接数据库的权限.需要给其赋予连接权限 赋予权限:权限分为对象权限和系统权限.

韩顺平html5课程分享:6小时编写经典坦克大战!

记起自己去年参加的一次面试,在做过Java多年的面试官面前发挥的并不好,但他一听说我会html5,立马眼睛发亮,不管不顾的想要和我签约...所以,现在为工作犯愁的朋友们,学好html5,绝对会为你找到好工作添加重要砝码! html5 大致是 (html+css3+javascript apis).一句话: html5 支持了css3 的强大的选择器和动画等功能+ 支持javascript 很多新的函数,所以html5就很强大了. 所以在此特意韩顺平老师的html5课程-6小时编写经典坦克大战.这

韩顺平老师《一周学会Linux》视频笔记

前言: 这个教学视频使用的软件环境是: Red Hat Linux(Kernel 2.4.20-8)红帽Linux系统[release 9 shrike],在虚拟机中运行 1.成为一个Linux专家的秘籍是: 思考-实践-再思考-再实践-- 2.Linux学习方法: 1.高效而愉快地学习:边看视频边操作效率不错: 2.先建立一个整体框架,再细节:高屋建瓴,从宏观上把握知识体系,然后再逐个突破: 3.用到什么学什么:不可能把一个技术事无巨细地都学完,掌握一个基础,其他的等用到了再去学习: 4.先K