即:添加 onkeyup=”value=value.replace(/[^\d]/g,”)”
这里使用的正则表达式 较为简单。输入框后面添加个“能输入数字”就更好啦
织梦默认的高级搜索,就是这个页面/plus/advancedsearch.php,他是模糊搜索.而且会出现多条结果,需要修改为单条信息搜索.
后台,核心,模型管理,在原模型或新建立的模型中,增加字段.比如增加身份证字段.
然后返回模型管理,找到模型后面的放大镜图标,点击一下.如下图.
下面模板选择,默认是利用官方默认模板中的advancedsearch.htm 模板
点击确定后,就会自动出现搜索代码.
还需要修改plus/advancedsearch.php 这个文件.
大约在142行. 如下为修改后的效果.就是把模糊查询为精准查询.并增加一个不为空的判断.
if(isset(${$var}) && trim(${$var})!=”)
{
${$var} = stripslashes(${$var});
${$var} = preg_replace(“#[\|\”\r\n\t%\*\?\(\)\$;,’%<>]#”, “”, trim(${$var}));
${$var} = addslashes(${$var});
//$where .= ” AND addon.$var LIKE ‘%${$var}%'”;
$where .= ” AND addon.$var = ‘${$var}'”;
}
else{
ShowMsg(‘身份证不能为空,或输入不正确’,-1,0);exit;}
向下.
在下面这几行的下面增加.
else
{
$sql = urldecode($sql);
$query = $sql;
}
增加如下代码,下面是修改后的效果
else
{
$sql = urldecode($sql);
$query = $sql;
}
//print_r($sql);exit;
$searchinfo2 = $dsql->GetOne($sql);
if(!is_array($searchinfo2))
{
showmsg(‘查询的信息不存在,请检查输入’,’-1′);
exit();
}
如果模板上不显示自定义字段,可以在网上搜索下解决方案
模板内容为:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset={dede:global.cfg_soft_lang/}” />
<title>搜索结果页 – <?php echo $cfg_webname;?></title>
<link rel=”stylesheet” href=”{dede:global.cfg_templets_skin/}/style/bluesnail.css” type=”text/css” media=”all” />
<link rel=”stylesheet” href=”{dede:global.cfg_templets_skin/}/style/my.css” type=”text/css” media=”all” />
</head>
<body><br/><br/>
<div style=”width:500px;margin:0 auto”>
<form name=”form” method=”get” action=”{dede:global.cfg_cmsurl/}/plus/advancedsearch.php”>
输入身份证号码 : <input name=”shenfenzheng” type=”text” style=”width:250px; height:24px;border: 1px solid #A38E69;padding: 1px;” value=”” maxlength=”18″ />
<input type=”hidden” name=”mid” value=”17″ />
<input type=”hidden” name=”dopost” value=”search” />
<input type=”hidden” name=”typeid” value=”10″ />
<input type=button name=”Submit” value=”点击查询” />
</form>
</div><br/>
<div class=”container600″>
{dede:datalist }
<?php
$fields[‘stime’] = GetDateTimeMk($fields[‘senddate’]);
$fields[‘arcurl’] = GetArcUrl($fields[‘aid’],$fields[‘typeid’],$fields[‘senddate’],$fields[‘title’],$fields[‘ismake’],$fields[‘arcrank’],$fields[‘namerule’],$fields[‘typedir’],$fields[‘money’]);
$fields[‘typeurl’] = GetTypeUrl($fields[‘typeid’],MfTypedir($fields[‘typedir’]),$fields[‘isdefault’],$fields[‘defaultname’],
$fields[‘ispart’],$fields[‘namerule2’],$fields[‘moresite’],$fields[‘siteurl’],$fields[‘sitepath’]);
?>
<dl class=”border border-large padding-big”style=”border-radius:18px;border-color:#eee;background:#bfebd2″>
<p style=”font-size:24px;text-align:center;font-weight:bold”> 中华人民共和国机动车驾驶证
<br/>
<span style=”font-size:14px;font-weight:normal”>Driver’s license of the people’s Republic of China</span><br/>
<span style=”font-size:20px;font-weight:normal;background:#999″> 证号 </span><span style=”font-size:20px;font-weight:normal;”> {dede:field.shenfenzheng/}</span></p>
<dd class=”pr”>
<div class=”top0 left10 text-12 line-height12 margin-bottom-12″>姓名:<br/>Name</div>
<span class=”top0 left50 ib text-24 border-bottom”style=”border-bottom:solid 1px #555;”> {dede:field.title/} </span>
<div class=”top0 left190 text-12 line-height12 margin-bottom-12″>性别:<br/>Gender</div>
<span class=”top4 left250 ib text-20 “style=”border-bottom:solid 1px #555;”> {dede:field.xb/} </span>
<div class=”top0 left300 text-12 line-height12 margin-bottom-12″>国籍:<br/>Nationality</div>
<span class=”top4 ib text-20″style=”border-bottom:solid 1px #555;left:380px”> {dede:field.gj/} </span>
<div class=”top40 left10 text-12 line-height12 margin-bottom-12″>住址:<br/>Address</div>
<span class=”top48 left60 ib text-16″style=”border-bottom:solid 1px #555;”> {dede:field.zz/} </span>
<span class=”top90 left10″><img src=”{dede:field.gz function=’GetOneImgUrl(@me,1)’/}”width=”120″/></span>
<div class=”top88 left140 text-12 line-height12 margin-bottom-12″>出生日期:<br/>Date of birth</div>
<span class=”top92 left230 ib text-20″style=”border-bottom:solid 1px #555;”> {dede:field.csrq/} </span>
<div class=”left140 pa text-12 line-height12 margin-bottom-12″style=”top:130px”>初次领证日期:<br/>Issue Date</div>
<span class=”pa left230 ib text-20″style=”border-bottom:solid 1px #555;top:134px”> {dede:field.cc/} </span>
<div class=”left140 pa text-12 line-height12 margin-bottom-12″style=”top:170px”>准驾车型:<br/>Quasi driving type</div>
<span class=”pa left260 ib text-20″style=”border-bottom:solid 1px #555;top:174px”> {dede:field.zj/} </span>
<div class=”left10 pa text-12 line-height12 margin-bottom-12″style=”top:220px”>有效期限:<br/>Validity period</div>
<span class=”pa left100 ib text-20″style=”top:225px”> {dede:field.yxqx/} </span>
<span class=”pa hidden left220 ib text-20″style=”;top:225px”>至 中国 </span>
<span class=”top70 “style=”left:380px”><img src=”{dede:field.zp function=’GetOneImgUrl(@me,1)’/}”height=”180″/></span>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</dd>
</dl>
{/dede:datalist}
</div>
</body>
</html>
织梦自定义字段要想在任何位置任何模版中调用或者在{dede:list }和{dede:arclist }标签中调用,需要特殊设置。
自定义字段就是列表附加字段自定义的字段。
一,织梦如何添加自定义字段:
网站后台》核心》频道模型》内容模型管理》选择要添加自定义字段的频道模型,这里以图片集频道举例
注意:创建字段,前台参数这里“使字段可以在列表的底层模板中获得”这个必须勾选
在字段管理》添加新字段中添加(价格属性)
在基本设置里》列表附加字段中添加jiage(可以在列表模板{dede:list}{/dede:list}中用[field:name /]调用)
二,织梦如何调用自定义字段:
1、在{dede:list }中调用
{dede:list pagesize=’5′ addfields=’jiage’ channelid=’2′}
<P>标题:[field:title/]</P>
<P>价格:[field:jiage/]</P>
{/dede:list}
说明:addfields=’jiage’指定要获得的字段 addfields=’字段1,字段2′
channelid=’2’指定 channelid 属性(内容模型的id值)图片模型的ID为2
2、在{dede:arclist }中调用
{dede:arclist typeid=’3′ row=’4′ addfields=’jiage’ channelid=’2′ }
<P>标题:[field:title/]</P>
<P>价格:[field:jiage/]</P>
{/dede:arclist}
3、单独调用
价格:{dede:field name=’jiage’/}
{dede:php}echo rand(1,3);{/dede:php}
包含了3的,随机生成一个1~3的整数
任意页面调用栏目内容
{dede:sql sql='Select content from dede_arctype where id=2'} [field:content function="cn_substr(@me,236)"/] {/dede:sql}
dedecms调用顶级栏目
{dede:channel type='top' currentstyle="<li class='on'><a href='~typelink~' ~rel~>~typename~</a></li>"} <li><a href='[field:typeurl/]' [field:rel/]>[field:typename/]</a></li> {/dede:channel}
dedecms调用同级栏目
{dede:channel currentstyle="<li class='on'><a href='~typelink~' ~rel~><span>~typename~</span></a></li>"} <li><a href="[field:typeurl/]" [field:rel/]>[field:typename/]</a></li> {/dede:channel}
dedecms调用指定栏目的子栏目
{dede:channel type='son' typeid='3'} <li><a href="[field:typeurl/]">[field:typename/]</a></li> {/dede:channel}
dedecms调用顶级栏目及其子栏目
{dede:channelartlist typeid='top'} <li class="type"> <a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a> <div class="sontype"> <ul> {dede:channel type='son' noself='yes'} <li><a href="[field:typelink/]">[field:typename/]</a></li> {/dede:channel} </ul> </div> </li> {/dede:channelartlist}
dedecms调用当前栏目
{dede:type} <a href="[field:typeurl/]" [field:rel/]>[field:typename/]</a> {/dede:type}
dedecms循环输出指定栏目下的子栏目内容
{dede:channelartlist type='son' typeid='1'} {dede:field.content/} {/dede:channelartlist}
dedemcs栏目页调用栏目内容
{dede:field.content/}
使用dede时,经常会碰到需要调用当前顶级栏目名称,而织梦默认{dede:field name=’typename’ /} 只可以获取当前栏目页上一级栏目的名称,而不是当前栏目顶级栏目名称。
在include/common.func.php的底部加入:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//获取顶级栏目名 function GetTopTypename( $id ) { global $dsql ; $row = $dsql ->GetOne( "SELECT typename,topid FROM dede_arctype WHERE id= $id" ); if ( $row [ 'topid' ] == '0' ) { return $row [ 'typename' ]; } else { $row1 = $dsql ->GetOne( "SELECT typename FROM dede_arctype WHERE id= $row[topid]" ); return $row1 [ 'typename' ]; } } |
备注:若顶级栏目没有绑定二级域名,所调用的字段应该是 sitepath 故代码应如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//获取顶级栏目url function GetTopTypeurl( $id ) { global $dsql ; $row = $dsql ->GetOne( "SELECT sitepath,topid FROM dede_arctype WHERE id= $id" ); if ( $row [ 'topid' ] == '0' ) { return $row [ 'sitepath' ]; } else { $row1 = $dsql ->GetOne( "SELECT sitepath FROM dede_arctype WHERE id= $row[topid]" ); return $row1 [ 'sitepath' ]; } } |
顶级栏目其他字段调用的function 函数仿照上面所示书写即可。
同理可得获取顶级栏目url方法 (当顶级栏目绑定二级域名时调用的字段为“ siturl”)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
function GetTopTypeurl( $id ) { global $dsql ; $row = $dsql ->GetOne( "SELECT siteurl,topid FROM dede_arctype WHERE id= $id" ); if ( $row [ 'topid' ] == '0' ) { return $row [ 'siteurl' ]; } else { $row1 = $dsql ->GetOne( "SELECT siteurl FROM dede_arctype WHERE id= $row[topid]" ); return $row1 [ 'siteurl' ]; } } |
在文章页或者栏目列表页调用时,在所要调用栏目名称的位置加上下面这行代码即可实现。
{dede:field name=’typeid’ function=”GetTopTypename(@me)” /} 顶级栏目名
{dede:field name=’typeid’ function=”GetTopTypeurl(@me)” /} 顶级栏目url
dede调用顶级栏目ID 方法一:
{dede:field.typeid function=”GetTopid(@me)”/} 聚模板首推这一方法,经过测试是可行的。
dede调用顶级栏目ID 方法二:
1、在所需要调用顶级栏目ID的地方,添加这段标签语法
{dede:type}[feild:topid/]{/dede:type}
2、修改源文件,找到include目录下的taglib目录下的type.lib.php。
找到这条语句
1
2
|
$row = $dsql ->GetOne(“Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `dede_arctype` where id=’ $typeid ’ “); |
修改成为
1
2
|
$row = $dsql ->GetOne(“Select id,topid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `dede_arctype` where id=’ $typeid ’ “); |
在if(!is_array($row)) return ”;下一行添加
1
|
if ( $row [ 'topid' ]==0){ $row [ 'topid' ]= $row [ 'id' ];} |
这样,这条语句在顶级栏目还是子栏目,都可以调用了
问题:
在进行页面开发时,经常会使用:before, :after伪元素创建一些小tips,但是在:before或:after的content属性使用中文的话,会导致某些浏览器上出现乱码。
解决方案:
注意:转Unicode后,要在css用的时候把前面的u去掉,css样式才能识别出来@
dedecms的自定义表单没有对提交的信息进行过滤,经常会有垃圾信息骚扰,
本站提供2条检测规则,是利用正则方法,可以检测手机号码和邮箱,
修改plus下的diy.php 再提交入库前插入下面代码即可,
其中的 $telphone和$email就是提交的手机号码和邮箱值名,如果不是我设定的可以自行修改。
//判断手机号码是否正确
if(!eregi(“^13[0-9]{9}|15[0-9]{9}|18[0-9]{9}|17[0-9]{9}|14[0-9]{9}$”,$tel))
{
showMsg(‘请输入正确的手机号码,以便我司更好为您服务!’, ‘-1’);
exit();
}
//增加必填字段判断
if($required!=”){
if(preg_match(‘/,/’, $required))
{
$requireds = explode(‘,’,$required);
foreach($requireds as $field){
if($$field==”){
showMsg(‘<font size=4 color=#9b231c>请完整填写申请表<br>以便我司更好为您服务!</font>’, ‘-1’);
exit();
}
}
}else{
if($required==”){
showMsg(‘<font size=4 color=#9b231c>请完整填写申请表<br>以便我司更好为您服务!</font>’, ‘-1’);
exit();
}
}
}
//end