我正在为我的项目使用 Codeigniter。我需要得到这样的 URL 结构:
主产品页面
example.com/language-prefix/products/
按类别选择产品
example.com/language-prefix/products/category
按类别和子类别选择产品:
example.com/language-prefix/products/category/sub-category
在类别和子类别下选择特定产品:
example.com/language-prefix/products/category/sub-category/product-name
或仅在类别下
example.com/language-prefix/products/category/product-name
问题是-对此有什么好的解决方案?因为问题从这里开始:
example.com/language-prefix/products/category/what-ever
什么可以是产品或子类别以及如何决定 - 应该返回哪些数据和视图?
在我的数据库表结构中,产品和类别之间存在多对多关系。这意味着,可以将一种产品分配到多个类别。每个类别都有一个自引用的外键(父)。
也许我需要为产品添加类别设置一些限制?或指定一个主要类别或什么?
我有几个想法:
- 将类别/子类别和产品的每条路线保留在数据库中,例如:
/products/watches/for-men/ /products/watches/for-men/rolex-abc-whatever-product
等等等等。但是这个,我感觉可能会很慢。
- 制作一个简单的路线到产品控制器 -> 方法 view(),并在该方法中遍历所有通过的段以及何时到达
/产品/类别/什么
然后先检查是否存在这样的产品,如果是,则返回product_view和数据,如果没有,检查是否有这样的子类别,如果有,则返回产品网格,如果没有则返回404。
我假设一个简单的解决方案可能只是在 /products/ 之后保留所有类别和子类别并添加 category-id like
example.com/language-prefix/products/1-watches
example.com/language-prefix/products/2-for-men
但我希望有更好的解决方案。
我也想不通:
example.com/language-prefix/products/category/sub-category/product-name
我需要返回名为product-name 的产品并检查它是否在这两个类别下,例如 URL:
example.com/language-prefix/products/hello-kity/bla-bla/product-name
不会退回该产品。
有更好的/其他解决方案吗?