Post by urbami » Thu Oct 10, 2013 5:29 pm

Zdravím,
potřeboval bych pomoci. Už nevím jak dál a kde hledat chyby.
Mám eshopy které sdílejí databázi.

Nyní jsem chtěl aktivovat SEO adresy ale při povolení v administraci mi adresy nefungují a stále dostávám 404.
Zkoušel jsem snad vše ale připadne mi že se opencart vůbec nereaguje na to co je zde:

Code: Select all

// SEO URL's
$controller->addPreAction(new Action('common/seo_url'));
Pokud tam jen na zkoušku přidám jakýkoliv kód tak se nic neděje.
HTACCESS funguje dobře protože v $request->get['_route_'] je správně to co má být.

Dal jsem na zkoušku do indexu toto:

Code: Select all

// SEO URL's
$controller->addPreAction(new Action('common/seo_url'));	
if(!empty($request->get['_route_'])){
  var_dump($request->get['_route_']); // Vypíše správně to co je v adrese za doménou.
  var_dump($request->get['route']); // Vypíše NULL a chybu undefined index "route"
}
Z toho jak jsem studoval soubor seo_url.php měl by do $request->get['route'] nahrát přeloženou adresu.

Používám OC 1.5.3.1
adresy jsou: http://www.nstore.cz a http://www.mojenaplne.cz

Mé shopy jsou:
www.mojenaplne.cz
www.starink.cz
Mám pár svých zajímavých modulů, jsem ochoten se o ně podělit. Stačí napsat.


Newbie

Posts

Joined
Thu Jun 02, 2011 5:21 pm

Post by CZechBoY » Thu Oct 10, 2013 5:39 pm

Zdravím,
máte zapnuté seo aliasy?

Mass update product descriptions/Hromadná změna popisků zboží


User avatar
Active Member

Posts

Joined
Mon Mar 19, 2012 1:39 am
Location - Europe, Czech republic; Hradec Králové, Brno

Post by urbami » Thu Oct 10, 2013 5:48 pm

Ano samozřejmě zapnu je zjistím, že to nefunguje a protože je to živý obchod zase je musím vypnout. Všechny odkazy na webu se správně přepíšou dle seo aliasu nastaveného u konkrétní kategorie či produktu.

Mé shopy jsou:
www.mojenaplne.cz
www.starink.cz
Mám pár svých zajímavých modulů, jsem ochoten se o ně podělit. Stačí napsat.


Newbie

Posts

Joined
Thu Jun 02, 2011 5:21 pm

Post by CZechBoY » Thu Oct 10, 2013 6:01 pm

Takže kódování funguje a dekódování ne?
Jaká je to verze opencartu?

Mass update product descriptions/Hromadná změna popisků zboží


User avatar
Active Member

Posts

Joined
Mon Mar 19, 2012 1:39 am
Location - Europe, Czech republic; Hradec Králové, Brno

Post by urbami » Thu Oct 10, 2013 6:04 pm

Ano kodování funguje.
Při dekodování to hodí chybu nic nenalezeno

1.5.3.1

Mé shopy jsou:
www.mojenaplne.cz
www.starink.cz
Mám pár svých zajímavých modulů, jsem ochoten se o ně podělit. Stačí napsat.


Newbie

Posts

Joined
Thu Jun 02, 2011 5:21 pm

Post by CZechBoY » Thu Oct 10, 2013 6:07 pm

Pěkně stará verze, neplánujete upgrade? :-)

Mass update product descriptions/Hromadná změna popisků zboží


User avatar
Active Member

Posts

Joined
Mon Mar 19, 2012 1:39 am
Location - Europe, Czech republic; Hradec Králové, Brno

Post by urbami » Thu Oct 10, 2013 6:14 pm

Plánuji ale momentálně je to kvůli mým upgradům nemožné.
Mám tam spoustu mnou programovaných rozšíření a změn vzhledu a přechod na novou verzi je docela složitý.
Nyní budu pomalu spouštět testovací verzi na nové verzi ke které se postupně budou připojovat související weby.
Tento krok půjde ale velmi pomalu a nejde to změnit skokově. Proto bych to potřeboval zprovoznit v této verzi.

Mé shopy jsou:
www.mojenaplne.cz
www.starink.cz
Mám pár svých zajímavých modulů, jsem ochoten se o ně podělit. Stačí napsat.


Newbie

Posts

Joined
Thu Jun 02, 2011 5:21 pm

Post by CZechBoY » Thu Oct 10, 2013 6:20 pm

Tak pošlete soubor seo_url.php, asi bude změněný, v originální verzi to vypadá funkčně.

Jojo, taky mám takový shop, ale upgradovat nebudu ;-)

Mass update product descriptions/Hromadná změna popisků zboží


User avatar
Active Member

Posts

Joined
Mon Mar 19, 2012 1:39 am
Location - Europe, Czech republic; Hradec Králové, Brno

Post by urbami » Thu Oct 10, 2013 6:30 pm

Změněný by být neměl protože do nej sem nijak nevstupoval. Zkoušel jsem ho přepsat původním. Bohužel nesehnal jsem přímo pro verzi 1.5.3.1 tak jsem zkusil nahrat z verze 1.5.4.

Code: Select all

<?php
class ControllerCommonSeoUrl extends Controller {
	public function index() {
		// Add rewrite to url class
		if ($this->config->get('config_seo_url')) {
			$this->url->addRewrite($this);
		}
		// Decode URL
		if (isset($this->request->get['_route_'])) {
			$parts = explode('/', $this->request->get['_route_']);
			
			foreach ($parts as $part) {
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");
				
				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];
					}	
				} else {
					$this->request->get['route'] = 'error/not_found';	
				}
			}
			
			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';
			}
			
			if (isset($this->request->get['route'])) {
				return $this->forward($this->request->get['route']);
			}
		}
	}
	
	public function rewrite($link) {
		if ($this->config->get('config_seo_url')) {
			$url_data = parse_url(str_replace('&', '&', $link));
		
			$url = ''; 
			
			$data = array();
			
			parse_str($url_data['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]);
					}
				}
			}
		
			if ($url) {
				unset($data['route']);
			
				$query = '';
			
				if ($data) {
					foreach ($data as $key => $value) {
						$query .= '&' . $key . '=' . $value;
					}
					
					if ($query) {
						$query = '?' . trim($query, '&');
					}
				}

				return $url_data['scheme'] . '://' . $url_data['host'] . (isset($url_data['port']) ? ':' . $url_data['port'] : '') . str_replace('/index.php', '', $url_data['path']) . $url . $query;
			} else {
				return $link;
			}
		} else {
			return $link;
		}		
	}	
}
?>

Mé shopy jsou:
www.mojenaplne.cz
www.starink.cz
Mám pár svých zajímavých modulů, jsem ochoten se o ně podělit. Stačí napsat.


Newbie

Posts

Joined
Thu Jun 02, 2011 5:21 pm

Post by CZechBoY » Thu Oct 10, 2013 6:38 pm

Tak to by mělo fungovat. Ono se v tomhle souboru nic moc nemění (bohužel, nebo bohudík?).
Zkuste tam dát nějaký debug, takhle na dálku těžko pomáhat ...

Mass update product descriptions/Hromadná změna popisků zboží


User avatar
Active Member

Posts

Joined
Mon Mar 19, 2012 1:39 am
Location - Europe, Czech republic; Hradec Králové, Brno

Post by urbami » Thu Oct 10, 2013 6:44 pm

Právě jsem napsal sem protože už dále nevím jak najít chybu. Na zkoušku jsem do toho seo_url vepsal echo ale ani to se nevypsalo takže mě napadá že oc ani do toho souboru nevleze.

EDIT: koukal jsem do error logu žádná chyba

Mé shopy jsou:
www.mojenaplne.cz
www.starink.cz
Mám pár svých zajímavých modulů, jsem ochoten se o ně podělit. Stačí napsat.


Newbie

Posts

Joined
Thu Jun 02, 2011 5:21 pm

Post by CZechBoY » Fri Oct 11, 2013 12:42 am

echo musíte dát do funkce index
kdyžtak pošlete ftp, mrknu se

Mass update product descriptions/Hromadná změna popisků zboží


User avatar
Active Member

Posts

Joined
Mon Mar 19, 2012 1:39 am
Location - Europe, Czech republic; Hradec Králové, Brno
Who is online

Users browsing this forum: No registered users and 5 guests