六、为商品增加拓展分类 1、商品拓展分类的作用就是为了是用户快速的找到自己想要的商品,所以可以为一件商品增加多种分类。比如苹果耳机,可以分类为手机、手机配件、耳机等。这都可以通过拓展分类来实现。 2、首先为拓展分类创建一张单独的表,因为有些商品有很多分类而有些商品只有一个分类,如果在商品表增加字段,由于商品表数据较多,查询起来会降低查询速度,而查询分类少的商品时,字段为空的内容也会被查询,就造成了资源的浪费,所以可以创建一个单独的表来保存拓展分类的信息。 3、在模板文件中增加一个新的提交表单,名字为拓展分类,可以将模板之前的表单复制粘贴过来,然后修改名字,将必选选项的星号*去掉。因为一个商品可以有多个拓展分类,所以应该增加一个按钮,点击按钮时增加一个拓展分类的选择框。而按钮必须绑定事件才能触发,所以应该在模板文件中引入juqery代码,然后绑定点击事件,事件为增加下一个元素。 4、在数据入库时发现,字段列表中要求有商品ID的字段,而商品ID只有在商品提交之后才会生成,所以应该在模型中添加钩子后置函数,用来获取入库以后的商品ID,获取之后进行验证,通过验证将数据写入数据库。 5、数据入库完成后,应该完成列表首页的展示,在控制器中调用方法来获取商品的数据,然后在模型中完善这个方法。在查询数据的时候,应该避免获取到已下架的商品。所以模型中应该增加一个判断,isdel字段为0时表示已下架,所以在编写SQL语句的时候,应该增加where子句进行判断。 6、然后将商品模板复制粘贴为列表显示的模板文件,继承模板文件后,修改其中的资源地址为__PUBLIC_ADMIN__前缀,然后显示商品列表。地址为index。 七、分页显示出商品信息1、首先确定TP中分页的步骤。定义每页显示的数据条数、获取到总数据、调用TP中的方法来获取分页导航数据、然后将导航数据赋值给模板、获取当前页码并根据页码和显示的条数来计算偏移量。 2、确定分页步骤之后,在模型中增加相应的方法来实现分页。定义一个变量来确定每页显示的数据条数,由于前期数据较少所以显示的条数也控制少一点。然后调用count方法来获取数据,在获取数据时要主注意,不能在列表中显示已下架的商品,所以编写SQL语句时应该增加一个where子句进行判断,即isdel字段不能等于0。因为数据是直接在模板文件循环遍历出来的,所以显示数据这一步暂时无法完成。然后通过get提交的数据确定当前的页码,然后调用where、page、select方法的连贯操作来获取具体的数据。方法最后返回数据时,应该将数据和分页的导航数据都返回给方法。 3、方法完成后在模板中将分页信息显示出来,然后将volist标签的名字改为与方法返回值中的变量名一致。通过index页面查看后完成,分页的样式可以通过后期的修改。 八、商品列表搜索功能1、在商品列表的显示中,列表上方有搜索功能,应该将其完善。搜索有分类搜索、是否上下架搜索、是否新品热销搜索和关键字搜索,应该分几种情况进行完善。 2、首先完善通过分类搜索,首先调用模型来获取数据,然后在模板将数据显示出来。在通过分类搜索时,搜索顶级分类时,其分类下的所有子分类也应该被显示出来。所以应该在模型中添加方法来获取子分类的ID并将其格式化。测试发现,在每一次搜索时会显示出错误的分类信息,原因是之前获取数据时,将分类信息设置为了静态的变量,所以每次调用时数据不会被清空,导致了显示错误的分类信息。所以应该在之前的获取分类的方法中增加一个判断,同时给方法增加一个参数,默认为true,方法自调用时不执行判断就不会重置变量,在搜索时调用给定参数为false,将数据重置。完成后分类列表显示无异常。 3、然后编写搜索时需要的SQL语句,编写过程中最重要的就是where子句的编写。在通过分类查询时,拓展分类下的商品也应该被搜索出来,所以在编写时也要考虑拓展分类的问题。 4、首先获取通过get提交的分类ID并获取到下面的所有子分类,将分类ID和子分类ID写入到数组中,并通过imploed方法,以逗号为炸开点将其转化为字符串格式。然后通过连贯操作获取到拓展分类下的商品ID,再将得到的数据通过imploed方法转换为字符串。然后拼接where子句,判断是否有拓展分类,如果有应该将拓展分类的ID也加入where子句中进行查询。测试后通过。 5、通过推荐状态进行搜索。在地址栏中发现推荐状态的字段信息为intro_type,所以可以通过这个值来判断搜索时选择的类型,并且限制只能通过这三种状态进行搜索并拼接where子句。 6、通过上下架状态进行搜索,在模板文件中找到上下架的value值并修改,通过get方法获取到提交过来的value值来进行where子句的拼接,然后组织SQL语句。 7、通过关键词搜索。在地址栏中找到关键字搜索提交的字段信息为keyword,然后通过get提交的数据进行where子句的拼接,然后组织SQL语句。 8、在搜索功能完成后,进入index页面测试,测试后发现,搜索完成后,无法显示用户搜索的内容,使用户可能不知道自己搜索的内容,所以要在搜索后,将用户搜索的内容固定在搜索框内。所以要在模板中通过eq标签增加判断,当通过get提交过来的数据相同时,相同的数据被选中。
|