Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Доработка] seo_url


artemis

Recommended Posts

Подскажите как можно сделать так:

Главная категория1Главная категория1 -> Подкатегория1Главная категория1 -> Подкатегория2Главная категория1 -> Подкатегория3

Заместо

http://www.site.ru/Главная_категория1/Подкатегория1http://www.site.ru/Главная_категория1/Подкатегория2http://www.site.ru/Главная_категория1/Подкатегория3

Отображалось просто

http://www.site.ru/Подкатегория1http://www.site.ru/Подкатегория2http://www.site.ru/Подкатегория3

Буду очень признателен за помощь.

Надіслати
Поділитися на інших сайтах


Я не проверял, но теоретически это должно работать.Замени в catalogmodeltoolseo_url.php

} 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'];} else {return $link;}}unset($data[$key]);}
на это
} elseif ($key == 'path') {$categories = explode('_', $value);$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)end($categories) . "'");if ($query->num_rows) {$url .= '/' . $query->row['keyword'];} else {return $link;}unset($data[$key]);}
Змінено користувачем afwollis
Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

У меня заработало на версии ocStore v0.1.4 только так:

} elseif ($key == 'path') {$categories = explode('_', $value);{$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)end($categories) . "'");if ($query->num_rows) {$url .= '/' . $query->row['keyword'];} else {return $link;}unset($data[$key]);}
Спасибо за дельный совет. Для Seo очень нужна опция Изображение
Надіслати
Поділитися на інших сайтах


  • 4 years later...

Здравствуйте.

Opencart opencart 1.5.6.4 кажется. Последний первой версии.

Мигрирую с webasyst.

 

Подскажите, как добавить для seo_url ссылку на продукт типа http://сайт.ру/product/maska-anticelljulitnaja вместо опенсартовского http://сайт.ру/maska-anticelljulitnaja

Вот файл модифицированного seo_url.php

Код почему-то не вставляется.((

seo_url.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'];
} elseif( $key == 'product_id' ) {
$url = '/product/'.$value;
unset($data[$key]);
}
} elseif ($key == 'path' && $data['route'] != 'product/product') {
$categories = explode('_', $value);
$url = '/category';

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)end($categories) . "'");
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;
} else {
return $link;
}
} else {
return $link;
}
}
}
?>

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.