QQ登录

只需一步,快速开始

 找回密码
 加入一朵

QQ登录

只需一步,快速开始

查看: 1777|回复: 0
打印 上一主题 下一主题

帝国CMS的搜索表单语法规则(全网最全)

[复制链接]
  • TA的每日心情
    开心
    2022-4-25 19:25
  • 签到天数: 562 天

    [LV.9]以坛为家II

    跳转到指定楼层
    1
    丨一朵丶小扇 发表于 2014-6-29 21:33:01 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    帝国CMS提供了比较强大的搜索结果调用,你可以按照帝国cms搜索表单制作语法,制作出满足你需求的大部分搜索功能。如果你在你的数据库中有自定义字段,那么可能需要改一下e/search/index.php对form表单提交的数据处理,可以参考文章最后提供的例子。先来看看搜索表单变量说明:

    变量名说明例子
    搜索表单提交地址POST方式:/e/search/index.php<form name="searchform" method="post" action="/e/search/index.php">
    GET方式:/e/search/?searchget=1/e/search/?searchget=1&keyboard=帝国&show=title
    keyboard搜索关键字变量<input name="keyboard" type="text">
    show搜索字段变量(多个字段用","格开。搜索字段必须是后台模型开启搜索的字段)<input type="hidden" name="show" value="title,newstext">
    classid搜索栏目ID(不设置为不限,多个栏目可用","格开,设置父栏目会搜索所有子栏目)<input type="hidden" name="classid" value="1">
    ztid搜索专题ID(不设置为不限,多个专题可用","格开)<input type="hidden" name="ztid" value="1">
    tbname按数据表搜索(需与搜索模板ID结合)<input type="hidden" name="tbname" value="news">
    tempid所用搜索模板ID(一般跟按表搜索结合使用)<input type="hidden" name="tempid" value="1">
    starttime与endtime分别为搜索发布起始时间与结束时间的信息(不填为不限.格式:2008-02-27)<input name="starttime" type="text" value="0000-00-00" size="12">
    <input name="endtime" type="text" value="0000-00-00" size="12">
    startprice与endprice分别为商品价格的起始价格与结束价格(不填为不限)<input name="startprice" type="text" value="0" size="6">
    <input name="endprice" type="text" value="0" size="6">
    搜索特殊字段id : 按信息ID搜索
    keyboard : 按关键字搜索(可实现按tags列出信息)
    userid : 按发布者用户ID搜索
    username : 按发布者用户名搜索
    <input type="hidden" name="show" value="keyboard">
    member值为0则不限制
    值为1则为只搜索会员投稿的信息
    值为2则为只搜索管理员增加的信息
    <input type="hidden" name="member" value="1">
    orderby排序字段:
    0:按发布日期(默认)
    1:按ID
    2:按评论数
    3:按浏览人气
    4:按下载数
    <input type="hidden" name="orderby" value="1">
    myorder排序方式:
    0:倒序排列(默认)
    1:顺序排列
    <input type="hidden" name="myorder" value="1">
    andor设置多条件查询之间关联关系,有两种:
    or : 或者的关系(默认)
    and : 并且的关系
    <input type="hidden" name="andor" value="and">
    hh逻辑运算联结符变量:
    LT : 小于
    GT : 大于
    EQ : 等于
    LE : 小于等于
    GE : 大于等于
    NE : 不等于
    IN : 包含(搜索关键字用空格隔开每个值)
    BT : 范围,两个值之间(搜索关键字用空格隔开两个值)
    LK : 模糊查询(默认)
    <input type="hidden" name="hh" value="LK">

    下面是一个例子:
    1. <table width="320" border="0" cellspacing="1" cellpadding="3">
    2. <form name="searchform" method="post" action="/e/search/index.php">
    3. <tr>
    4.    <td>关键字:<input name="keyboard" type="text" size="10"></td>
    5.    <td>范围:
    6.       <select name="show">
    7.       <option value="title">标题</option>
    8.       <option value="smalltext">简介</option>
    9.       <option value="newstext">内容</option>
    10.       <option value="writer">作者</option>
    11.       <option value="title,smalltext,newstext,writer">搜索全部</option>
    12.        </select></td>
    13. </tr>
    14. <tr>
    15.    <td>栏 目:
    16.       <select name="classid">
    17.       <option value="0">搜索全部</option>
    18.       <option value="1">新闻中心</option>
    19.       <option value="4">技术文档</option>
    20.       <option value="22">下载中心</option>
    21.        </select> </td>
    22.    <td><input type="submit" name="submit" value="搜索"></td>
    23. </tr>
    24. </form>
    25. </table>
    复制代码
    搜索表单多条件并列搜索语法说明

    1. 多字段并列搜索:有"字符串"与"数组"两种传递方式

    字符串传递为例子:
    1. <input type="hidden" name="hh" value="LK">
    2. <input type="hidden" name="show" value="title,writer">
    3. <input type="hidden" name="keyboard" value="标题,作者">
    复制代码
    说明:上面为模糊查询title字段包含"标题"字符或者writer字段包含"作者"的信息

    数组传递为例子:
    1. <input type="hidden" name="hh" value="LK">
    2. <input type="hidden" name="show[]" value="title">
    3. <input type="hidden" name="keyboard[]" value="标题">
    4. <input type="hidden" name="show[]" value="writer">
    5. <input type="hidden" name="keyboard[]" value="作者">
    复制代码
    上面为模糊查询title字段包含"标题"字符或者writer字段包含"作者"的信息

    2. 多逻辑运算联结符并列搜索

    字符串传递为例子:
    1. <input type="hidden" name="hh" value="LK,EQ">
    2. <input type="hidden" name="show" value="title,writer">
    3. <input type="hidden" name="keyboard" value="标题,作者">
    复制代码
    说明:上面为模糊查询title字段包含"标题"字符或者writer字段等于"作者"的信息

    字符串传递为例子:
    1. <input type="hidden" name="show[]" value="title">
    2. <input type="hidden" name="hh[]" value="LK">
    3. <input type="hidden" name="keyboard[]" value="标题">
    4. <input type="hidden" name="show[]" value="writer">
    5. <input type="hidden" name="hh[]" value="EQ">
    6. <input type="hidden" name="keyboard[]" value="作者">
    复制代码
    说明:上面为模糊查询title字段包含"标题"字符或者writer字段等于"作者"的信息。

    一个实际例子

    表单设计如下:
    1. <form action="[!--news.url--]e/search/index.php" method="post" name="searchform" id="searchform">
    2. <select name="classid" id="" style="display:none">
    3.         <option value="59,60,78,79,80,81" selected>全部</option>
    4. </select>
    5. <input type="hidden" name="show" value="title,myarea,mycategory,smalltext" />
    6. <input type="hidden" name="tempid" value="1" />
    7. <table width="100%" cellspacing="0" cellpadding="0" border="0">
    8.         <tbody>
    9.                 <tr class="even">
    10.                         <td style=" text-align:left;">地区:
    11.                 <select name="area" id="">
    12.                         <option value="">不限</option>
    13.                         <option value="香洲">香洲</option>
    14.                         <option value="吉大">吉大</option>
    15.                         <option value="拱北">拱北</option>
    16.                         <option value="新香洲">新香洲</option>
    17.                         <option value="前山">前山</option>
    18.                         <option value="南屏">南屏</option>
    19.                         <option value="金湾">金湾</option>
    20.                         <option value="斗门">斗门</option>
    21.                 </select>
    22.                
    23.                 &nbsp;&nbsp;房型:
    24.                 <select name="category" id="">
    25.                         <option value="">不限</option>
    26.                         <option value="58_0">一房</option>
    27.                         <option value="58_1">二房</option>
    28.                         <option value="58_2">三房以上</option>
    29.                         <option value="58_3">公寓</option>
    30.                         <option value="58_4">写字楼</option>
    31.                         <option value="58_5">商铺</option>
    32.                         <option value="58_6">厂房</option>
    33.                 </select>
    34.                         </td>
    35.                         <td>&nbsp;</td>
    36.                 </tr>
    37.                 <tr class="even">
    38.                         <td style=" text-align:left;">时间范围: <input name="starttime" type="text" value="2008-08-08" size="12" onclick="calendar.show(this);" /> 到 <input type="text" id="todayButton" name="todayButton" value="" size="12" onclick="calendar.show(this);" /> (不选则不限时段)</td>
    39.                         <td>&nbsp;</td>
    40.                 </tr>
    41.                 <tr class="even">
    42.                         <td style=" text-align:left;"><input name="keyboard" type="text" size="32" value="" id="keyboard" class="inputText" /> &nbsp;&nbsp;<input type="submit" name="Submit22" value=" 搜 索 " /></td>
    43.                         <td></td>
    44.                 </tr>
    45.         </tbody>
    46. </table>
    47. </form>
    复制代码
    为了可以加入对自定义字段myarea与mycategory的搜索,我们需要对e/search/index.php进行适当改写:
    1. $keyboard=$_POST['keyboard'].','.$_POST['area'].','.$_POST['category'];
    2. // 这是原来的:$keyboard=$_POST['keyboard'];
    3. $keyboardone=0;
    4. if(is_array($keyboard))
    5. {}
    6. elseif(strstr($keyboard,','))
    7. {
    8.         $keyboard=explode(',',$keyboard);
    9. }
    10. else
    11. {
    12.         $keyboard=trim($keyboard);
    13.         $len=strlen($keyboard);
    14.         if($len<$public_r[min_keyboard]||$len>$public_r[max_keyboard])
    15.         {
    16.                 printerror("MinKeyboard",$getfrom,1);
    17.         }
    18.         $keyboardone=1;
    19. }
    复制代码
    OK,完成。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 转播转播
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入一朵

    本版积分规则

    GMT+8, 2024-11-25 20:47

    © 2001-2011 Powered by Discuz! X3.2. Theme By Yeei!

    快速回复 返回顶部 返回列表