ecshop细究


今天看了下ecshop搜索这块,前台数据一直到后台查询再返回前台。大致是这么个过程,首先,在index.dwt文件内,body下面引入了

<!-- #BeginLibraryItem "/library/page_header.lbi" --><!-- #EndLibraryItem -->

即可重用的搜索模块代码,拼接在body下面,我们可以进入这个文件看看,在50行左右

<div class="serach-box"><form id="searchForm" name="searchForm" method="get" action="search.php" onSubmit="return checkSearchForm()" class="f_r"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td width="135"><input name="keywords" type="text" id="keyword" value="{$search_keywords|escape}" class="B_input"  /></td><td><input name="imageField" type="submit" value="搜索" class="go" style="cursor:pointer;" /></td></tr></table></form>
</div>

这样就很清楚了,url对应的是根目录下php,文本框里面设置

<span style="font-size:18px;">value="{$search_keywords|escape}"</span>

即保留搜索值,form表单里面的action指向php,但是在检索之前,也即表单提交的同时,通过checkSearchForm()验证输入合法,然后我们到根目录下search.php中看看,代码非常多,需要检索的东西有点复杂,但可以找到通过表单提交过来的keywords

/* 初始化搜索条件 */$keywords  = '';$tag_where = '';if (!empty($_REQUEST['keywords'])){$arr = array();if (stristr($_REQUEST['keywords'], ' AND ') !== false){/* 检查关键字中是否有AND,如果存在就是并 */$arr        = explode('AND', $_REQUEST['keywords']);$operator   = " AND ";}elseif (stristr($_REQUEST['keywords'], ' OR ') !== false){/* 检查关键字中是否有OR,如果存在就是或 */$arr        = explode('OR', $_REQUEST['keywords']);$operator   = " OR ";}elseif (stristr($_REQUEST['keywords'], ' + ') !== false){/* 检查关键字中是否有加号,如果存在就是或 */$arr        = explode('+', $_REQUEST['keywords']);$operator   = " OR ";}else{/* 检查关键字中是否有空格,如果存在就是并 */$arr        = explode(' ', $_REQUEST['keywords']);$operator   = " AND ";}$keywords = 'AND (';$goods_ids = array();foreach ($arr AS $key => $val){if ($key > 0 && $key < count($arr) && count($arr) > 1){$keywords .= $operator;}$val        = mysql_like_quote(trim($val));$sc_dsad    = $_REQUEST['sc_ds'] ? " OR goods_desc LIKE '%$val%'" : '';$keywords  .= "(goods_name LIKE '%$val%' OR goods_sn LIKE '%$val%' OR keywords LIKE '%$val%' $sc_dsad)";$sql = 'SELECT DISTINCT goods_id FROM ' . $ecs->table('tag') . " WHERE tag_words LIKE '%$val%' ";$res = $db->query($sql);while ($row = $db->FetchRow($res)){$goods_ids[] = $row['goods_id'];}$db->autoReplace($ecs->table('keywords'), array('date' => local_date('Y-m-d'),'searchengine' => 'ecshop', 'keyword' => addslashes(str_replace('%', '', $val)), 'count' => 1), array('count' => 1));}$keywords .= ')';$goods_ids = array_unique($goods_ids);$tag_where = implode(',', $goods_ids);if (!empty($tag_where)){$tag_where = 'OR g.goods_id ' . db_create_in($tag_where);}}

在上面的代码中通过

<span style="font-size:18px;">$_REQUEST['keywords']</span>

来获取关键值,之后进行一些其他处理,然后拼接sql语句,查询返回的结果通过

$smarty->assign('goods_list', $arr);

注入值,最后在search.dwt文件中还原整个页面

<span style="font-size:18px;"><!-- {if $action eq "form"} --></span>

这里我也不是太清楚,网上搜了下,没有相关的回答,大体上就是这样注入数据,仔细看看会发现嵌套使用蛮多的,search.dwt文件里面表单也会调用search.php文件,然后不断循环,我就感觉这样很复杂,模块化并不好。

转载于:https://www.cnblogs.com/yefengCrazy/p/5636616.html

ECshop--搜索模块细究相关推荐

  1. php %3ch1%3e字体,phpWebSite搜索模块跨站脚本执行漏洞

    受影响系统: Appalachian State Universit phpWebSite 1.4.0 描述: BUGTRAQ ID: 27090 phpWebSite是一款网站内容管理系统(CMS) ...

  2. 58 同城 iOS 客户端搜索模块组件化实践

    [编者按]58 同城 App 自从 1.0 版本开始,便已经提供了搜索功能.随着版本的迭代.业务的复杂,搜索框架也在不断受到挑战.诸如代码不能复用.耦合度高.业务功能接入成本高等问题日积月累,成为需要 ...

  3. java电商商品搜索_Java生鲜电商平台-搜索模块的设计与架构

    说明:搜索模块针对的是买家用户,在找菜品找的很费劲下的一种查询方面.目前也是快速的检索商品. 对于移动端的APP买家用户而言,要求的速度在3秒内完成.支持模糊查询,由于业务实战表面,整个搜索频率不到1 ...

  4. 电商平台-搜索模块的设计与架构

    说明:搜索模块针对的是买家用户,在找菜品找的很费劲下的一种查询方面.目前也是快速的检索商品. 对于移动端的APP买家用户而言,要求的速度在3秒内完成.支持模糊查询,由于业务实战表面,整个搜索频率不到1 ...

  5. 魔众文章投稿系统 v1.3.0 菜单快捷搜索 模块市场升级

    魔众文章投稿系统是一个多用户文章管理系统,支持用户文章投稿.文章审核,通过评论.打赏等模块可以轻松支持多种用户营销功能. 魔众文章投稿系统发布v1.3.0版本,新功能和Bug修复累计7项,菜单快捷搜索 ...

  6. python gridsearch_Python超参数自动搜索模块GridSearchCV上手

    1. 引言 当我们跑机器学习程序时,尤其是调节网络参数时,通常待调节的参数有很多,参数之间的组合更是繁复.依照注意力>时间>金钱的原则,人力手动调节注意力成本太高,非常不值得.For循环或 ...

  7. 医疗项目的一个讲解(医疗项目)搜索模块 药品添加模块 订单生成 注册模块 支付模块

    架构: 我们这个项目是由Maven搭建的项目,前后端分离,使用的springcloud微服务架构,结合了springboot搭建.前台页面使用了VUE,持久层用的是Mybatis框架,图片上传使用的f ...

  8. 电商项目商品搜索模块 - ESik分词器安装

    2019独角兽企业重金招聘Python工程师标准>>> 洋鼹鼠-满足国人一切海外需求! 洋鼹鼠PC端搜索商品 com.ningpai.site.goods.controller.Go ...

  9. ecshop 搜索热词推荐_多多搜索自定义关键词推广的基础点:如何选对致命的关键词...

    很多商家可能会疑惑我为什么不讲点击率,点击率固然重要,但其实多多搜索是围绕关键词展开的.正所谓万丈高楼平地起,关键词才是多多搜索的基础,没有这个基础,买家都搜不到你,或者搜到了却不是精准人群,点击率也 ...

最新文章

  1. 在写游戏时钟类时,应确保时钟的计算是以某个固定的CPU为标准的
  2. 开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4
  3. 从源码分析DEARGUI之add_label_text
  4. 3亿美元,腾讯第三次领投行业AI独角兽明略,这次还有淡马锡领投,快手跟投...
  5. L3-015 球队“食物链”(dfs)
  6. 汽车abs matlab仿真模糊pid控制
  7. 关掉windows自动更新
  8. C语言面试题分享(3)
  9. 关于错误 1 error C4996: 'getch': The POSIX name for this item is deprecated.问题解决方式
  10. 这些Intel Atom处理器千万别升Windows 10创意者更新:不兼容
  11. 删除Windows Service
  12. 我使用的Chrome插件列表
  13. 编程 态度目标_对目标持开放态度,从而推动事业发展
  14. 【结巴分词】浅谈结巴分词算法原理
  15. 逻辑回归(Logistic Regression)学习笔记
  16. Java实现Unicode编码和中文互转
  17. 视频教程_Mastercam2017车削视频教程,数控车床编程视频教程,vericut车床仿真视频...
  18. 电子签名、数字签名、数字证书、电子签章、电子印章的概念和区别
  19. 交换机crc错误是什么意思_OSN1800设备LDX对接S9706交换机,交换机持续有CRC错误告警...
  20. stm32 步进电机控制,S曲线加减速,匀加速运动

热门文章

  1. python创造者_python 设计模式-建造者模式
  2. 品牌网络推广方案浅析在编写文章标题时都有什么技巧?
  3. 长沙网络推广浅析新站怎么做会对排名提升更有帮助?
  4. 2019计算机科学与技术全日制调济,华侨大学2019计算机科学与技术学院非全日制考研调剂信息(第二批)...
  5. startuml如何画流程图_因为流程图没画好SCI被拒稿!看完师姐的攻略后我被吊打了!...
  6. vb串口 任意波特率_C#与单片机串口通讯,实现简单的计数功能
  7. ubuntu mysql 驱动_怎么在Ubuntu下为MySQL添加ODBC驱动?
  8. 开发日记-20190528 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》.desktop创建
  9. leetcode 231. Power of Two
  10. leetcode 349. Intersection of Two Arrays