ЧПУ интернет-магазина Prestashop

Автор Jenny, 08 июля 2013, 17:41:30

« назад - далее »

Jenny

Дорогие форумчане, подскажите плиз где рыть полную реализацию ЧПУ, потому что в магазине есть подкатегории товаров, но в url они не отображаются... т.е. должно быть site.ru/category1/category2/tovar (category1 и category2 соответственно названии категории), а открывается сразу site.ru/tovar.
ЧПУ включены, работает нормально, но подкатегории в адресе страницы не отображает. Помогите!!!!!  :-[

DarinSr

Задайте правило "Путь к товарам" в меню "Настройки > SEO и URLs".
По умолчанию правило такое
{category:/}{id}-{rewrite}{-:ean13}.html 
Путь к товару с указанием категории.
Под-категорию нет возможности указать.
Вам нужно будет переделать функцию createUrl класса Dispatcher, чтобы добавить в адрес вложенные категории.

Руслан Л


Jenny

Цитата: DarinSr от 08 июля 2013, 18:34:09
Под-категорию нет возможности указать.
Вам нужно будет переделать функцию createUrl класса Dispatcher, чтобы добавить в адрес вложенные категории.

Каким образом это можно сделать ( переделать функцию createUrl класса Dispatcher)? Что именно нужно переделать?

Мне нужна именно подкатегория, т.к. сейчас конечное отображение урла товара идет порядка предыдущая категория - товар. Как сделать чтобы указывалась и категория идущая выше?

Jenny

Цитата: Руслан Л от 08 июля 2013, 18:46:06
Многоуровневые чпу
Наверное есть и еще похожие темы.

Все что находила не помогло...

DarinSr

ЦитироватьКаким образом это можно сделать ( переделать функцию createUrl класса Dispatcher)? Что именно нужно переделать?
Полностью переписать правила формирования url для товаров
'product_rule' => array(
'controller' => 'product',
'rule' => '{category:/}{id}-{rewrite}{-:ean13}.html',
'keywords' => array(
'id' => array('regexp' => '[0-9]+', 'param' => 'id_product'),
'rewrite' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'ean13' => array('regexp' => '[0-9\pL]*'),
'category' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'categories' => array('regexp' => '[/_a-zA-Z0-9-\pL]*'),
'reference' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'meta_title' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'manufacturer' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'supplier' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'price' => array('regexp' => '[0-9\.,]*'),
'tags' => array('regexp' => '[a-zA-Z0-9-\pL]*'),
),
),
// Must be after the product and category rules in order to avoid conflict
'layered_rule' => array(
'controller' => 'category',
'rule' => '{id}-{rewrite}{/:selected_filters}',
'keywords' => array(
'id' => array('regexp' => '[0-9]+', 'param' => 'id_category'),
/* Selected filters is used by the module blocklayered */
'selected_filters' => array('regexp' => '.*', 'param' => 'selected_filters'),
'rewrite' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'meta_title' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
),
),

Jenny

И еще подскажите пожалуйста куда это все писать, а то я уже вообще запуталась что к чему, уже кучу способов перепробовав...

Виталий

Цитата: DarinSr
Под-категорию нет возможности указать.
Вам нужно будет переделать функцию createUrl класса Dispatcher, чтобы добавить в адрес вложенные категории.
Чтобы это сделать, нужно очень хорошо знать PHP и Prestashop. Если вы не обладаете такими знаниями, то лучше ничего не трогать в этом файле.
Цитата: Jennyдолжно быть site.ru/category1/category2/tovar (category1 и category2 соответственно названии категории)
В Prestashop нет такой функции. Адрес страницы продукта формируется так:
http://site.ru/категория-последнего-уровеня/ID-товар.html
Изменяя правила для ЧПУ можно удалить категорию из URL товара. Стандарными возможностями больше ничего сделать нельзя.
Cоздание интернет сайтов Webstudio UwK

Jenny

Очень жаль...  :( Большое спасибо

brus powerfull

#9
Здравствуйте, подскажите пожалуйста где в Dispatcher.php нужно сделать изменения,чтобы удалить категорию из URL товара?

Я попытался поправить вот этот код в диспетчере,но результата нет:

'product_rule' => array(
'controller' => 'product',
'rule' => '{category:/}{id}-{rewrite}{-:ean13}.html',

изменил на следующее:

'product_rule' => array(
'controller' => 'product',
'rule' => '{rewrite}{-:ean13}.html',

Adik

И не будет, так как это начальный этап формирования ссылкок. А есть еще надстройки в seo url и в модулях. Исправлять придеться чуть ли не каждый модуль. А если в шаблонах есть прямые ссылки, то и шаблоны править.
Вопрос - для чего это делать?
Для сео оптимизации? Так это не нужно, влияния ноль, лишняя работа. Это уже обсуждали много раз.
Для посетителя, чтоб лучше запоминалось? Сейчас никто на запоминает ссылки, просто заносят в избранное.
Если только поиграться, поизучать prestashop. Ну тогда лучше самому поразбираться, это поможет глубже узнать prestashop.

brus powerfull

Спасибо за подробное описание.

Руслан Л

Цитата: brus powerfull от 30 октября 2014, 14:24:59
Здравствуйте, подскажите пожалуйста где в Dispatcher.php нужно сделать изменения,чтобы удалить категорию из URL товара?

Я попытался поправить вот этот код в диспетчере,но результата нет:

'product_rule' => array(
'controller' => 'product',
'rule' => '{category:/}{id}-{rewrite}{-:ean13}.html',

изменил на следующее:

'product_rule' => array(
'controller' => 'product',
'rule' => '{rewrite}{-:ean13}.html',

Это правила по умолчанию, а еще есть правила, которые сохранены в базе данных.
То что вы сделали ничего не изменило. Достаточно было изменить схему url в админке в SEO & URLs.

В остальном Adik прав, это ненужно ни для оптимизации, ни для клиентов.