К основному контенту

Opencart Seo pro и одноименные категории

Столкнулся с проблемой когда подкатегории имеют одинаковое название. Получаются ссылки вида phones/samsung и tv/samsung - в этом случае seo pro ищет нужную категорию используя только последнее название в данном случае samsung. Из-за этого открывается либо одна и таже категория или вообще страница не найдена это в зависимости от версии файла seo_pro.php.
Решил написать сам и делюсь с Вами ))



Все что я дописал это вот эти строчки в файле catalog\controller\common\seo_pro.php
//Одинаковые seo url чпу
                if (isset($a) && $a[0]=="category_id") {
                    $query = $this->db->query("SELECT a.* FROM " . DB_PREFIX . "url_alias a, " . DB_PREFIX . "category c WHERE a.keyword = '" . $this->db->escape($keyword) . "' AND a.query=CONCAT('category_id=', c.category_id) AND c.parent_id='".$a[1]."'");
                    if ($query->num_rows) {
                        $rows[] = array('keyword' => $keyword, 'query' => $query->row['query']);
                        $a = explode("=",$query->row['query']);
                    } else {
                        if (isset($this->cache_data['keywords'][$keyword])) {
                            $rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]);
                        }
                    }
                } else {
                    if (isset($this->cache_data['keywords'][$keyword])) {
                        $rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]);
                        $a=explode("=",$this->cache_data['keywords'][$keyword]);
                    }
                }
                //End Одинаковые seo url чпу


Комментарии

  1. в Opencart нет SeoPro, этот модуль появился в ocStore.
    по коду видно что это модицикация "кешируемый SeoPro"

    ОтветитьУдалить
  2. после того как внес изменения на странице с товарами пишет "Запрашиваемая страница не найдена"!

    ОтветитьУдалить
    Ответы
    1. Сегодня как раз столкнулся с такой же проблемой, поэтому решил разобраться и поправил код, обновил

      Удалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. Спасибо за полезную правку!
    Еще бы данный кусок кода в кэш отправлять, чтобы при повторных переходах по данной ссылке не дергать базу. Это еще и скорости прибавит! Или я ошибаюсь?

    ОтветитьУдалить
  5. Добрый день.
    Прописал в seo_pro.php данные строчки - категории работают, а вот товар не выводит. Пишет Страница не найдена. Что можно сделать?

    ОтветитьУдалить
  6. Здравствуйте часто сталкиваюсь с подобной проблемой, так как приходиться вести интернет магазин. При загрузке новых наименований часто происходит вышеописанная путаница, но в моем случае всегда "страница не найдена". Сайт сделан на платформе joomla 3, друг нашел готовый рабочий шаблон https://www.templatemonster.com/ru/opencart-templates-type/. Но как я уже упомянул, случаются косяки. Применил ваш код и конфликт исчез, большое спасибо.

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Скрипт для удаления вирусов с сайта (открытый код)

Все чаще и чаще меня просят вылечит сайт от вирусов, которые содержатся в .htaccess, index.php и т.д. файлах. Сначала делал все вручную, но потом решился написать скрипт, который будет искать все зараженные файлы и автоматически отчищать их от вируса. Вот то что получилось. Скачать antivirus.php

Настройка электронной торговли с помощью Google Tag Manager

Очень долго настраивал и решил тут оставить как настроить электронную торговлю с помощью google tag maneger. Есть еще и другие способы настройки, мне показался это самый простой и понятный способ. По умолчанию мы уже установили код отслеживания google analytics и google tag manager на сайт. И так приступим: 1. Включить электронную торговлю  в google analytics Администратор - Настройка электронной торговли 2. В Google tag manager создать тег и добавить к нему триггер просмотр страницы, у меня opencart по-этому указал, если урл содержит checkout/success 3. В коде сайта в секции head перед Google Tag manager ставим код:   < script > window.dataLayer = window.dataLayer || []; dataLayer.push({ "transactionId":"1234", "transactionAffiliation":"StoreName", "transactionTotal":999, "transactionProducts":[ {"name":"Best Product", "sku":"A999", "price":99