Jump to content
Sign in to follow this  
EvgeniyNesterenko

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

Recommended Posts

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

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

нужно настроить 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;
}
}
}

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

site.ru/product-00057845

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
 site.ru/product-00057845

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By Leingard
      Очень лёгкий и простой модуль для ручной генерации SEO URL для товара, простым нажатием кнопки "Генерировать ссылку" под полем SEO URL.
      Преобразует Ваше название в правильный SEO_URL. 
      Не конфликтует с другими модулями и полностью совместим со всеми версиями 2.*
       
      Друзья, Ваша оценка в отзывах поможет развитию модуля
       
      Инструкция:
      Установить модуль В товар -> Данные найти поле SEO URL: и нажать кнопку "Генерировать ссылку". SEO URL сгенерируется из введенного Ваши названия  
    • By Leingard
      Скачать/Купить дополнение


      Seo Url Gen - генерация SEO URL для товаров из названия
      Очень лёгкий и простой модуль для ручной генерации SEO URL для товара, простым нажатием кнопки "Генерировать ссылку" под полем SEO URL.
      Преобразует Ваше название в правильный SEO_URL. 
      Не конфликтует с другими модулями и полностью совместим со всеми версиями 2.*
       
      Друзья, Ваша оценка в отзывах поможет развитию модуля
       
      Инструкция:
      Установить модуль В товар -> Данные найти поле SEO URL: и нажать кнопку "Генерировать ссылку". SEO URL сгенерируется из введенного Ваши названия  
      Добавил Leingard Добавлено 26.01.2018 Категория SEO, карта сайта, оптимизация Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика  
    • By Trellos12
      Всем привет. С опенкарт знаком недавно, поэтому не судите, искал по форуму не нашел. 
      Версия Опенкарт 3.0.2.0 
      Не могу понять как сделать ЧПУ на системных страницах ( Логин/Регистрация, Контакты, и др)  типа: index.php?route=information/contact
      Сразу скажу: Галочку ЧПУ нажал, файл .htaccess переименовал, кеш который находится в system - не нашел, в смысле его там нет.( не знаю может его там не должно быть)) 
      В админ панели на вкладке Dashboard справа нажимал на колесико и там обновлял ( где то прочитал, что это очистка кеша )
      Во вкладке Дизайн - SEO URL добовлял значения, не помогает. 
      Помогите деревянному )))
    • By afinalux
      Добрый день!
      Прошу помощи.
      Ситуация следующая:
      Есть магазин на ocstore 1.5.5.1.2 с вшитым seo_pro
      Есть купленный модуль импорта CSV Price pro import/export 3
      При импорте товара из csv заполняется поле seo_url генерируется и виден в окне редактирования товара в админке.
      НО! на сайте ссылки на товары по прежнему вида index.php?route=product/product&path=
      Выяснено, что сгенерированные в товрах seo_url'ы почему-то не прописываются в соответствующую таблицу в БД.
      Проблема решается заходом на страницу редактирования товара и нажатием кнопки "Сохранить" при этом seo_url записывается в БД и на сайте начинает показываться с ЧПУ.
      Как вы понимаете заходить каждый раз в редактор товара и сохранять каждый - гемор еще тот.
      Подскажите, пожалуйста, как решить эту проблему системно?
      Спасибо.
       
      P.S: все возможные кэши и чистил через FTP, кэш браузера тоже - 0 реакции.
    • Guest
      By Guest
      Добрый день!
      Нужна помощь с опенкарт 2.2, навести порядок с ЧПУ 
      uni-store.org
       
      1. Разобраться с сео урлами, возможно поставить нормальный СЕО Про и настроить чтоб все работало корректно  - ссылки были не checkout/index.php?route=quickcheckout/checkout а ЧПУ
      2. При обновлении модификаторов появляется ошибка https://prnt.sc/h4rw0o и из админки пропадет модуль доставки СДЭК. ( при внесении любых изменений в  seo_url.php, ошибка пропадает, но перестают работать ЧПУ)
      3. Модуль доставки СДЭК настраивается, в корзине отображаеться, но заказ оформить нельзя.
      4. Не работает форма уточнить наличие товара https://uni-store.org/shower/dushevaja-kabina-kvadratnaja-roltechnick-hitech-line-hbo1-hbo1
       
      Спасибо за отклик
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.