2013-06-26 8 views
6

Czy istnieje linia kodu, której mogę użyć w sterowniku, który określa trasę bieżącej strony?Jak znaleźć trasę bieżącej strony?

Na przykład, chciałbym znaleźć trasę strony z adresem URL SEO https://example.com/desktops (powinno to zwrócić trasę product/category).

Podobnie, adres URL taki jak https://example.com/index.php?route=product/product&path=18&product_id=47 powinien zwrócić trasę jako product/product.

Odpowiedz

0

Odbywa się to poprzez odpytywanie tabeli url_alias dla określonego słowa kluczowego, aby dać Ci jedną z czterech identyfikatorami, które pochodzą ze standardowej konfiguracji (product_id, category_id, information_id i manufacturer_id) wraz z jego wartość id oddzielone =.

W twoim przykładzie na komputery stacjonarne będzie to coś w rodzaju category_id=20. Stamtąd trzeba wypracować drogę

można znaleźć dokładny sposób OpenCart robi to w pliku /catalog/controller/common/seo_url.php

0

EDIT:

W kontrolerze mamy $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

To nie zadziała dla słów kluczowych SEO –

+1

@Jay Gilford, to był błąd. Mam na myśli '_route_'. Widzę ten klucz w moim pliku var_export ($ _ REQUEST); w moim index.php –

+0

'_route_' poda ci słowo kluczowe, ale to wciąż nie dostarcza aktualnej trasy –

12

Aby być uczciwym, dobrym rozwiązaniem jest $this->request->get['route'];.

Aby złapać aktualną trasę, można użyć $this->request->get['route']; w pliku catalog/controller/common/header.php w funkcji index(). Header.php jest częścią praktycznie dowolnego wyjścia frontendowego (jak rozumiem, w tej chwili nie jesteś pewien, który kontroler jest używany w http://example.com/desktops, więc potrzebujesz odpowiedniego miejsca, w którym możesz uruchomić swój kod w każdym przypadku).

Moduł SEO nie wyłącza tej części obiektu zapytania . Należy również pamiętać, że w trakcie generowania kodu OpenCart tablica $_GET i tablica $this->request->get to nie to samo. Nie złapiesz aktualnej trasy (w formacie "ścieżka/kontroler/akcja") w superglobalnej tablicy php $ _GET, gdy działa moduł SEO, ale możesz go złapać dowolnym kontrolerem za pomocą tablicy $this->request->get przygotowanej dla ciebie przez OpenCart silnik.

Powiązane problemy