プロジェクトに 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
製品またはサブカテゴリになる可能性があるものと、その決定方法 - どのデータとビューを返す必要があるか?
私の DB テーブル構造では、製品とカテゴリの間に多対多の関係があります。つまり、1 つの製品を複数のカテゴリに割り当てることができます。すべてのカテゴリには、自己参照型の外部キー (親) があります。
商品のカテゴリ追加に制限が必要かも?または、メイン カテゴリを指定するか、または何を指定しますか?
私にはいくつかのアイデアがあります:
- カテゴリ/サブカテゴリと製品のすべてのルートを DB に保持します。例:
/products/watches/for-men/ /products/watches/for-men/rolex-abc-whatever-product
などなど。しかし、これは非常に遅くなる可能性があると感じています。
- Products コントローラ -> メソッド view() への簡単なルートを作成し、メソッド内で渡されたすべてのセグメントを通過し、
/products/category/なんでも
最初にそのような製品が存在するかどうかを確認し、true の場合は product_view とデータを返し、そうでない場合はそのようなサブカテゴリがあるかどうかを確認し、存在する場合は製品グリッドを返すか、存在しない場合は 404 を返します。
簡単な解決策は、 /products/ の後にすべてのカテゴリとサブカテゴリを保持し、次のようなカテゴリ ID を追加することだと思います
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 という名前の製品を返し、それらの 2 つのカテゴリの下にあるかどうかを確認する必要があるため、たとえば次の URL を使用します。
example.com/language-prefix/products/hello-kity/bla-bla/製品名
その製品を返品しません。
より良い/他の解決策はありますか?