利用DEDE织梦 advancedsearch.htm高级搜索功能 , 来定制身份证驾驶证信息查询系统

织梦默认的高级搜索,就是这个页面/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添加和调用自定义字段的方法

织梦自定义字段要想在任何位置任何模版中调用或者在{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: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调用当前顶级栏目名称、ID、url方法

使用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'];}

这样,这条语句在顶级栏目还是子栏目,都可以调用了

 

如何避免CSS :before、:after 中文乱码

问题:

在进行页面开发时,经常会使用:before, :after伪元素创建一些小tips,但是在:before或:after的content属性使用中文的话,会导致某些浏览器上出现乱码。

 

解决方案:

  1. 确保HTML、CSS文件使用UTF-8格式,并且HTML文档也使用UFT-8的字符编码格式,即HTML文档的meta信息包含 <metacharset=”UTF-8″> 。
  2. 避免在CSS的:before, :after中使用中文,如果一定要使用,可以使用中文对应的Unicode。可以使用使用站长工具,或者是JavaScript的原生方法escape将中文转为Unicode。需要注意的是Unicode在CSS中的书写方式,例如“限量抢”对应的Unicode是’\u9650\u91cf\u62a2’,而在CSS中要写成 span:before { content: ‘\9650\91cf\62a2’ }  。

注意:转Unicode后,要在css用的时候把前面的u去掉,css样式才能识别出来@

dedecms的自定义表单信息过滤,电话+邮箱验证有效性

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

DEDE模板标签调用str_replace()替换函数,栏目替换,字段替换

str_replace() 函数:使用一个字符串替换字符串中的另一些字符。
举个例子:
[field:sitepath function=’str_replace(“{cmspath}”,”http://localhost/”,@me) /] 
实际上是查找内容中指定的部分然后进行替换,上面是DEDE中的应用方法,第2个双引号实际是替换的内容,这里是http://localhost/
上面标签的作用就是查找内容中的{cmspath}并替换为 http://localhost/ ,实际上也就是去掉。
str_replace() 还有一个参数count ,是替换的次数,
语法为str_replace(find,replace,string,count)
所以我们可以引申出很多应用方法了。
比如下面的标签都可以应用
[field:info/] 
[field:arcurl/]
[field:typedir/] 
举个例子
[field:title function=’str_replace(“aaa”,”bbb”,@me)/]
[field:title function=’str_replace(“测试”,”test”,@me)/]
查找标题中的aaa替换成bbb,
但下面这个比较常用,主要应用于二三级栏目嵌套调用中
[field:typedir function=’str_replace(“{cmspath}”,””,@me)’/]