提供一種新的時間類型:date(格式:XXXX年—XX月—XX日) 名稱:日期類型
使用范圍:自動模型的附加表,獨立模型表
優點:可以使用mysql自帶的日期處理/日期轉換函數,也可以對date字段進行排序。
這是mysql數據庫自帶的一種數據類型,可以使用字符串或數字向表中的date類型列插入數據。Dede默認的時間類型只有datetime,而且是UNIX時間戳,操作只有使用dede提供的函數進行轉換,使用上很不方便(例如:SQL語句中直接使用日期函數或者按年—月—日排序如何處理?)。為什么只提供這種時間類型呢?我不理解,我沒有使用過linix系統,是不是基于這種考慮我不清楚。閑話少說,請大家看操作步驟:
一、修改mychannel_field_add.php
文件作用:增加指定的內容頻道表的字段(前臺程序)
修改目的:增加一種字段類型
文件位置:/DedeAMPZ/WebRoot/Default/dede
操作:增加紅色顯示的內容
…………………………
…………………………
<td bgcolor="#FFFFFF">
<div class='nw'><input type='radio' class='np' name='dtype' id='dtype1' value="text" checked='1'>單行文本(varchar)</div>
…………………………
…………………………
…………………………
<div class='nw'><input type='radio' class='np' name='dtype' id='dtype16' value="stepselect">聯動類型</div>
<div class='nw'><input type='radio' class='np' name='dtype' id='dtype17' value="date">日期類型</div>
二、修改mychannel_field_edit.php
文件作用:編輯指定的內容頻道表的字段(前臺程序)
修改目的:增加一種字段類型
文件位置:/DedeAMPZ/WebRoot/Default/dede
操作:增加紅色顯示的內容
…………………………
…………………………
if($canchange)
{
?>
<option value="text">單行文本(varchar)</option>
…………………………
…………………………
<option value="stepselect">聯動類型</option>
<option value="date">日期類型</option>
<?php
}
?>
</select> </td>
三、修改fieldtype.txt
文件作用:系統指定的字段類型
修改目的:增加一種字段類型,注意標點符號是半角
文件位置:/DedeAMPZ/WebRoot/Default/dede/inc
操作:增加紅色顯示的內容
…………………………
…………………………
checkbox,checkbox多選框
stepselect,聯動類型
date,日期類型
四、修改inc_admin_channel.php
文件作用:對前臺內容頻道提交的數據進行處理
修改目的:增加對date日期類型的處理(原程序沒有這個類型,不增加就會默認處理成字符類型)
文件位置:/DedeAMPZ/WebRoot/Default/dede/inc
操作:增加紅色顯示的內容
…………………………
…………………………
if($dtype=="int"||$dtype=="datetime")
{
if($dfvalue=="" || ereg("[^0-9-]",$dfvalue))
{
$dfvalue = 0;
}
$fields[0] = " `$fieldname` int(11) NOT NULL default '$dfvalue';";
$fields[1] = "int(11)";
}
else if($dtype=="date")
{
if($dfvalue=="" || ereg("[^0-9-]",$dfvalue))
{
$dfvalue = '0000-00-00';
}
$fields[0] = " `$fieldname` date NOT NULL default '$dfvalue';";
$fields[1] = "date";
}
else if($dtype=="stepselect")
{
…………………………
…………………………
五、你可以仿照這種辦法,在自動模型的附加表或獨立模型表中增加新類型datetime,取消UNIX時間戳,但難度稍大。
六、關于在SQL語句中使用mysql日期函數/轉換函數,請參閱互聯網。
補充:
1、本程序調試環境:dedecms5.5 utf8
2、dedecms默認的時間類型datetime,在數據庫表中保存的是int(11),操作極不方便。增加這種日期類型后,你可以直接使用mysql日期函數/轉換函數,少很多煩惱。