На форуме 9558 тем, 76452 сообщений, 44664 участников
тема · 7 566 просмотров · 5 ответов

(РЕШЕНО) Создание новых url-адресов в Seo_url

Общие вопросы
читают: 0 участников и 2 гостя
порядок
31 июл 2015 23:07· изменено#1
Здравствуйте.
Версия 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';
}


[COLOR=#000000]То для 2-го Каталога [COLOR=#0059b3][COLOR=#000000]путь становится:http:// SITE. UA/catalog2/tovar2(как нужно) [/COLOR][/COLOR][/COLOR]
Но... у 1-го Каталога ЧПУ пропадает

РЕШИЛ! НАШЕЛ ПОХОЖУЮ СИТУАЦИЮ В ГОТОВЫХ МОДУЛЯХ
1 авг 2015 10:21#2
А рассказать как решили??

И расскажите пожалуйста подробнее, что вы хотели решить данными методами... очень интересно.
1 авг 2015 17:16· изменено#3
Добавление будет для страниц товара, категорий и производителя.

Переменные:
  • 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
[B][I]catalog/controller/common/header.php
[/B][/I]

newcategory.php

Изменяем в файле все:

php
path
[/SIZE][/SIZE]
на
php
npath
[/SIZE][/SIZE]
Для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'])
[/SIZE]
1 авг 2015 17:56#4
@RoS мне тоже интересно основная идея решения какая?
Т.е вы создали новые контролы и модели и таблицы в БД для страниц товара, категорий и производителя.
В итоге вы получили новую админку итд. Но зачем все это? Ведь можно было наверно на мультимагазине все сделать или через подпапку.
Расскажите, интересно очень..
1 авг 2015 18:15#5
Vlad написал(а): ↑@RoS мне тоже интересно основная идея решения какая?
Т.е вы создали новые контролы и модели и таблицы в БД для страниц товара, категорий и производителя.
В итоге вы получили новую админку итд. Но зачем все это? Ведь можно было наверно на мультимагазине все сделать или через подпапку.
Расскажите, интересно очень..


Здравствуйте, я получил не новую админку, а новый пункт меню "Каталог2". В которой находится:
  • "Категории2"
  • "Товары2"
  • "Производители2"
  • "Атрибуты2"
  • "Отзывы2"

Первый каталог будет работать для продажи со своим дизайном.
Второй каталог буду видоизменять.
Например можно получить каталог новостей, галерею но со своим функционалом.
Т.к. предложенные варианты тех же "Новостей" меня не устраивают категорически.
1 авг 2015 19:14#6
Все понял. Вы задублировали функционал страниц товара, категорий и производителя чтобы на основе их создать что то свое.
Теперь все понятно, СПАСИБО.
сообщения 1–6 из 6
Чтобы ответить, войдите или зарегистрируйтесь.

Похожие темы