Как сделать ЧПУ товара без вложенности (категорий в URL) Opencart 2

В практике разработчика на CMS Opencart встречаются разные сайты (порой с не самым изящным кодом) и разные задачи. Вот и я столкнулся с одной задачей от моего заказчика, которую не смог нагуглить в интернете.

CMS: Opencart 2 (Тестировалось и на Opencart Pro 2)

Задача: сделать формирование ЧПУ адресов для товаров в виде домен/урл-товара (domain/product). То есть мне нужно было удалить всю вложенность (все категории и подкатегории в ЧПУ товара).

Вроде бы задача не самая сложная, когда на сайте настроено Seo Pro, но в этом проекте данного модуля не было. Мало того, когда мы включали Seo Pro, часть функционала сайта переставала работать.

Переустановка не помогала, по этому пришлось копать стандартные файлы Opencart 2, чтоб решить эту проблему.

Итак, дефолтный файл, который отвечает за формирование ЧПУ находится по адресу:

/catalog/controller/common/seo_url.php

Блок, который отвечает за формирования URL для товара (91 строчка):

if ($query->num_rows && $query->row['keyword']) {
$url .= '/' . $query->row['keyword'];
unset($data[$key]);
}

Нам нужно просто удалить точку в выражении

$url .= '/' . $query->row['keyword'];

Получаем блок такого вида:

if ($query->num_rows && $query->row['keyword']) {
$url = '/' . $query->row['keyword'];
unset($data[$key]);
}

Теперь все ваши товары будут открываться по адресу domain/product.

Но обратите внимание, что этот метод ломает структуру построения хлебных крошек. Для всех товаров хлебные крошки будут в виде:

Главная страница > Товар

Если интересно, как решить эту проблему, то пишите, обязательно напишу по этому поводу подробную статью.

Если же на ваш сайт нормально становится модуль Seo Pro, то достаточно в настройках магазина на вкладке «Сервер» включить «Нет» напротив «ЧПУ товаров с категориями».

Автор статьи
Автор статьи: Роман Евтушенко
Разработчик
Пост опубликован: 28.10.2021
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *