Post by rikart » Tue Jul 02, 2013 9:26 pm

Salutare!

Sunt nou pe-aici, dar si la inceput cu Opencart.
Am o nelamurire vis-a-vis de cum pot sa fac sa nu mai apara in URL-ul unei pagini de produs parametrii unei sortari.
Mai concret, daca se face o sortare pe o pagina cu produse si dupa aceea se alege un produs, in URL-ul paginii cu produsul respectiv apar si parametrii sortarii - practic, acesti parametrii se adauga automat in coada URL-ului.

In loc sa fie URL curat, adica format din categorie/nume-produs, practic, URL-ul este ceva de forma categorie/nume-produs?sort=p.price&order=ASC

Cum se pot scoate parametrii respectivi?...exista un modul care face asta sau trebuie modificat ceva in cod?
Astept raspunsurile si sugestiile voastre.
Multumesc anticipat.

Spor la treaba!

Newbie

Posts

Joined
Tue Jun 25, 2013 7:51 pm

Post by robertiulianstoica » Wed Jul 03, 2013 5:42 am

Poti sa le ascunzi din clasa url, sa faci ca atunci cand le proceseaza si intalneste variabilele sort si order sa inlocuiasca cu '' nimic.

robertiulianstoica[at]gmail.com


New member

Posts

Joined
Tue May 07, 2013 8:42 pm

Post by rikart » Wed Jul 03, 2013 11:46 pm

Multumesc frumos pentru raspuns Robert, dar poti te rog sa detaliezi?
Adica, sa-mi explici exact ce si unde trebuie sa modific...dupa cum am mentionat, sunt incepator...

Newbie

Posts

Joined
Tue Jun 25, 2013 7:51 pm

Post by robertiulianstoica » Thu Jul 04, 2013 1:20 am

Tocmai am verificat ceea ce te-am sfatuit mai sus si nu merg.
Imi pare rau, dar pare ca nu prea ai cum sa le ascunzi, intrucat variabilele de sortare si ordonare sunt preluate pe get :(.
rikart wrote:Multumesc frumos pentru raspuns Robert, dar poti te rog sa detaliezi?
Adica, sa-mi explici exact ce si unde trebuie sa modific...dupa cum am mentionat, sunt incepator...

robertiulianstoica[at]gmail.com


New member

Posts

Joined
Tue May 07, 2013 8:42 pm

Post by rikart » Thu Jul 04, 2013 1:30 am

Exista sigur o modalitate de a le sterge, spun asta pentru ca pe toate site-urile vizitate si implementate pe Opencart nu apar parametrii respectivi.
Deci, cumva se sterg ei, numai ca nu stim noi...
Poate totusi ne explica cineva care s-a lovit de aceasta problema.

Newbie

Posts

Joined
Tue Jun 25, 2013 7:51 pm

Post by robertiulianstoica » Thu Jul 04, 2013 1:46 am

rikart wrote:Exista sigur o modalitate de a le sterge, spun asta pentru ca pe toate site-urile vizitate si implementate pe Opencart nu apar parametrii respectivi.
Deci, cumva se sterg ei, numai ca nu stim noi...
Poate totusi ne explica cineva care s-a lovit de aceasta problema.
Iti pot spune ce am reusit pana acum. In catalog/controller/common/seo_url.php am inlocuit urmatoarea functie:

Code: Select all

public function rewrite($link) {
		$url_info = parse_url(str_replace('&', '&', $link));
	
		$url = ''; 
		
		$data = array();
		
		parse_str($url_info['query'], $data);
		
		foreach ($data as $key => $value) {
			if (isset($data['route'])) {
				if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
					$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");
				
					if ($query->num_rows) {
						$url .= '/' . $query->row['keyword'];
						
						unset($data[$key]);
					}					
				} elseif ($key == 'path') {
					$categories = explode('_', $value);
					
					foreach ($categories as $category) {
						$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");
				
						if ($query->num_rows) {
							$url .= '/' . $query->row['keyword'];
						}							
					}
					
					unset($data[$key]);
				}
			}
		}
cu

Code: Select all

public function rewrite($link) {
		$url_info = parse_url(str_replace('&', '&', $link));
	
		$url = ''; 
		
		$data = array();
		
		parse_str($url_info['query'], $data);
		
		foreach ($data as $key => $value) {
			if (isset($data['route'])) {
				if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
					$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");
				
					if ($query->num_rows) {
						$url .= '/' . $query->row['keyword'];
						
						unset($data[$key]);
					}					
				} elseif ($key == 'path') {
					$categories = explode('_', $value);
					
					foreach ($categories as $category) {
						$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");
				
						if ($query->num_rows) {
							$url .= '/' . $query->row['keyword'];
						}							
					}
					
					unset($data[$key]);
				} elseif ($key == 'sort') {
					unset($data[$key]);
				} elseif ($key == 'order') {
					unset($data[$key]);
				} 
			}
		}
si asta

Code: Select all

if ($query->num_rows) {
					$url = explode('=', $query->row['query']);
					
					if ($url[0] == 'product_id') {
						$this->request->get['product_id'] = $url[1];
					}
					
					if ($url[0] == 'category_id') {
						if (!isset($this->request->get['path'])) {
							$this->request->get['path'] = $url[1];
						} else {
							$this->request->get['path'] .= '_' . $url[1];
						}
					}	
					
					if ($url[0] == 'manufacturer_id') {
						$this->request->get['manufacturer_id'] = $url[1];
					}
					
					if ($url[0] == 'information_id') {
						$this->request->get['information_id'] = $url[1];
					}
				}
cu asta

Code: Select all

if ($query->num_rows) {
					$url = explode('=', $query->row['query']);
					
					if ($url[0] == 'product_id') {
						$this->request->get['product_id'] = $url[1];
					}
					
					if ($url[0] == 'category_id') {
						if (!isset($this->request->get['path'])) {
							$this->request->get['path'] = $url[1];
						} else {
							$this->request->get['path'] .= '_' . $url[1];
						}
					}	
					
					if ($url[0] == 'manufacturer_id') {
						$this->request->get['manufacturer_id'] = $url[1];
					}
					
					if ($url[0] == 'information_id') {
						$this->request->get['information_id'] = $url[1];
					}
					
					if ($url[0] == 'sort') {
						$this->request->get['sort'] = $url[1];
					}
					
					if ($url[0] == 'order') {
						$this->request->get['order'] = $url[1];
					}	
				}
Face variabilele sa dispara, insa nu mai sorteaza.

robertiulianstoica[at]gmail.com


New member

Posts

Joined
Tue May 07, 2013 8:42 pm

Post by rikart » Thu Jul 04, 2013 1:54 am

Pai nu ne ajuta daca nu se mai face sortarea pentru ca este totusi utila.
Cumva trebuie modificat ceva in fisierele category.php si product.php din catalog/controller/product?

Newbie

Posts

Joined
Tue Jun 25, 2013 7:51 pm

Post by rikart » Thu Jul 04, 2013 2:35 am

Am omis sa va spun ca eu il am instalat pe local, nu este online.
Sa fie oare de aici problema?
Tu Robert ai reusit sa faci un site cap-coada, eventual sa-l lansezi?...daca da, la tine apare problema?

Newbie

Posts

Joined
Tue Jun 25, 2013 7:51 pm

Post by robertiulianstoica » Thu Jul 04, 2013 2:47 am

Da, am facut si lansat site-uri in opencart, insa niciodata nu am considerat sort-ul si order-ul ca si o problema.
Nu are relevanta ca e pe local sau nu.
Last edited by robertiulianstoica on Thu Jul 04, 2013 3:07 am, edited 3 times in total.

robertiulianstoica[at]gmail.com


New member

Posts

Joined
Tue May 07, 2013 8:42 pm

Post by rikart » Thu Jul 04, 2013 2:57 am

Felicitari daca ai facut mai multe!
Spune-mi te rog daca pe cele finalizate de tine apar variabilele respective, eventual daca poti sa-mi dai un link.

Newbie

Posts

Joined
Tue Jun 25, 2013 7:51 pm

Post by robertiulianstoica » Thu Jul 04, 2013 3:04 am

Am mai incercat cateva modificari, nu poti sa le scoti de tot, poti doar sa le inlocuiesti cu altceva precum:

http://ocfilter.24din24.com/desktops/so ... rescatoare

Explicatia fiind urmatoarea:

Clasa de url apeleaza clasa seo_url si inlocuieste fiecare varaibila din link cu keywordurile prestabilite in baza de date. Abia apoi facand matching pe keyword reuseste sa iti puna variabila pe get ca sa iti functioneze si sortarea. Astfel, nu ai cum sa le scoti de tot. Poti doar sa le inlocuiesti cu alte texte, daca iti par inestetice.

robertiulianstoica[at]gmail.com


New member

Posts

Joined
Tue May 07, 2013 8:42 pm

Post by rikart » Thu Jul 04, 2013 3:28 am

Tind sa cred ca nu m-am facut inteles si te rog sa-mi spui daca este asa sau nu.
Eu nu vreau sa dispara variabilele respective din URL-ul unei categorii in momentul in care se face o anumita sortare.
Vreau ca dupa ce se face sortarea pe o pagina (categorie) si se alege un produs din cele sortate, in URL-ul paginii produsului ales sa nu apara variabilele respective.

Cu alte cuvinte, URL-ul produsului ales dupa sortare sa fie cel obisnuit (ca si cand nu s-ar fi facut sortarea), sa nu preia in coada variabilele de la sortare.
Sper ca m-am facut inteles.

Newbie

Posts

Joined
Tue Jun 25, 2013 7:51 pm

Post by rikart » Thu Jul 04, 2013 3:46 am

Am cautat prin posturile tale si am gasit un site realizat de tine si care, sincer, imi place foarte mult.
Vreau sa discutam concret si sa-l luam ca exemplu.
Last edited by rikart on Thu Jul 04, 2013 4:36 pm, edited 1 time in total.

Newbie

Posts

Joined
Tue Jun 25, 2013 7:51 pm

Post by robertiulianstoica » Thu Jul 04, 2013 5:44 am

Abia acum am inteles ce vrei sa spui.

In catalog/controller/category.php ai mai jos

Code: Select all

'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
si il inlocuiesti cu

Code: Select all

'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'])
Te-as ruga sa editezi postul si sa scoti linkul site-ului ... Nu vreau sa se indexeze aici site-ul. (SEO)
Iti multumesc!

robertiulianstoica[at]gmail.com


New member

Posts

Joined
Tue May 07, 2013 8:42 pm

Post by rikart » Thu Jul 04, 2013 4:40 pm

Multumesc mult!
Imi pare rau ca n-am fost inteles de la inceput si apreciez foarte mult ajutorul tau.
Am sters link-urile cu pricina, sper ca nu a trecut Google asa repede pe-aici...
Imediat fac modificarea in cod!

Newbie

Posts

Joined
Tue Jun 25, 2013 7:51 pm

Post by robertiulianstoica » Thu Jul 04, 2013 5:14 pm

Multumesc si eu, glad i could help!
rikart wrote:Multumesc mult!
Imi pare rau ca n-am fost inteles de la inceput si apreciez foarte mult ajutorul tau.
Am sters link-urile cu pricina, sper ca nu a trecut Google asa repede pe-aici...
Imediat fac modificarea in cod!

robertiulianstoica[at]gmail.com


New member

Posts

Joined
Tue May 07, 2013 8:42 pm
Who is online

Users browsing this forum: No registered users and 1 guest