Page 1 of 1
Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 5:29 pm
by urbami
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
Re: Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 5:39 pm
by CZechBoY
Zdravím,
máte zapnuté seo aliasy?
Re: Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 5:48 pm
by urbami
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.
Re: Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 6:01 pm
by CZechBoY
Takže kódování funguje a dekódování ne?
Jaká je to verze opencartu?
Re: Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 6:04 pm
by urbami
Ano kodování funguje.
Při dekodování to hodí chybu nic nenalezeno
1.5.3.1
Re: Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 6:07 pm
by CZechBoY
Pěkně stará verze, neplánujete upgrade? :-)
Re: Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 6:14 pm
by urbami
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.
Re: Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 6:20 pm
by CZechBoY
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 ;-)
Re: Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 6:30 pm
by urbami
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;
}
}
}
?>
Re: Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 6:38 pm
by CZechBoY
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 ...
Re: Nefunguje SEO směrování
Posted: Thu Oct 10, 2013 6:44 pm
by urbami
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
Re: Nefunguje SEO směrování
Posted: Fri Oct 11, 2013 12:42 am
by CZechBoY
echo musíte dát do funkce index
kdyžtak pošlete ftp, mrknu se