分类目录归档:DEDECMS技巧

DEDECMS技巧

dede时间格式汇总标签汇总

dede的日期时间格式[field:pubdate function=’strftime(“时间”,@me’/]这个是固定格式,(利用strftime()函数格式化时间),因些只需将时间换成是时间对应的格式即可,可以参考最下面的

字母所对应的时间格式

  1. dede常用时间格式及时间调用标签

[field:pubdate function=’strftime(“%Y-%m-%d %H:%M:%S”,@me)’/]

2013-12-10 12:11:52

[field:pubdate function=’strftime(“%y-%m-%d %H:%M:%S”,@me)’/]

13-12-11 12:11:52

  • 月份及当前 时间

[field:pubdate function=’strftime(“%m-%d %H:%M:%S”,@me)’/]

10-01 11:14:20

[field:pubdate function=’strftime(“%m-%d %H:%M”,@me)’/]

10-01 12:14

  • 当前年月日

[field:pubdate function=’strftime(“%y-%m-%d”,@me)’/]

13-12-01

[field:pubdate function=’strftime(“%y年%m月%d日”,@me)’/]

13年12月01日

[field:pubdate function=’strftime(“%Y年%m月%d日 %H点%M分%S秒”,@me)’/]

2013年12月01日 12点17分36秒

[field:pubdate function=’strftime(“%b %d, %Y”,@me)’/]

Nov 01, 2013

  • 时区及当前时间,可对应最下边时间格式修改

[field:pubdate function=’strftime(“%A on %b %d, %Y, %X : %Z”,@me)’/]

Saturday on Nov 01, 2013, 12:21:06 : 中国标准时间

  1. dede24小时发布文章的时间显示的颜色

dede文章发布后24小时内的时间显示为红色: 基中#ff0000 是时间的颜色,可以改成其他颜色如#FFFFFF是白色,#000000是黑色,#FF0000是红色,#00FF00是绿色,#0000FF是蓝色  只需直接替换就可以了

[field:pubdate runphp=’yes’]

$a=”<font color=’#ff0000′>”;$b=”</font>”;

$c=strftime(“%Y年%m月%d日 %H:%M:%S”,”@me”);

$ntime = time();

$oneday = 3600 * 24;

if(($ntime – @me)<$oneday) @me = $a.$c.$b;

else @me =$c;

[/field:pubdate]

  1. dede文章的最后更新时间

{dede:tagname runphp=’yes’}@me = date(“Y-m-d H:i:s”,
time());{/dede:tagname}

XX天前

[field:pubdate runphp=’yes’]

$today = Floor(time()/(3600 * 24));

$senday= Floor(@me/(3600 * 24));

  1. strftime()函数格式化时间

a星期几的缩写。

A星期几的全名。

b月份名称的缩写。

B月份名称的全名。

c本地端日期时间较佳表示字符串。

d用数字表示本月的第几天(范围为00至31)。

H用24小时制数字表示小时数(范围为00至23)。

I用12小时制数字表示小时数(范围为01至12)。

j以数字表示当年度的第几天(范围为001至366)。

m月份的数字(范围由1至12)。

M分钟。

p以’AM’或’PM’表示本地端时间。

S秒数。

U数字表示为本年度的第几周,第一个星期由第一个周日开始。

W数字表示为本年度的第几周,第一个星期由第一个周一开始。

w用数字表示本周的第几天(0为周日)。

x不含时间的日期表示法。

X不含日期的时间表示法。

y二位数字表示年份(范围由00至99)。

Y完整的年份数字表示,即四位数。

Z时区或名称缩写。

直接修改上边对应的字母就可以修改时间格式,注意字母的大小写.

时间格式
{dede:field name=’pubdate’ function=’strftime(“%Y年%m月%d日 %H:%M:%S”,”@me”)’ /}2007年1月1日 18:30:02
{dede:field name=’pubdate’ function=’strftime(“%Y-%m-%d %H:%M:%S”,”@me”)’ /}2007-1-1 18:30:02
{dede:field name=’pubdate’ function=’strftime(“%Y年%m月%d日 %H时%M分%S秒”,”@me”)’ /}2007年1月1日 18时30分02秒
{dede:field name=’pubdate’ function=’strftime(“%m-%d %H:%M:%S”,”@me”)’ /}1-1 18:30:02
{dede:field name=’pubdate’ function=’strftime(“%m-%d”,”@me”)’ /}1-1
%Y-年
%m-月
%d-日
%H-小时
%M-分
%S-秒
24小时内的时间显示红色..
[field:pubdate runphp=’yes’]
$a=”<font color=’#ff0000′>”;
$b=”</font>”;
$c=strftime(“%Y年%m月%d日 %H:%M:%S”,”@me”);
$ntime = time();
$oneday = 3600 * 24;
if(($ntime – @me)<$oneday) @me = $a.$c.$b;
else @me =$c;
[/field:pubdate]
最后更新时间
最后更新时间:{dede:tagname runphp=’yes’}@me = date(“Y-m-d H:i:s”, time());{/dede:tagname} XX天前
[field:pubdate runphp=’yes’]
$today = Floor(time()/(3600 * 24));
$senday= Floor(@me/(3600 * 24));
$updays = $today-$senday;
if($updays==0) @me = “今日”;
else @me = $updays.”天前”;
[/field:pubdate]

dede 判断下级是否存在子栏目,存在显示,不存在隐藏

dede 判断下级是否存在子栏目,存在显示,不存在隐藏

{dede:field name=typeid runphp=”yes”}
global $dsql;
$sql = “SELECT id From `#@__arctype` WHERE reid=’@me’ And ishidden<>1 order by sortrank asc limit 0, 100 “;
$row = $dsql->GetOne($sql);
@me=is_array($row)?’存在显示此内容’:’不存在显示此内容’;
{/dede:field}

dede 判断是否有缩略图

织梦dedecms无缩略图不显示或者显示指定的默认图、这里分别以三种情况来阐述dedecms无缩略图不显示织梦实现方法:

1、织梦无缩略图不显示
{dede:field.litpic runphp="yes"}
@me = (strpos(@me,'defaultpic')? "" : "<img src='".@me."'/>");
{/dede:field.litpic}

2、dedecms列表无缩略图不显示,有缩略图显示 带链接的缩略图
[field:array runphp='yes']
@me=(strpos(@me['litpic'],'defaultpic')?'':"<a href='{@me['arcurl']}' class='ia' title='{@me['seotitle']}'><img src='{@me['litpic']}' alt='{@me['title']}'/></a>");
[/field:array]

3、dede无缩略图显示默认图片
{dede:field.litpic runphp="yes"}if (@me!=''){@me= "<img src='".@me."'/>";}{/dede:field.litpic}

织梦CMS channel判断当前循环的栏目是否最后一个 另类样式CSS

在实际的开发中,使用channel显示顶级栏目的时候可能会遇到这样的情况,第一个栏目和最后一个栏目的样式与中间的栏目的样式不一样,第一个栏目的样式我们可以通过autoindex来设置,而最后一个栏目的样式是不能通过autoindex来设置的,因为我们不知道当前循环的栏目是不是最后一个,这个时候呢,我们就需要去修改织梦的一个文件/include/taglib/channel.lib.PHP,打开这个文件后我们可以再116行看到$GLOBALS[‘autoindex’] = 0;这句话,然后呢,我们可以

1.在这句话后面添加一个标识$GLOBALS[‘iflast’]=0;用$GLOBALS[‘iflast’]来标识当前循环的是不是最后一个,

我们在107行已经获取到了当前循环的总次数$totalRow,

当$GLOBALS[‘autoindex’]的值为$totalRow-1

的时候就说明当前的循环为最后一次循环,然后给$GLOBALS[‘iflast’]赋值为1,

2.在158行$GLOBALS[‘autoindex’] 下面添加if($GLOBALS[‘autoindex’]==($totalRow-1)){$GLOBALS[‘iflast’]=1;},然后我们在模板里面就可以{dede:channel type=”top”}

 


{/dede:channel}

自定义表单-提交内容 (必填)

方法一:通过修改程序源文件实现
 
1、在plus文件夹下找到diy.php文件,对其进行编辑,在第40行左右找到代码:
 
$dede_fields = empty($dede_fields) ? '' : trim($dede_fields);
 
2、在这行代码下面,添加以下代码后保存文件:
 
//增加必填字段判断
if($required!='')
        {
            if(preg_match('/,/', $required))
            {
                $requireds = explode(',',$required);
                foreach($requireds as $field)
                {
                    if($$field=='')
                    {
                        showMsg('姓名或手机号为必填内容,请正确填写', '-1');
                        exit();
                    }
                    else
                    {
                        $field = 'mobile';
                        if(!is_int($$field))
                        {
                            showMsg('联系电话必须为数字','-1');
                            exit();
                        }    
                    }
                }
            }
        }
//end
 
3、在创建的自定义表单中找到代码:
 
<form action="/plus/diy.php" enctype="multipart/form-data" method="post">
 
4、在这行代码下面,添加代码:
 
<input type="hidden" name="required" value="数据字段名,数据字段名" />
 
注意这行代码要修改下,根据你的表单所需要设置的必填项,例如设置“姓名”、“邮箱”为必填项。
 
添加新字段–“表单提示文字”:姓名–“字段名称”:name
添加新字段–“表单提示文字”:邮箱–“字段名称”:email
 
如:<input type="hidden" name="required" value="name,email" />
 
5、保存后,必填项设置完成,当用户提交表单时间,系统检查到必填项没有输入内容,就会提示“带*号的为必填内容,请正确填写”。
 
方法二:通过javascript脚本代码实现检测
 
1、把以下代码保存为bitian.js文件:
 
$(document).ready(function() {
//验证
$('#complain').submit(function () {
if($('#name').val()==""){
$('#name').focus();
alert("用户名不能为空!");
return false;
}
if($('#tel').val()=="") {
$('#tel').focus();
alert("联系电话不能为空!");
return false;
}
if($('#title').val()=="") {
$('#title').focus();
alert("标题不能为空!");
return false;
}
if($('#text').val()=="") {
$('#text').focus();
alert("具体内容不能为空!");
return false;
}
})
});
 
提醒:
 
$('#complain').submit(function ()  //complain为自定义表单的ID,如果生成的表单没有可以自行加上,即 id="complain"
if($('#name').val()==""){$('#name').focus();        //#name为要验证表单中的ID,如想让用户名不能为空,在后台用户名的数据字段名设为name,下同
 
2、在表单模板文件中添加调用代码:
 
<script src='文件路径/js.js' type="text/javascript"></script>
 
3、保存后,重新生成网页!

后台左侧菜单空白或不显示的解决办法

进入后台你发现左边菜单一片空白,显示不出来,这是怎么回事?怎么解决呢?遇到这种现象一般是空间的权限问题,没有写入权限,修改一下空间的目录权限就可以了,先来看下截图解决办法如下:


1.首先进行判断是程序问题还是权限问题。通常这种都属于权限问题。
2.使用FTP登陆网站。找到DATA/目录下的tplcache 文件夹。将里面的数据备份。
3.在文件夹上面右键。并设置其属性为777。然后将里面的文件除了index.html文件外全部删除。
4.刷新后台。问题解决,dede后台菜单正常显示!

         有些朋友按照上面操作还是不行,那就有可能是php版本过低,最好更新好PHP5.3(织梦用PHP5.4版本的话会出现几个问题,特别是GBK编码的)

每隔5行加分割线-DED

[field:global name=autoindex runphp=”yes”](@me % 5 == 0)?@me=”<li class=\”bline\”></li>”:@me=””;[/field:global]

 

 

方法一:

代码如下:

{dede:arclist typeid=’1′ titlelen=’40′ row=’20′ typeid=”” }
·<a class=”syh” href=http://www.jb51.net/”[field:arcurl /]” title=”[field:title function=’htmlspecialchars(@me)’/]”
target=_blank>[field:title function=”cn_substr(@me,48)”/]</a>

[field:global name=autoindex runphp=”yes”]if(@me%10==0)@me=”<hr />
“;
else @me=””;
[/field:global]
{/dede:arclist}

如果你定义了相关css,如:”syh” 就是隔行变色

方法2:

代码如下:

{dede:arclist typeid=’1′ titlelen=’40′ row=’20′ typeid=”” }
<li><a href=http://www.jb51.net/”[field:arcurl/]”>[field:title/]</a></li>
[field:global name=autoindex runphp=”yes”](@me % 5 == 0)?@me=”<li class=\”bline\”></li>”:@me=””;[/field:global]{/dede:arclist}

如果你定义了相关css,就是每隔5行加一横线,20个列表加三条线不是四个,最后一个一般不用加分隔线,如果想在最后也加分隔线的话,去掉。

MAXWO Error: (PHP 5.3 and above) GP or CGP

在织梦恢复、安装 过程中出现 Error: (PHP 5.3 and above) Please set ‘request_order’ ini value to include C,G and P (recommended: ‘CGP’) in php.ini,more…
当我们遇到这样的情况首先可以确定就是现在空间所使用的php版本低了,那如何解决这个问题呢,今天MAXWO华英雄就来给大家讲解下

下文提到2个方法,我们推荐大家用方法二!

根据官方提示:

部分使用PHP 5.3的主机可能会有下面的提示:

(PHP 5.3 and above) Please set ‘request_order’ ini value to include C,G and P (recommended: ‘CGP’) in php.ini

由于在PHP最新的版本中增加了一个配置项目“request_order”,默认值为“GP”,这个存在一定的安全风险。这里我们建议用户将配置更改为“CGP”

继续阅读