2013-06-26 12 views
6

現在のページのルートを決定するコントローラで使用できるコード行がありますか?現在のページのルートを見つけるには?

たとえば、SEO URL https://example.com/desktops(これはルートproduct/categoryを返す必要があります)のページのルートを検索したいと思います。

同様に、https://example.com/index.php?route=product/product&path=18&product_id=47のようなURLは、product/productとしてルートを返す必要があります。

答えて

0

これは、あなたに=で区切って、それのid値とともに標準セットアップ(product_idcategory_idinformation_idmanufacturer_id)が付属して4つのIDの1を与えるために、特定のキーワードについてurl_aliasテーブルを照会することによって行われます。

デスクトップの例では、category_id=20のようになります。そこから、あなたはあなたがファイルにOpenCartはこれを行い、正確な方法を見つけることができますルート

をうまくする必要が/catalog/controller/common/seo_url.php

0

EDIT:コントローラで

たちは$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'; 
} 
+1

SEOのキーワードでは動作しません。 –

+1

@Jay Gilford、間違いでした。私は '_route_'を意味します。私はこのキーを私のvar_export($ _REQUEST)に見ます。私のindex.phpに –

+0

'_route_'はそれらのキーワードを与えますが、これはまだ実際のルートを提供しません –

12

正直に言うと、正しい答えが$this->request->get['route'];です。

index()ファンクションのcatalog/controller/common/header.phpファイルに現在のルートをキャッチするには、$this->request->get['route'];を使用できます。 Header.phpは実際にフロントエンドの出力の一部です(私は理解していますが、今ではどのコントローラがhttp://example.com/desktopsで使用されているかわかりませんので、コードを実行できる正しい場所が必要です)。

SEOモジュールは、のリクエストオブジェクトのこの部分を設定解除しません。また、OpenCartコード生成の途中で$_GET配列と$this->request->get配列は同じものではないことに注意してください。 SEOモジュールが動作しているときは、$ _GET superglobal PHP配列で現在の経路( "path/controller/action"形式)をキャッチしませんが、OpenCartによって用意された$this->request->get配列を使用して任意のコントローラでキャッチできますエンジン。

関連する問題