• 网站认证
  • 教程:5,345|
  • 话题:4392|
  • 评论:45|
  • 会员:177|
  • 注册
  • 查看作者
  • DedeCMS 增加日期类型样式的方法

    提供一种新的时间类型: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日期函数/转换函数,少很多烦恼。

  • 0
  • 0
  • 0
  • 3.8k
  • 请登录之后再进行评论

    登录
  • 做任务
  • 实时动态
  • 偏好设置
  • 自定义-1
  • 单栏布局 侧栏位置: