Управление структурой URL
Исходя из многочисленных обращений пользователей, нашими разработчиками было принято решение добавить возможность изменить структуру URL на сайте.
Начиная с версии ImageCMS 4.12 реализована возможность убрать из URL адресов сегменты shop/category и shop/product и возможность гибкой настройки URL для товаров и категорий. Функционал, доступный в релизе ImageCMS Shop в редакциях Pro и Premium, а также для пользователей облачного решения Premmerce (ImageCMS Corporate не будет содержать данного функционала, так как в Corporate используется другая логика построения структуры URL).
- 1. Открытие функционала
- 2. Настройка URL
- 3. Настройка URL в мультиязычном магазине
- 4. Создание глобального редиректа
- 5. Частые вопросы
1. Открытие функционала
Функционал настройки URL добавлен отдельным разделом в настройках магазина.
Чтобы открыть функционал, вам необходимо перейти к разделу главного меню "Настройки" → "Настройки магазина". Далее перейдите на вкладку "URL":
2. Настройка URL
Открывшаяся форма настройки будет разделена на 2 основных блока:
- Product url - раздел настройки url для страниц товаров
- Category url - раздел настройки url для страниц категорий
По своему функциональному содержимому данные разделы абсолютно идентичны - обе формы содержат только 2 элемента:
- Prefix - поле, которое позволяет добавить произвольный сегмент в ссылку; по умолчанию - поле пустое и не используется. Если вы вставите в него определенное содержимое, то ссылка будет иметь примерно следующий вид: http://site.com/prefix/урл-страницы
- Show parent url - ячейка выбора, которая позволяет настроить отображение родительских сегментов в url конечной страницы товара или категории.
2.1. для товаров
По умолчанию, ссылка страницы товара в ImageCMS 4.12 выглядит примерно следующим образом:
httр://site-name.com/ХХХХХ
Где ХХХХХ - сегмент, состоящий из URL страницы товара (генерируется автоматически из названия товара)
Если указано значение поля Prefix, то URL страницы товара будет иметь примерно следующий вид:
http://site-name.com/prefix/ХХХХХ
Где:
- prefix - содержимое поля "Prefix"
- ХХХХХ - сегмент, состоящий из URL страницы товара (генерируется автоматически из названия товара)
Если вы желаете сохранить "традиционную" структуру URL после обновления к 4.12 - вам необходимо в поле "Prefix", для страниц товаров указать shop/product
Хотя содержимое поля "Prefix" может быть практически произвольным, что позволяет осуществлять гибкую настройку со стороны SEO, но мы крайне не рекомендуем использовать для его содержимого:
- кирилицу;
- знаки припинания, пробелы и другие символы (кроме дефиса);
- содержимое, прывышающее 60 - 80 символов.
Если для ячейки Show parent url присвоено значение "Выбрано", но поле "Prefix" пустое, то URL страницы товара будет иметь примерно следующий вид:
http://site-name.com/category-1/category-2/category-3/ХХХХХ
Где:
- category-1 - URL товарной категории первого уровня, к которой принадлежит товар
- category-2 - URL товарной категории второго уровня, к которой принадлежит товар (если таковая есть)
- category-3 - URL товарной категории третьего уровня, к которой принадлежит товар (если таковая есть)
- ХХХХХ - сегмент, состоящий из URL страницы товара (генерируется автоматически из названия товара)
Если в настройках URL для страницы товара, указано значение поля Prefix, а для ячейки Show parent url присвоено значение "Выбрано", то URL страницы товара будет иметь примерно следующий вид:
http://site-name.com/prefix/category-1/category-2/category-3/ХХХХХ
Где:
- prefix - содержимое поля "Prefix"
- category-1 - URL товарной категории первого уровня, к которой принадлежит товар
- category-2 - URL товарной категории второго уровня, к которой принадлежит товар (если таковая есть)
- category-3 - URL товарной категории третьего уровня, к которой принадлежит товар (если таковая есть)
- ХХХХХ - сегмент, состоящий из URL страницы товара (генерируется автоматически из названия товара)
2.2. для товарных категорий
По умолчанию, ссылки страниц товарных категорий в ImageCMS 4.12 выглядят примерно следующим образом:
httр://site-name.com/ХХХХХ
Где ХХХХХ - сегмент, состоящий из URL категории
Если указано значение поля Prefix, то URL страницы категории будет иметь следующий вид:
http://site-name.com/prefix/ХХХХХ
Где:
- prefix - содержимое поля "Prefix"
- ХХХХХ - сегмент, состоящий из URL категории
Если вы желаете сохранить "традиционную" структуру URL после обновления к 4.12, вам необходимо в поле "Prefix", для страниц категорий указать shop/category
Хотя содержимое поля "Prefix" может быть практически произвольным, что позволяет осуществлять гибкую настройку со стороны SEO, но мы крайне не рекомендуем использовать для его содержимого:
- кирилицу;
- знаки припинания, пробелы и другие символы (кроме дефиса);
- содержимое, прывышающее 60 - 80 символов.
Если для ячейки Show parent url присвоено значение "Выбрано", но поле "Prefix" пустое, то URL страницы категории будет иметь следующий вид:
http://site-name.com/category-1/category-2/category-3/ХХХХХ
Где:
- category-1 - URL товарной категории первого уровня, к которой принадлежит товар
- category-2 - URL товарной категории второго уровня, к которой принадлежит товар (если таковая есть)
- category-3 - URL товарной категории третьего уровня, к которой принадлежит товар (если таковая есть)
- ХХХХХ - сегмент, состоящий из URL категории
Если в настройках URL для страницы категории, указано значение поля Prefix, а для ячейки Show parent url присвоено значение "Выбрано", то URL страницы категории будет иметь примерно следующий вид:
http://site-name.com/prefix/category-1/category-2/category-3/ХХХХХ
Где:
- prefix - содержимое поля "Prefix"
- category-1 - URL товарной категории первого уровня, к которой принадлежит категории (если таковая есть)
- category-2 - URL товарной категории второго уровня, к которой принадлежит категории (если таковая есть)
- category-3 - URL товарной категории третьего уровня, к которой принадлежит категории (если таковая есть)
- ХХХХХ - сегмент, состоящий из URL категории
3. Настройка URL в мультиязычном магазине
В целом, струкрура URL в мультиязычном магазине не будет отличатся от логики описанной выше, в пунктах 2.1 и 2.2., лиш с только той разницей, что в структуру URL будет добавлен сегмент локализации (так же как и в предыдущих версиях). Например:
- http://site-name.com/ua/prefix/category-1/category-2/category-3/ХХХХХ
- http://site-name.com/en/ХХХХХ
Где ua и en - локали языковых версий (украинской и английской соответственно).
4. Создание глобального редиректа
Если у вас есть желание изменить структуру URL со старой на новую (то есть убрать сегменты shop/product и shop/category), в таком случае, вам необходимо создать глобальный редирект в файле .htaccess в корне шаблона.
- Что бы убрать сегмент shop/product вам необходимо добавить строку
RewriteRule ^shop/product/(.+)$ /$1 [R=301,L]
- Что бы убрать сегмент shop/product вам необходимо добавить строку
RewriteRule ^shop/category/(.+)$ /$1 [R=301,L]
5. Частые вопросы
Этот URL-адрес уже используется! Запросов к базе: 30
Данная ошибка возникает при создании нового товара или категории. Это значит, что url, который генерируется автоматически из названия товара (название товара переводится в транслит), уже занят другим товаром.
Подобная ошибка возникнет, если вы попытаетесь создать несколько товаров или категорий с одинаковым названием, например 2 разные подкатегории "Кросовки" в 2 разних категориях первого уровня - "Обувь мужская" и "Обувь женская".
При этом привязка товара к категории или местоположение категории в общем дереве категорий роли не играют (в системе ImageCMS Shop 4.12 учитывается только название)
Для решения проблемы вам необходимо уникализировать url в разделе настроек товара/категории в поле "URL":
%20 в URL после настроек.
Скорее всего, при указании префикса к URL страницы товара или категории, вы поместили в поле пробел (кодируется как %20).
Проблема не критична, но мы рекомендуем избегать пробелов (заменять их дефисами)
Вам необходимо проверить настройки и удалить пробелы.
Ссылки в исходном коде меню в категории, все еще с shop/category...
Если после осуществления всех необходимых настроек URL, в фильтре, в исходном коде на странице категории, у вас все еще подтягиваются старые URL категорий с сегментом shop/category
То вам необходимо в файле /templates/ваш_шаблон/shop/includes/category/category_subnav.tpl вам необходимо:
Строку кода:
<a class="sidebar-nav__link" href="{shop_url('category/' . $item->getFullPath())}">{echo $item->getName()}</a>
Заменить на:
<a class="sidebar-nav__link" href="{site_url($item->getRouteUrl())}">{echo $item->getName()}</a>
После правки - очистите кеш из админ панели.
Ссылки с shop/category в исходном коде товаров в категории
В файле product_snippet.tpl в папке /templates/ваш_шаблон/shop/includes/product - необходимо найти строку кода:
<div class="product-snippet__title">
<a class="product-snippet__title-link"
href="{shop_url('product/'.$model->getUrl())}">{echo $model->getName()}</a>
</div>
И заменить на
<div class="product-snippet__title">
<a class="product-snippet__title-link"
href="{site_url($model->getRouteUrl())}">{echo $model->getName()}</a>
</div>