2013-06-26 2 views
6

C'è una riga di codice che posso usare nel controller che determina il percorso di una pagina corrente?Come trovare il percorso di una pagina corrente?

Ad esempio, mi piacerebbe trovare il percorso della pagina con l'url SEO https://example.com/desktops (questo dovrebbe restituire il percorso product/category).

Analogamente, l'URL come https://example.com/index.php?route=product/product&path=18&product_id=47 deve restituire il percorso come product/product.

risposta

0

Questo è fatto interrogando la tabella url_alias per la parola chiave specifica per darvi una delle quattro identificazioni che vengono con la configurazione standard (product_id, category_id, information_id e manufacturer_id) insieme con il suo valore id separati da un =.

Nel tuo esempio i desktop, sarebbe qualcosa di simile category_id=20. Da lì, è necessario lavorare fuori il percorso

È possibile trovare il modo esatto OpenCart fa questo nel file /catalog/controller/common/seo_url.php

0

EDIT:

Nel regolatore abbiamo $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

che non funziona per le parole chiave SEO –

+1

@Jay Gilford, è stato un errore. Intendo '_route_'. Vedo questa chiave nel mio var_export ($ _ REQUEST); nel mio index.php –

+0

'_route_' ti darà la parola chiave, tuttavia questo non fornisce ancora il percorso attuale –

12

Per essere onesti, la risposta giusta è $this->request->get['route'];.

Per intercettare il percorso corrente, è possibile utilizzare $this->request->get['route']; nel file catalog/controller/common/header.php nella funzione index(). Header.php è una parte di praticamente qualsiasi uscita frontend (mi pare di capire, in questo momento non si è sicuri di cosa controller viene utilizzato in http://example.com/desktops quindi è necessario posto giusto in cui è possibile eseguire il codice in ogni caso).

Il modulo SEO non disinserisce questa parte dell'oggetto richiesta. Inoltre, tieni presente che nel mezzo della generazione del codice OpenCart l'array $_GET e l'array $this->request->get non sono le stesse cose. Non si prenderà rotta corrente (in formato "percorso/regolatore/azione") in $ _GET superglobale array PHP quando il modulo SEO è in azione, ma si può prendere con qualsiasi controller utilizzando $this->request->get serie che è preparato per voi da OpenCart motore.