韩顺平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}就是去掉超链接
韩顺平dedecms讲解上课记录的更多相关文章
- 韩顺平Java(持续更新中)
原创上课笔记,转载请注明出处 第一章 面向对象编程(中级部分) PDF为主 1.1 IDEA 删除当前行,ctrl+y 复制当前行,ctrl+d 补全代码,alt+/ 添加或者取消注释,ctrl+/ ...
- 韩顺平Oracle笔记
韩顺平Oracle笔记 分类: DataBase2011-09-07 10:24 3009人阅读 评论(0) 收藏 举报 oracle数据库sqljdbcsystemstring 目录(?)[-] ...
- 韩顺平_JAVA_视频教程_下载(打开迅雷,直接复制链接地址即可下载)
ed2k://|file|韩顺平.循序渐进学.java.从入门到精通.第0讲-开山篇.avi|37021064|f4fb2fb3db938a642146ccc8f0935fed|h=ao2k3ep7p ...
- 初级Oracle和SQL学习者的学习笔记。韩顺平-玩转oracle。
我自己就是一个oracle和sql的初学者,前段时间看了韩顺平老师的oracle视频教程,觉得很深入浅出,收获了很多.同时自己也做了不少笔记,现在想将纸质笔记以自己的话总结出来.俗话说得好:教学总是相 ...
- PHP笔录(韩顺平)
这里记录下韩顺平视频学习记录 http://www.php.cn/code/11753.html
- 尚硅谷韩顺平Linux教程学习笔记
目录 尚硅谷韩顺平Linux教程学习笔记 写在前面 虚拟机 Linux目录结构 远程登录Linux系统 vi和vim编辑器 关机.重启和用户登录注销 用户管理 实用指令 组管理和权限管理 定时任务调度 ...
- Django项目:CRM(客户关系管理系统)--70--60PerfectCRM实现CRM学生上课记录
#urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...
- Linux学习笔记-韩顺平
这是我学习哔哩哔哩UP主韩顺平的2021韩顺平图解Linux课程的学习笔记. 课程地址:2021韩顺平图解Linux课程 Linux基础篇-Linux目录结构 基本介绍 linux 的文件系统是采用级 ...
- IT讲师韩顺平:我为什么辞去百万年薪,自己创业?
先自我介绍一下,我叫韩顺平,是一名IT讲师.国内很多自学PHP和Java的朋友都看过我的视频课程,算是有些知名度. 15年8月从传智辞职后,很多朋友非常关心我的去向,网上也流传各种说法,有的说我和某某 ...
随机推荐
- java&python环境变量+idea&pycharm激活
java: JAVA_HOME=C:\jdk1.5.0_06 PATH=%JAVA_HOME%\bin;%PATH% CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\l ...
- C#中DateTime的缺陷与代替品DateTimeOffset
C#中的DateTime在逻辑上有个非常严重的缺陷: > var d = DateTime.Now; > var d2 = d.ToUniversalTime(); > d == d ...
- 探究c# lock
今天早上阅读前辈的代码,看到了这么一段代码,如下所示: lock("Execute") { string sqlStr = sbSQLScript.ToString(); } 看到 ...
- SignalR Self Host+MVC等多端消息推送服务(1)
一.概述 由于项目需要,最近公司项目里有个模块功能,需要使用到即时获得审批通知:原本的设计方案是使用ajax对服务器进行定时轮询查询,刚刚开始数据量和使用量不大的时候还好,后来使用量的增加和系统中各种 ...
- SAP OLE中常用的一些方法和属性
1.ole中如何保存和退出. call method of sheetname = filepath # =. call method of applicationname 'quit'. 2.给sh ...
- Java异常机制简介
什么是异常? 异常一般是指程序在编译期没有问题,但是在程序运行期出现的错误,一个程序会因为出现异常而终止运行,也就是我们常说的挂掉,在多线程下,异常只会影响所在的线程,对其他线程没有影响. Java异 ...
- Jmeter4.0----安装教程(2)
1.检查安装环境 1.1 JDK要求 JDK版本:1.6 + 1.2 检查是否安装JDK win + R 快捷键打开运行,输入 cmd 打开面板,在面板中输入 java -version,出现如下信息 ...
- 一个shell脚本,让你的linux命令行酷炫起来
可调用如下函数达到echo出来带颜色的文字.._echo_error() { echo -ne "\033[31;1m $1\033[0m\n";}_echo_ok() { ech ...
- linux --> 计算机是如何启动的?
计算机是如何启动的? 零.boot的含义 "启动"用英语怎么说?回答是boot.boot原来的意思是靴子,"启动"与靴子有什么关系呢? 原来,这里的boot是b ...
- 蓝牙4.0模块控制LED彩灯调光调色经验之谈
基于蓝牙模块的智能LED彩灯调光调色控制思路如下: 在此,找一个低功耗蓝牙模块内嵌接入LED灯的控制电路板,接入LED彩灯的控制电路中. 蓝牙模块彩灯控制方式如下,本文两类来解说led灯的控制方式: ...