Перейти к содержанию
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;
}
}
}

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


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

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

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


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

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

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


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

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

 

site.ru/product-00057845

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


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

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

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

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

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


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

 

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

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


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

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

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


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

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

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

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

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


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

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

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

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

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

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

Войти

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

Войти

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

    • От 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.х  
    • От Leingard
      Очень лёгкий и простой модуль для ручной генерации SEO URL для товара, простым нажатием кнопки "Генерировать ссылку" под полем SEO URL.
      Преобразует Ваше название в правильный SEO_URL. 
      Не конфликтует с другими модулями и полностью совместим со всеми версиями 2.*
       
      Друзья, Ваша оценка в отзывах поможет развитию модуля
       
      Инструкция:
      Установить модуль В товар -> Данные найти поле SEO URL: и нажать кнопку "Генерировать ссылку". SEO URL сгенерируется из введенного Ваши названия  
    • От Trellos12
      Всем привет. С опенкарт знаком недавно, поэтому не судите, искал по форуму не нашел. 
      Версия Опенкарт 3.0.2.0 
      Не могу понять как сделать ЧПУ на системных страницах ( Логин/Регистрация, Контакты, и др)  типа: index.php?route=information/contact
      Сразу скажу: Галочку ЧПУ нажал, файл .htaccess переименовал, кеш который находится в system - не нашел, в смысле его там нет.( не знаю может его там не должно быть)) 
      В админ панели на вкладке Dashboard справа нажимал на колесико и там обновлял ( где то прочитал, что это очистка кеша )
      Во вкладке Дизайн - SEO URL добовлял значения, не помогает. 
      Помогите деревянному )))
    • От 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 реакции.
    • От kievmontana
      Добрый день!
      Нужна помощь с опенкарт 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
       
      Спасибо за отклик
  • Последние посетители   0 пользователей онлайн

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.