先来看个效果,假如我们要在文章内容页实现以下时间样式:
先上效果图片:
这个效果难倒了不少站长,下面介绍:文章列表日期格式化年月日分离显示方法。
1、自定义SQL标签实现方法:
其实使用SQL标签很容易实现,需要了解日期输出格式的含义:如YYYY-MM-DD 表示 年(四位数)-月(两位数)-日(两位数)
日期支持标签:YYYY:年(4位) YY:年(2位) MM:月 DD:日 hh:时 mm:分 ss:秒
了解这些后,
只输出年:{$Field(adddate,Date,YYYY)} 前台显示:2016
只输出月:{$Field(adddate,Date,MM)}
前台显示:05
只输出日:{$Field(adddate,Date,DD)}
前台显示:03
实现上图的效果的标签代码为:
最近更换了Win7 64位系统,安装IIS后,部分Asp程序获取时间格式错误,总是显示800a000d错误,原因是win7默认的时间格式为2016/12/23 星期五 9:49:41,而Asp需要的时间格式为2016-12-23 9:50:28。
我们可以通过更改注册表来解决这个问题:
打开注册表,进入到[HKEY_USERS\.DEFAULT\Control Panel\International],然后
1、将键 sDate 的值由 / 改为 -
解决的办法,在phpcms\libs\functions\extention.func.php(自定义函数文件)中定义一个方法
/**
* 获取选项的格式化输出
* @param str $field 字段名称 必须
* @param int $value 字段值 必须
* @param int $modelid 模型ID 必须
* 2014-09-28 by awen
*/
function get_box($field, $value,$modelid) {
$fields = getcache('model_field_'.$modelid,'model');
extract(string2array($fields[$field]['setting']));
if($outputtype) {
return $value;
} else {
$options = explode("\n",$fields[$field]['options']);
foreach($options as $_k) {
$v = explode("|",$_k);
$k = trim($v[1]);
$option[$k] = $v[0];
}
$string = '';
switch($fields[$field]['boxtype']) {
case 'radio':
$string = $option[$value];
break;
case 'checkbox':
$value_arr = explode(',',$value);
foreach($value_arr as $_v) {
if($_v) $string .= $option[$_v].' ';
}
break;
case 'select':
$string = $option[$value];
break;
case 'multiple':
$value_arr = explode(',',$value);
foreach($value_arr as $_v) {
if($_v) $string .= $option[$_v].' ';
}
break;
}
return $string;
}
}这个是照内容输出页面的原理弄出来的,是系统的实现方式,安全可靠,只是把原来的、号分隔改成了空格,也可以加一个标签之类的,可以自己改。
前台使用
第一个是你的字段名称,第二个是你字段的值,就是输出的1、2、3,第三个是你所使用的模型iD
如楼盘特色字段名为‘lpts’,字段值为$r[lpts]这是loop循环得到的变量也可以是一个指定的你定义的值,第三个15是楼盘模型的ID
{get_box('lpts',$r[lpts],15)}
效果如下
<< 向左走,向右走 >>
