EvgeniyNesterenko

подстройка сео урл

Рекомендуемые сообщения

всем добра  :-)

нуждаюсь в помощи!

нужно настроить seo url в opencart 2.x.x, так чтоб все продукты(товары) отображались таким site.ru/product/'product_id' образом. 

 

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_']);

// remove any empty arrays from trailing
if (utf8_strlen(end($parts)) == 0) {
array_pop($parts);
}

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];
}

if ($query->row['query'] && $url[0] != 'information_id' && $url[0] != 'manufacturer_id' && $url[0] != 'category_id' && $url[0] != 'product_id') {
$this->request->get['route'] = $query->row['query'];
}
} else {
$this->request->get['route'] = 'error/not_found';

break;
}
}

if (!isset($this->request->get['route'])) {
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 new Action($this->request->get['route']);
}
}
}

public function rewrite($link) {
$url_info = parse_url(str_replace('&', '&', $link));

$url = '';

$data = array();

parse_str($url_info['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 && $query->row['keyword']) {
$url .= '/' . $query->row['keyword'];

unset($data[$key]);
}
} 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 && $query->row['keyword']) {
$url .= '/' . $query->row['keyword'];
} else {
$url = '';

break;
}
}

unset($data[$key]);
}
}
}

if ($url) {
unset($data['route']);

$query = '';

if ($data) {
foreach ($data as $key => $value) {
$query .= '&' . rawurlencode((string)$key) . '=' . rawurlencode((string)$value);
}

if ($query) {
$query = '?' . str_replace('&', '&', trim($query, '&'));
}
}

return $url_info['scheme'] . '://' . $url_info['host'] . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . $query;
} else {
return $link;
}
}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 379

Чем Вам не угодили ЧПУ ?!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у товара урл будет код(артикул) товара  урл  будет получатся такой site.ru/category/subcategory/00057845 или такой site.ru/00057845 а нужно site.ru/product/00057845

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 379

А почему просто не хотите сделать, велик начинаете изобретать

 

site.ru/product-00057845

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 379

думал велик уже изобретен давно  :oops:

Самый просто вариант site.ru/product-00057845

Генерите любым seo генератором ЧПУ, у которого есть токен ID товара

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 400
 site.ru/product-00057845

 

это самый оптимальный вариант

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Otvet    371

Я подозреваю что дело в сохранении адресации при миграции, иначе бессмысленный бред создавать это

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 379

Я подозреваю что дело в сохранении адресации при миграции, иначе бессмысленный бред создавать это

В обоих случаях - бессмысленная

301 с domen.com/product/id очень легко сделать на domen.com/product-id

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От lskipv
      Столкнулся с супер проблемой. В общем. 
      Делаем мы кучу категорий под сео, чтобы охватить максимальное количество нч запросов
      И вот в чем вопрос. 
      http://bentwell.ru/kupit-chernye-krossovki/ - вот ссылка на категорию черные кроссовки
      http://bentwell.ru/kupit-chernye-krossovki/muzhskie-chernye-krossovki/muzhskie-chernye-krossovki-asics/ - вот ссылка на категорию  мужские черные кроссовки асикс
      Как вы видите в сео дублируются слова
      Можно ли как-то сделать, чтобы категории были вложены друг в друга и вложения остались, НО ссылки были такого типа bentwell.ru/catalog/КОНЕЧНАЯ_КАТЕГОРИЯ

      И самое главное! Это правило не должно касаться старых категорий, так как они уже в индексе, оно должно касаться только новых. Что делать???
    • От Tommy77
      Доброго времени суток!
       
      С толкнулся с проблемой, когда добавляется новый товар в поле SEO URL генерируется линк, но очень криво. Он может написать только первое слово, либо неправильно поставить букву. После того, как сохранил товар и начинаешь менять ссылку в ручную, везде на сайте остается первая сгенерированная кривая ссылка и выскакивает ошибка 404.
       
      Как решить эту проблема с обновлением правильного URL и правильной генерацией данного URL?
       
      Спасибо.
    • От plazz
      Здравствуйте!
       
      ocStore 1.5.5.1.2
       
      После импорта категорий, совпали сео урлы и начали неправильно открываться те страницы где совпадения, например:
       
      site.com/mazda/3
      site.com/vw/polo/3
       
      Когда с мазды, хочу зайти в модель 3  --> открывает - site.com/vw/polo/3
       
      Я помнил правило, что урлы должны быть уникальны на всю систему, но не думал, что могут быть проблемы, т.к. адреса страницы по сути разные. Но оказывается, что если есть совпадение, как в данном примере - 3 и 3, то ругается.
      В общем, это не проблема, поменял урлы, и получился вот такой вывод: http://site.com/ford/ford-fiesta/ford-fiesta-2006-2008/
       
      Собственно, не сильно нравиться повторения ford, fiesta
       
      Можно, как-то сделать так, что бы вместо:
      http://site.com/ford/ford-fiesta/
      было:
      http://site.com/ford-fiesta/
       
      Ну и дальше:
      http://site.com/ford/ford-fiesta/ford-fiesta-2006-2008/
      =
      site.com/ford-fiesta-2006-2008/
       
      и так, для всех категорий.
       
      Спасибо!
    • От confidant
      Сборка ocstore.
      Я так понял, что там уже вшит плагин seopro. Он включен, seo url тоже включены.
      Но адреса новых категорий и товаров бредовые, как будто нечего не работает. 
      Надо скачать еще какой то генератор чпу или как то настроить .htaccess ?
    • От devig
      Как сделать чтобы урл товаров и категорий начинался с /shop/?
      Создать родительскую категорию и в ней указать урл shop не предлагать.
      opencart 1.5, seopro.
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу