韓順平dedecms講解上課記錄

感謝韓順平: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}就是去掉超連接

相關文章
相關標籤/搜索