現在のページのルートを決定するコントローラーで使用できるコード行はありますか?
たとえば、SEO url https://example.com/desktops
のページのルートを検索したいと思います(これにより、ルートproduct/category
が返されます)。
同様に、https://example.com/index.php?route=product/product&path=18&product_id=47
などのURLはルートをproduct/product
として返す必要があります。
正直なところ、正解は_$this->request->get['route'];
_です。
現在のルートをキャッチするために、index()
関数の_$this->request->get['route'];
_ファイルで_catalog/controller/common/header.php
_を使用できます。 _Header.php
_は、実質的にすべてのフロントエンド出力の一部です(私が理解しているように、現時点では、_http://example.com/desktops
_でどのコントローラーが使用されているかわからないため、どのような場合でもコードを実行できる適切な場所が必要です)。
SEOモジュールは、リクエストオブジェクトのこの部分の設定を解除しません。また、OpenCartコード生成の途中で、_$_GET
_配列と_$this->request->get
_配列は同じものではないことに注意してください。 SEOモジュールが動作しているときは、$ _ GETスーパーグローバルphp配列で現在のルート(「パス/コントローラー/アクション」形式)をキャッチしませんが、準備されている_$this->request->get
_配列を使用して任意のコントローラーでキャッチできますOpenCartエンジンによるあなたのために。
これは、url_alias
テーブルに特定のキーワードを照会して、標準セットアップに付属する4つのID(product_id
、category_id
、information_id
、およびmanufacturer_id
)のいずれかと、=
で区切られたID値を取得することによって行われます。
デスクトップの例では、category_id=20
のようになります。そこから、ルートを決める必要があります
OpenCartがこれを行う正確な方法は、ファイル/catalog/controller/common/seo_url.php
にあります。
編集:
コントローラには$this->request->get['route']
があります。
seo_url.php:
if (isset($this->request->get['product_id'])) {
$this->request->get['route'] = 'product/product';
} elseif (isset($this->request->get['path'])) {
$this->request->get['route'] = 'product/category';
} elseif (isset($this->request->get['manufacturer_id'])) {
$this->request->get['route'] = 'product/manufacturer/info';
} elseif (isset($this->request->get['information_id'])) {
$this->request->get['route'] = 'information/information';
}