[Решено] Вопрос по SEO url для отдельной страницы

Тема в разделе "OpenCart", создана пользователем alex_storm, 6 сен 2016.

  1. alex_storm

    alex_storm дизайн, CSS Команда форума

    Регистрация:
    11 дек 2012
    Сообщения:
    1.121
    Симпатии:
    560
    Всем привет!
    Вопрос такого плана, я создал отдельный тип страницы (информационный, где размещается что то вроде работ).
    Далее в DB я пишу запрос типа, при добавлении или редактировании один и тот же запрос идет

    Код:
     if (isset($data['url'])) {
                $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'project_id=" . (int)$project_id . "', keyword = '" . $this->db->escape($data['url']) . "'");
            }

    Далее, делаю в seo_url.php следующую проверку
    Код:
    if ($url[0] == 'project_id') {
                            $this->request->get['project_id'] = $url[1];
                        }
    и еще
    Код:
    if (isset($this->request->get['product_id'])) {
                        $this->request->get['route'] = 'product/product';
                    } elseif (isset($this->request->get['project_id'])) {
                        $this->request->get['route'] = 'product/project';
    + дописал при выводе уже в этом же файле
    Код:
    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')|| ($data['route'] == 'product/project' && $key == 'project_id')) {
    
    На странице, где непосредственно выводятся эти самые записи, я указал урл таким образом
    Код:
    'href'        => $this->url->link('product/project', 'project_id=' . $result['id']),
    Вроде, все корректно работает, при наведении на ссылку, я вижу, что она уже трансформировалась в ЧПУ.

    Но почему при переходе по странице, мне выдает 404 ?
    В параметр $this->request->get['project_id'] я получаю id куда нужно перейти.
    Но контроллер по какой то причине не видет, что ли этого параметра или хрен его знает, не могу понять, где ошибся
     
  2. alex_storm

    alex_storm дизайн, CSS Команда форума

    Регистрация:
    11 дек 2012
    Сообщения:
    1.121
    Симпатии:
    560
    Хм.. разобрался я не знаю для чего это было сделано, кто это писал, и кто этим хотел, что сказать, но прикол был в этой проверке в самом файле

    Было
    PHP:
    if (!isset($this->request->get['route'])) {
                    if (isset(
    $this->request->get['product_id'])) {
                        
    $this->request->get['route'] = 'product/product';
                    } elseif (isset(
    $this->request->get['project_id'])) {
                        
    $this->request->get['route'] = 'product/project';
                    }  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';
                    }
                }
    Стало
    PHP:
    if (isset($this->request->get['route']) && !empty($this->request->get['route'])) {
                    if (isset(
    $this->request->get['product_id'])) {
                        
    $this->request->get['route'] = 'product/product';
                    } elseif (isset(
    $this->request->get['project_id'])) {
                        
    $this->request->get['route'] = 'product/project';
                    }  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';
                    }
                }
    По идеи, не один вообще урл не должен был работать.