找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2209|回复: 0

[分享] dede地区联动搜索 彻底解决办法

[复制链接]
发表于 2018-7-29 09:09:34 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
本例以文章模型为列子
0 添加 联动类型 地区
1 plus/search.php
  1. <?php
  2. require_once(dirname(__FILE__)."/../include/common.inc.php");
  3. require_once(DEDEINC."/arc.searchview.class.php");
  4. $pagesize = (isset($pagesize) && is_numeric($pagesize)) ? $pagesize : 10;
  5. $typeid = (isset($typeid) && is_numeric($typeid)) ? $typeid : 0;
  6. $nativeplace = (isset($nativeplace) && is_numeric($nativeplace)) ? $nativeplace : 0;
  7. $channeltype = (isset($channeltype) && is_numeric($channeltype)) ? $channeltype : 0;
  8. $kwtype = (isset($kwtype) && is_numeric($kwtype)) ? $kwtype : 1;
  9. $mid = (isset($mid) && is_numeric($mid)) ? $mid : 0;
  10. if(!isset($orderby)) $orderby=”;
  11. else $orderby = eregi_replace(‘[^a-z]‘,”,$orderby);
  12. if(!isset($searchtype)) $searchtype = ‘titlekeyword’;
  13. else $searchtype = eregi_replace(‘[^a-z]‘,”,$searchtype);
  14. if(!isset($keyword)) $keyword = ”;
  15. $oldkeyword = $keyword;
  16. $keyword = FilterSearch(stripslashes($keyword));
  17. //查找栏目信息
  18. if(empty($typeid))
  19. {
  20.     $typenameCacheFile = DEDEROOT.’/data/cache/typename.inc’;
  21.     if(!file_exists($typenameCacheFile) || filemtime($typenameCacheFile) < time()-(3600*24) )
  22.     {
  23.         $fp = fopen(DEDEROOT.’/data/cache/typename.inc’, ‘w’);
  24.         fwrite($fp, "<"."?php\r\n");
  25.         $dsql->SetQuery("Select id,typename From `ym_arctype`");
  26.         $dsql->Execute();
  27.         while($row = $dsql->GetArray())
  28.         {
  29.             fwrite($fp, "\$typeArr[{$row['id']}] = ‘{$row['typename']}’;\r\n");
  30.         }
  31.         fwrite($fp, ‘?’.'>’);
  32.         fclose($fp);
  33.     }
  34.     //引入栏目缓存并看关键字是否有相关栏目内容
  35.     require_once($typenameCacheFile);
  36.     if(isset($typeArr) && is_array($typeArr))
  37.     {
  38.         foreach($typeArr as $id=>$typename)
  39.         {
  40.             $keywordn = str_replace($typename, ‘ ‘, $keyword);
  41.             if($keyword != $keywordn)
  42.             {
  43.                 $keyword = $keywordn;
  44.                 $typeid = $id;
  45.                 break;
  46.             }
  47.         }
  48.     }
  49. }
  50. $keyword = addslashes(cn_substr($keyword,30));
  51. if($cfg_notallowstr !=” && eregi($cfg_notallowstr,$keyword))
  52. {
  53.     ShowMsg("你的搜索关键字中存在非法内容,被系统禁止!","-1");
  54.     exit();
  55. }
  56. //if(($keyword==” || strlen($keyword)<0) && empty($typeid))
  57. //{
  58. //    ShowMsg(‘关键字不能小于2个字节!’,'-1′);
  59. //    exit();
  60. //}
  61. //检查搜索间隔时间
  62. $lockfile = DEDEROOT.’/data/time.lock.inc’;
  63. if(!file_exists($lockfile)) {
  64.     $fp = fopen($lockfile,’w');
  65.     flock($fp,1);
  66.     fwrite($fp,time());
  67.     fclose($fp);
  68. }
  69. //开始时间
  70. if(empty($starttime)) $starttime = -1;
  71. else
  72. {
  73.     $starttime = (is_numeric($starttime) ? $starttime : -1);
  74.     if($starttime>0)
  75.     {
  76.        $dayst = GetMkTime("2008-1-2 0:0:0") – GetMkTime("2008-1-1 0:0:0");
  77.        $starttime = time() – ($starttime * $dayst);
  78.   }
  79. }
  80. $t1 = ExecTime();
  81. $sp = new SearchView($typeid,$keyword,$orderby,$channeltype,$searchtype,$starttime,$pagesize,$kwtype,$mid,$nativeplace);
  82. $keyword = $oldkeyword;
  83. $sp->Display();
  84. //echo ExecTime() – $t1;
  85. ?>
复制代码

2 templets/default/search.htm
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>{dede:global.cfg_webname/}_搜索结果</title>
  6. <link href="{dede:global.cfg_templeturl/}/style/search.css" rel="stylesheet" type="text/css" media="screen" />
  7. </head>
  8. <body>
  9. <div class="header">
  10.     <div class="toplogo">
  11.         <h1><a href="{dede:global.cfg_cmsurl/}/">{dede:global.cfg_webname/}</a></h1>
  12.     </div>
  13.     <div class="searchform">
  14.       <form action="{dede:field name=’phpurl’/}/search.php" name="formsearch">
  15.         <div class="s1">搜索</div>
  16.         <div class="s2">
  17.            <input type="hidden" name="kwtype" value="0" />
  18.            <input name="keyword" type="text" class="search-keyword" id="search-keyword" value="{dede:global.keyword/}" />
  19. <input type=’hidden’ id=’hidden_nativeplace’ name=’nativeplace’ value=’0′ />
  20. <span id=’span_nativeplace’></span>
  21. <span id=’span_nativeplace_son’></span>
  22. <script language="javascript" type="text/javascript" src="{dede:global.cfg_indexurl/}/images/enums.js"></script>
  23. <script language=’javascript’ type=’text/javascript’ src=’{dede:global.cfg_indexurl/}/data/enums/nativeplace.js’></script>
  24. <script language="javascript" type="text/javascript">MakeTopSelect("nativeplace", 0);</script>
  25. <input type=’hidden’ name=’dede_addonfields’ value="nativeplace,stepselect">
  26.            <select name="searchtype" class="search-option" id="search-option">
  27.                <option value="titlekeyword" selected=’1′>智能模糊搜索</option>
  28.                <option value="title">仅搜索标题</option>
  29.            </select>
  30.           <button type="submit" class="search-submit">搜索</button>        
  31.         </div>
  32.         </form>
  33.         <div class="s3">
  34.             <a href="heightsearch.php">高级搜索</a>
  35.             <a href="{dede:global.cfg_cmsurl/}/">返回首页</a>
  36.         </div>
  37.     </div>
  38. </div>
  39. <div class="msgbar">
  40.     <p>
  41.         搜索 <strong class="fc_03c">{dede:global name=’keyword’/}</strong> 的结果
  42.     </p>
  43. </div>
  44. <div class="resultlist">
  45.    
  46. {dede:list perpage=’20′}
  47.     <div class="item">
  48.         <h3><a href="[field:arcurl/]" target="_blank">[field:title/]</a></h3>
  49.         <p class="intro">[field:description/]…</p>
  50.         <p class="info">
  51.             <small> 分类:</small><span> <a href="[field:typeurl/]" target="_blank">[field:typename/]</a></span>
  52.             <small>点击:</small><span> [field:click/]</span>
  53.             <small>日期:</small><span> [field:stime/]</span>
  54.         </p>
  55.         <p><span><a href="[field:arcurl/]" target="_blank">[field:arcurl/]</a></span></p>
  56.     </div>
  57. {/dede:list}
  58. </div>
  59. <div class="dede_pages">
  60.     <ul class="pagelist">
  61.         {dede:pagelist listsize=’5′/}  
  62.     </ul>
  63. </div><!– /pages –>
  64. <div class="othersearch">
  65.     <h2>相关搜索:</h2>
  66.     <ul>
  67.         {dede:likewords num=’8′/}
  68.     </ul>
  69. </div>
  70. <div class="footer">
  71.     <p class="link">
  72.         网站版权信息及免责声明
  73.     </p>
  74.     <!–
  75.         为了支持织梦团队的发展,请您保留织梦内容管理系统的链接信息.
  76.         我们对支持织梦团队发展的朋友表示真心的感谢!织梦因您更精彩!
  77.     –>
  78.     <p class="powered">
  79.         Powered by <a href="http://www.[url=http://bbs.piaoxian.net/forum-23-1.html]dedecms[/url].com" title="织梦内容管理系统(DedeCms)–国内最专业的PHP网站管理系统,轻松[url=http://bbs.piaoxian.net/]建站[/url]的首选利器。" target="_blank"><strong>Dede<span>CMS</span></strong></a> ? 2004-2008 DesDev Inc.
  80.     </p><!– /powered –>
  81.    
  82. </div>
  83. </body>
  84. </html>
复制代码

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-27 08:44 , Processed in 0.037189 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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