感谢韩顺平:javascript
如何打开php的gd库,经过php设置-》php扩展--》phpdb库;打上勾就行;php
dede存在四张十分重要的表,channeltype,模型表最原始的发源
arctype:每条记录是一个栏目是发源表2html
archives:内容主表是:是发源表3属于一个文章或者电影的主要内容信息java
addonarticle:这是附加表,就是每篇文章,或者电影都有本身特点信息在这里填写mysql
模型的具体体现就是主表和附加表,主表是不能动的,因此在内容模型中增长一个字段
其实是在附加表中增长一个字段,这里是调用aler更改表这个命令,其实arctype就是模型到主表和附加表的过分表sql
增长字段在底层实际上这样运行的:数据库
<?php
$conn=mysql_connect("localhost","root","");
mysql_select_db("dedecmsv57utf8sp1");缓存
$sql="alter table dede_addonshop add post_mode default ...";安全
增长一个模型,其实就是在最原始的模型表中增长一个记录
而且增长一张与之对应的附加表tcp
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}就是去掉超连接