NC URL-ul în OpenCart 2

NC URL-ul în OpenCart 2

Acest articol se va uita la ceea ce se întâmplă atunci când CNC este pornit. Aceasta va permite dezvoltatorilor să înțeleagă mai bine cum funcționează OpenCart cu un URL și face să funcționeze în modificările, pentru a îmbunătăți munca CNC pentru a crea adăugările necesare.

Eu folosesc ocStore - versiunea rusă a OpenCart cu unele îmbunătățiri, cum ar fi modulul NC - SeoPro. Acest modul înlocuiește funcționalitatea standard a formării CNC în OpenCart motorului, elimină în primul rând duplicate și alte pagini. În continuare voi descrie activitatea NC pe baza acestui modul, deși principiul comun. Dacă utilizați versiunea normală OpenCart. ocStore în schimb - Te sfătuiesc să descărcați un modul gratuit SeoPro.


Fișierul de sistem \ framework.php creează un obiect de clasa Front:
El își păstrează său matrice addPreAction proprietatea de acțiune oficiale care trebuie să fie executate în mod automat după încărcarea tuturor bibliotecilor. Această matrice este stocată în sistemul de fișiere \ config \ catalog.php sau sistem \ config \ admin.php la admin. În versiunea pentru Frontend a conține o matrice
în cazul în care ultimul element este pornire /'.$ seo_type care cuprinde organizarea varianta selectată NC (numele controlerului).

Mai mult, în sistemul de fișiere \ framework.php există o metodă de apel expediere () Front Controllera:
care transmite pentru a efectua o acțiune (controlori), primul element al cărui este ControllerStartupRouter. care este transmis de configurare matrice de comandă $ configura cam> get ( „action_router“). Al doilea argument a trecut la acțiunea desprinderii o pagină de eroare în cazul în care, de exemplu, pagina pe care ați solicitat nu a fost găsit.
Metoda de expediere () frontal Controllera apare apel alternativ acțiunile de servicii care au fost transferate în prealabil și trebuie să fie numit cel mai recent Controlorul standard URL parsare care cuprinde stabilirea traseului.

Dar există o condiție - în cazul în care una dintre acțiunea a revenit în urma executării sale, iar rezultatul este un Acțiune obiect de clasă - acest rezultat va suprascrie efectul care a fost transferat la expedierea metodei () ca primul argument (de acțiune $ acțiune):
O execuție controlor de procesare a URL-ul NC, doar returnează rezultatul. Prin urmare, executarea ulterioară nu primește nici un argument acțiune $ (metoda de pornire pentru a efectua / router indicele controler de transmisie), iar controlerul / metoda a revenit după analizarii controlerul CNC sau un alt ControllerStartupSeoPro indicat pentru CNC.


Luați în considerare modul standard de a crea CNC când opțiunea «SeoPro» selectat.

Chemat controler ControllerStartupSeoPro din fișierul catalog \ controler \ pornire \ seo_pro.php
Prin crearea obiectului, proiectantul prin intermediul liniei
la $ proprietate cache_data deține o serie de toate valorile din url_alias tabelei bazei de date. Alias-urile sunt abreviate fraze care-cadru va căuta controler / metoda care urmează să fie efectuată.
Este indicele realizat) metoda (. în cazul în care într-un rând
Verifică dacă Parametrii GET «_route_». În cazul în care nu este - se valideaza metoda () realizată. sau pagina sau afișarea de eroare pagina principală. Dacă există - codul rulează pe. Și anume:
- Valoarea _route_ a URL-ul este stocat în $ route_ variabilă și, în același timp, în traseul $ cu eliminarea opțiunii de cerere de obiect.
linii
parametrii _route_ împărțit separatorul la o serie de valori ale planului:
și stocate într-o matrice $ piese.

luate în continuare ultimul element al șirului obținut Parametrii GET și folosind exploda () funcționează din nou script-ul încearcă să-l împartă în matrice de valori de separare (punct). Rezultatul este atribuit $ last_part variabila:
apoi conține matrice de siruri de caractere sunt adăugate la ceea ce a fost în părțile $ variabile pentru a elimina ultimul element al matrice ea. În exemplul nostru, o componentă coloană / monitor transformări recente nu se schimba piesele inițiale matrice $.

Mai târziu, în ciclu, o nouă matrice $ rânduri. în cazul în care sunt elementele cheie ale parametrilor GET, și valorile - aliasuri care corespund elementelor din tabelul url_alias. care au fost stocate în proprietatea constructorului $ cache_data. exemplu:

Mai mult, prezența șirului este verificată
componentă / monitor /
în calea $ variabila
în tabelul url_alias. În cazul nostru, nu va fi găsit, în caz contrar valoarea $ rândurile variabile ar fi rescrisă.

În orice caz, existența unor date în tabelul de alias, care poate fi verificată în condițiile următoare:
datele sunt convertite. În primul rând, în ciclul în forma
și apoi verifică dacă parametrul matrice category_id. ce înseamnă anumite rubrici de pagină. Dacă este așa, determină proprietățile $ this-> request-> get [ 'cale']. În exemplul nostru ar fi:
Această opțiune va fi utilizată în controlerul, care va fi numit (catalog \ controler \ produs \ category.php).

Teste suplimentare urmate de bloc care formează parametrul $ this-> request-> get [ „traseu“], care va consta dintr-un controler, indicele metoda (), care urmează să fie executat. În acest exemplu, produs / categorie.

Dacă valoarea este acolo, este trecut la obiectul de acțiune pentru a stoca și aminti în viitor:

Ei bine, atunci ce se întâmplă este ceea ce am scris la început - rezultatul apelului va suprascrie metoda de pornire / router indicele controler (). care a fost de a permite parsarea un URL fără a fi nevoie CNC traseu opțiune.

Ai nevoie de un site web? Doriți să oferim o cooperare? Contact - contact.