Здравствуйте. Версия OC: Русская сборка OpenCart 2.0.3.1 rs2 (без доп. модулей) Продублировал каталог для админки и для сайта и привязал к новым идентичным по структуре таблице БД. В итоге получил рабочий второй каталог (который лежит в новой папке с похожими переменными). Проблема возникла когда начал настраивать seo_url.php для второго каталога. Не получается превести в нужный вид, как первый каталог работает нужным образом! Вот что получаю при переходе в Категорию (2 каталога): http:// SITE. UA/index.php?route=newproduct/newcategory&path=34_43 Место: http:// SITE. UA/catalog2 При переходе в Товар (2 каталога): http:// SITE. UA/tovar2 Место: http:// SITE. UA/catalog2/tovar2 1. Переменную "path" в файлах НЕ ИЗМЕНЯЛ 2. Все seo_url хранятся в таблице oc_url_alias PS. Если в файле seo_url.php удалить эту строку (отвечает за 1 каталог): elseif (isset($this->request->get['path'])) { $this->request->get['route'] = 'product/category'; } То для 2-го Каталога путь становится: http:// SITE. UA/catalog2/tovar2 (как нужно) Но... у 1-го Каталога ЧПУ пропадает РЕШИЛ! НАШЕЛ ПОХОЖУЮ СИТУАЦИЮ В ГОТОВЫХ МОДУЛЯХ
А рассказать как решили?? И расскажите пожалуйста подробнее, что вы хотели решить данными методами... очень интересно.
Добавление будет для страниц товара, категорий и производителя. Переменные: newproduct newcategory newmanufacturer newmanufacturer_id newcategory_id newproduct_id npath Могут отличаться от ваших!!! Все изменения для файла catalog/controller/common/seo_url.php 1.Находим: PHP: $url = explode('=', $query->row['query']); Ниже добавляем: PHP: if ($url[0] == 'newproduct_id') { $this->request->get['newproduct_id'] = $url[1];}if ($url[0] == 'newcategory_id') { if (!isset($this->request->get['npath'])) { $this->request->get['npath'] = $url[1]; } else { $this->request->get['npath'] .= '_' . $url[1]; }}if ($url[0] == 'newmanufacturer_id') { $this->request->get['newmanufacturer_id'] = $url[1];} 2.Находим: PHP: if ($query->row['query'] && $url[0] != 'information_id' && $url[0] != 'manufacturer_id' && $url[0] != 'category_id' && $url[0] != 'product_id') { И добавляем в нее: PHP: && $url[0] != 'newmanufacturer_id' && $url[0] != 'newcategory_id' && $url[0] != 'newproduct_id' Вот что получаем: PHP: if ($query->row['query'] && $url[0] != 'information_id' && $url[0] != 'manufacturer_id' && $url[0] != 'category_id' && $url[0] != 'product_id' && $url[0] != 'newmanufacturer_id' && $url[0] != 'newcategory_id' && $url[0] != 'newproduct_id') { 3.Находим условие " if (!isset($this->request->get['route'])) { " и в ней: PHP: } elseif (isset($this->request->get['information_id'])) { $this->request->get['route'] = 'information/information';} После закрывающей скобки "}" добавляем: PHP: elseif (isset($this->request->get['newproduct_id'])) { $this->request->get['route'] = 'newproduct/newproduct';} elseif (isset($this->request->get['npath'])) { $this->request->get['route'] = 'newproduct/newcategory';}elseif (isset($this->request->get['manufacturer_id'])) { $this->request->get['route'] = 'newproduct/newmanufacturer/info';} 4.Находим: PHP: } elseif ($this->request->get['route'] == 'common/home') { $arg = HTTP_SERVER;} Также после закрывающей скобки "}" добавляем: PHP: elseif ($this->request->get['route'] == 'newproduct/newproduct' && isset($this->request->get['newproduct_id'])) { $this->request->get['route'] = 'newproduct_id=' . $this->request->get['newproduct_id'];} elseif ($this->request->get['route'] == 'newproduct/newmanufacturer/info' && isset($this->request->get['newmanufacturer_id'])) { $this->request->get['route'] = 'newmanufacturer_id=' . $this->request->get['newmanufacturer_id'];} elseif ($this->request->get['route'] == 'newproduct/newcategory' && isset($this->request->get['npath'])) { $newcategorys_id = explode('_', $this->request->get['npath']); $cat_path = ''; foreach ($newcategorys_id as $newcategory_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'newcategory_id=" . (int)$newcategory_id . "'"); if ($query->num_rows && $query->row['keyword'] /**/ ) { $cat_path .= '/' . $query->row['keyword']; } else { $cat_path = false; break; } } $arg = trim($cat_path, '/');} 5. Находим: PHP: 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')) { Заменяем на: PHP: if (($data['route'] == 'product/product' && $key == 'product_id') || ($data['route'] == 'newproduct/newproduct' && $key == 'newproduct_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || (($data['route'] == 'newproduct/newmanufacturer/info' || $data['route'] == 'newproduct/newproduct') && $key == 'newmanufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { 6.Находим: PHP: } elseif ($key == 'path') { Заменяем на: PHP: } elseif ($key == 'path' || $key == 'npath') { 7.Находим: PHP: $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'"); Заменяем на: PHP: if($key == 'path') { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");}if($key == 'npath') { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'newcategory_id=" . (int)$category . "'");} Изменения для файлов: catalog/controller/newproduct/newproduct.php catalog/controller/newproduct/newcategory.php catalog/controller/common/header.php newcategory.php Изменяем в файле все: PHP: path на PHP: npath Для newproduct.php проделываем тоже самое что делали с newcategory.php НЕ ПУТАТЬ "path" с "path_id" !!!!!!!! header.php В этом файле при дублировании горизонтального меню, вносим изменения в эту строчку: PHP: 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) на PHP: 'href' => $this->url->link('product/category', 'npath=' . $category['category_id']) и также измененяем эту: PHP: 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) на PHP: 'href' => $this->url->link('product/category', 'npath=' . $category['category_id'] . '_' . $child['category_id'])
@RoS мне тоже интересно основная идея решения какая? Т.е вы создали новые контролы и модели и таблицы в БД для страниц товара, категорий и производителя. В итоге вы получили новую админку итд. Но зачем все это? Ведь можно было наверно на мультимагазине все сделать или через подпапку. Расскажите, интересно очень..
Здравствуйте, я получил не новую админку, а новый пункт меню "Каталог2". В которой находится: "Категории2" "Товары2" "Производители2" "Атрибуты2" "Отзывы2" Первый каталог будет работать для продажи со своим дизайном. Второй каталог буду видоизменять. Например можно получить каталог новостей, галерею но со своим функционалом. Т.к. предложенные варианты тех же "Новостей" меня не устраивают категорически.
Все понял. Вы задублировали функционал страниц товара, категорий и производителя чтобы на основе их создать что то свое. Теперь все понятно, СПАСИБО.