我正在创建一个电子商务站点,我的产品被分类(就像在任何其他电子商务系统中一样)。
问题是:不同的类别(及其产品)需要有不同的属性(比如电视的智能电视)。
因此,有人可以帮助我的一些产品过滤“理论”(数据库设计)的良好做法是什么?
我如何能够自动“构建”这些产品类别页面(自动构建前例的过滤器:在电视类别中,智能电视的开关,以及手机类别中的智能手机)。
谢谢你的帮助!
发布于 2014-12-28 03:50:28
大多数电子商务系统使用无限级别的类别树。
然后,在编辑产品时,使用复选框显示该树,然后单击要将此产品分配给的类别的复选框。
为此,您将需要表:产品、类别和category_has_product。因此,当您选中这些框时,所有这些类别都应该插入到该产品的category_has_product中。
然后在搜索时使用category_has_product连接产品,非常简单。
否则,如果您希望用户能够从树的末尾只选择一个类别,但是您希望能够在父类别中筛选产品,并将那些产品包含在您可以查看以下内容的子类中,那么理解起来就更复杂了,但是您可能会找到一些关于如何实现它的其他示例:
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
嵌套类别的要点是,您最终可能只在产品表上存储最终的category_id,但即便如此,您也可以在所有父类别的搜索结果中包含该产品。
因此,上述内容将涵盖“如何将产品按类别管理”。
至于链接:你可以在类别树中循环,打印你想要的链接和你想要的方式。
至于额外的过滤器,如TV类型(Smart或Not),您可以只在类别树中同时包含,而忘记向产品表单中添加附加字段,或者可以使用类似属性的更复杂的解决方案:
您将拥有表属性(id、name)和表attributes_value(id、attribute_id、value),然后在产品表单上使用"This tv is Smart“的静态复选框,然后循环到attributes表中,并有一个名为"Smart Tv”的属性,其值将为“是,不,可能等等”,因此您可以使用它来绘制动态下拉列表。
现在,如果您还想要属性的链接,那么您只需创建一个指向类别的链接,以及指向具有特定值的特定属性的链接。示例/category.php?id=2&attribute=1&attribute_value=5
另外,如果您想要一些seo友好的urls,只需在类别表和attribute_values表中添加一个“段塞”字段,然后重写urls。
你也可以看看Prestashop,它使用或使用了这里讨论的一些东西,即使现在它变得非常复杂和非常痛苦,但是可能会提供一些有用的信息。
https://stackoverflow.com/questions/24383801
复制相似问题