magento -- 按某个属性排序上的一个尝试

简介:

Magento的属性可以用来放在产品列表页给产品进行排序,要用来排序的属性只需要在后台属性管理的地方选择应用于排序,默认情况下是name和price这两个属性可以在前台用来排序(Position是例外)。

那么现在有个简单的尝试,就是新增一个属性,只允许填写数字,然后前台的产品可以按照数字的大小来对产品进行排序。看起来很合理的需求,尝试起来却遇到了麻烦。

首先要决定这个属性的输入类型,magento允许的输入类型如下图所示,看上去既能手动输入又能限制输数字的就只能是文本框了。

所以先尝试了用文本框输入类型,然后限制只能输入整数,如下图

    

新增这个属性后,选择将这个属性应用于列表页的排序,然后给几个产品的这个属性分别赋不同的值(数字),现在前台就可以尝试用这个属性来排序了。

      

问题来了,当我按序号降序排列时,序号为96的产品确实排在序号为97的产品的后面,但却同时发现原本应该排在最前面的序号为198的产品却排在了后面,甚至序号为20的产品都在它的前面,这是怎么回事?

检查数据库后发现,凡是文本框类型的属性,在数据库中保存的都是varchar类型的数据,限制输入整数也只是在填写该属性时多了一层整数的验证,也就是说前台用这个属性进行排序时,实际上是一些字符串进行对比之后在排序,字符串排序会优先检查首字母,这也就是为什么降序时序号为20的产品会排在序号为198的产品的前面。

那么Magento就没有办法用某个属性的数值大小来对产品进行排序了吗?也不尽然,检查数据库的时候会发现价格属性在数据库里是按数字类型保存的(这个好像是理所当然的),前台自带的按价格排序也验证了价格类型的属性排序是确实是按数字的大小来排的,而不是比较字符串。

所以现在尝试新增一个属性,输入类型选择价格型,应用于前台排序,用来管理商品时填写某种需要用到的数字(虽然是价格型属性,但不是拿来填价格的)。同预料的一样,这样前台按这个新属性排序是就是完全按数字的大小来排了。

不知道以这种方式来实现需求是不是最合理的方式,对Magento来说,至少我自己先这么用着了。

 

目录
相关文章
|
12月前
|
C语言
【C语言】break 关键字详解
- `break` 关键字用于提前退出循环体或 `switch` 语句的执行。 - 在 `for`、`while` 和 `do-while` 循环中,`break` 可以帮助程序在满足特定条件时退出循环。 - 在 `switch` 语句中,`break` 用于终止 `case` 代码块的执行,避免代码“穿透”到下一个 `case`。 - 注意 `break` 只会退出最内层的循环或 `switch` 语句,确保在嵌套结构中正确使用 `break` 以避免意外的控制流行为。
1231 2
|
10月前
|
JavaScript 开发工具 git
VanBlog:真的太丝滑啦,简洁实用优雅的个人博客系统,支持文章、评论、分类、标签一站式管理,赶紧上车
嗨,大家好,我是小华同学。VanBlog是一个基于Vue3、Vite、NaiveUI和TypeScript的开源博客系统,支持Markdown编辑,具备文章发布、评论、分类、标签、搜索等功能。界面简洁美观,响应式设计适用于各种设备。
242 6
VanBlog:真的太丝滑啦,简洁实用优雅的个人博客系统,支持文章、评论、分类、标签一站式管理,赶紧上车
|
10月前
|
图形学
Unity 获取鼠标位置下的UGUI或3D物体
本文总结了两种检测方法,分别用于UGUI和3D物体的检测。第一种方法`GetOverUIobj`专门用于检测鼠标悬停的UGUI元素,通过`GraphicRaycaster`实现。第二种方法`GetOverWordGameObject`则同时适用于UI和3D物体检测,利用`PhysicsRaycaster`进行射线检测。两者均返回悬停对象或null。
|
缓存 算法 应用服务中间件
nginx 反向代理 与缓存功能
nginx 反向代理 与缓存功能
|
Python
Python中使用默认参数(Default Arguments)
【7月更文挑战第24天】
436 1
|
存储 Cloud Native Go
云原生之使用docker部署Dochub文库系统
云原生之使用docker部署Dochub文库系统
1077 0
云原生之使用docker部署Dochub文库系统
|
消息中间件 运维 监控
阿里云中间件、aPaaS 产品与解决方案介绍|学习笔记
快速学习阿里云中间件、aPaaS 产品与解决方案介绍
1212 95
阿里云中间件、aPaaS 产品与解决方案介绍|学习笔记
|
机器学习/深度学习 人工智能 自然语言处理
谷歌开源最精确自然语言解析器SyntaxNet的深度解读:一次关键进步以及一个重要工具
自然语言理解研究中,如何处理语言歧义是个难题。 SyntaxNet 将神经网络和搜索技术结合起来,在解决歧义问题上取得显著进展:SyntaxNet 能像训练有素的语言学家一样分析简单句法。今天,谷歌开源了SyntaxNet,也发布了针对英语的预训练解析程序 Parsey McParseface。除了让更多人使用到最先进的分析技术之外,这次开源举措也有利于公司借助社区力量加快解决自然语言理解难题的步伐,惠及谷歌业务。
1139 0
谷歌开源最精确自然语言解析器SyntaxNet的深度解读:一次关键进步以及一个重要工具
|
Windows
2024最新Melodyne Studio 5.3.1 Windows版&Mac版
Melodyne Studio是一款专业音频编辑软件,由Celemony公司开发。
4559 0
|
小程序 安全 API
微信支付-全面详解(学习总结---从入门到深化)(上)
微信支付(https://pay.weixin.qq.com)是腾讯集团旗下中国领先 的第三方支付平台,一直致力于为用户和企业提供安全、便捷、专业的在线支付服务。
1330 0
微信支付-全面详解(学习总结---从入门到深化)(上)