Таблица oc_url_alias
Таблица oc_url_alias является ключевым элементом системы ЧПУ в OpenCart. Она хранит сопоставления между техническими URL, содержащими параметры (например, index.php?route=product/product&product_id=123), и красивыми, SEO-оптимизированными адресами (например, /smartphone/samsung-galaxy-s23).
Поля
| Поле | Тип данных | Описание |
|---|---|---|
url_alias_id |
int |
Уникальный идентификатор записи (первичный ключ). Автоматически увеличивается при добавлении новой записи. |
query |
varchar(255) |
Строка запроса, которую система должна преобразовать. Это исходный URL в формате route=path/to/page?m=value. Например, product_id=45 или route=information/information&information_id=4.
|
keyword |
varchar(255) |
Ключевое слово (slug), на которое будет заменен исходный запрос. Это часть SEO-URL. Например, для запроса product_id=45 ключевым словом может быть apple-iphone-14.
|
Как это работает
Когда пользователь переходит по ссылке вида /apple-iphone-14, движок OpenCart ищет это значение в поле keyword таблицы oc_url_alias. Найдя совпадение, система берет соответствующее значение из поля query (например, product_id=45) и использует его для загрузки правильной страницы (в данном случае страницы товара с ID 45).
Обратный процесс происходит при генерации ссылок на сайте. Если скрипту нужно создать ссылку на товар с product_id=45, он ищет запись с таким значением в поле query и, если находит, подставляет значение из поля keyword для формирования красивого URL.
Помимо товаров, категорий, производителей и информационных страниц, данная таблица также используется для настройки редиректов 301. Если в поле query записан URL, начинающийся с route=, а в поле keyword - другой ЧПУ, система будет перенаправлять пользователя с одного адреса на другой.
Важно: значения в поле keyword должны быть уникальными, так как они являются виртуальными путями на сайте.
Пример SQL-запроса
Посмотреть все созданные ЧПУ для товаров можно следующим запросом:
SELECT u.url_alias_id, u.keyword, u.query, pd.name
FROM oc_url_alias u
LEFT JOIN oc_product_description pd ON (
u.query = CONCAT('product_id=', pd.product_id) AND pd.language_id = 1
)
WHERE u.query LIKE 'product_id=%';
Смотрите также
-
таблицу
oc_product,
которая содержит основные данные о товарах -
таблицу
oc_product_description,
которая хранит текстовые описания товаров -
таблицу
oc_seo_url,
которая пришла на смену oc_url_alias в OpenCart 3.x