Автор Тема: ЧПУ интернет-магазина Prestashop  (Прочитано 8486 раз)

08 Июль 2013, 17:41:30
  • Пользователь
  • **
  • Сообщений: 52
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Дорогие форумчане, подскажите плиз где рыть полную реализацию ЧПУ, потому что в магазине есть подкатегории товаров, но в url они не отображаются... т.е. должно быть site.ru/category1/category2/tovar (category1 и category2 соответственно названии категории), а открывается сразу site.ru/tovar.
ЧПУ включены, работает нормально, но подкатегории в адресе страницы не отображает. Помогите!!!!!  :-[
08 Июль 2013, 18:34:09
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Задайте правило "Путь к товарам" в меню "Настройки > SEO и URLs".
По умолчанию правило такое
{category:/}{id}-{rewrite}{-:ean13}.html  Путь к товару с указанием категории.
Под-категорию нет возможности указать.
Вам нужно будет переделать функцию createUrl класса Dispatcher, чтобы добавить в адрес вложенные категории.
08 Июль 2013, 18:46:06
Ответ #2
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +206/-0
    • Просмотр профиля
Многоуровневые чпу
Наверное есть и еще похожие темы.
09 Июль 2013, 13:40:25
Ответ #3
  • Пользователь
  • **
  • Сообщений: 52
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Под-категорию нет возможности указать.
Вам нужно будет переделать функцию createUrl класса Dispatcher, чтобы добавить в адрес вложенные категории.

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

Мне нужна именно подкатегория, т.к. сейчас конечное отображение урла товара идет порядка предыдущая категория - товар. Как сделать чтобы указывалась и категория идущая выше?
09 Июль 2013, 13:40:48
Ответ #4
  • Пользователь
  • **
  • Сообщений: 52
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Многоуровневые чпу
Наверное есть и еще похожие темы.

Все что находила не помогло...
09 Июль 2013, 14:15:26
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Каким образом это можно сделать ( переделать функцию 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]*'),
),
),
09 Июль 2013, 14:23:30
Ответ #6
  • Пользователь
  • **
  • Сообщений: 52
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
И еще подскажите пожалуйста куда это все писать, а то я уже вообще запуталась что к чему, уже кучу способов перепробовав...
09 Июль 2013, 14:51:16
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Цитата: DarinSr
Под-категорию нет возможности указать.
Вам нужно будет переделать функцию createUrl класса Dispatcher, чтобы добавить в адрес вложенные категории.
Чтобы это сделать, нужно очень хорошо знать PHP и Prestashop. Если вы не обладаете такими знаниями, то лучше ничего не трогать в этом файле.
Цитата: Jenny
должно быть site.ru/category1/category2/tovar (category1 и category2 соответственно названии категории)
В Prestashop нет такой функции. Адрес страницы продукта формируется так:
http://site.ru/категория-последнего-уровеня/ID-товар.htmlИзменяя правила для ЧПУ можно удалить категорию из URL товара. Стандарными возможностями больше ничего сделать нельзя.
Cоздание интернет сайтов Webstudio UwK
09 Июль 2013, 14:56:19
Ответ #8
  • Пользователь
  • **
  • Сообщений: 52
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Очень жаль...  :( Большое спасибо
30 Октябрь 2014, 14:24:59
Ответ #9
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Здравствуйте, подскажите пожалуйста где в Dispatcher.php нужно сделать изменения,чтобы удалить категорию из URL товара?

Я попытался поправить вот этот код в диспетчере,но результата нет:
'product_rule' => array(
'controller' => 'product',
'rule' => '{category:/}{id}-{rewrite}{-:ean13}.html',
изменил на следующее:
'product_rule' => array(
'controller' => 'product',
'rule' => '{rewrite}{-:ean13}.html',
30 Октябрь 2014, 14:58:16
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
И не будет, так как это начальный этап формирования ссылкок. А есть еще надстройки в seo url и в модулях. Исправлять придеться чуть ли не каждый модуль. А если в шаблонах есть прямые ссылки, то и шаблоны править.
Вопрос - для чего это делать?
Для сео оптимизации? Так это не нужно, влияния ноль, лишняя работа. Это уже обсуждали много раз.
Для посетителя, чтоб лучше запоминалось? Сейчас никто на запоминает ссылки, просто заносят в избранное.
Если только поиграться, поизучать prestashop. Ну тогда лучше самому поразбираться, это поможет глубже узнать prestashop.
30 Октябрь 2014, 15:02:19
Ответ #11
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Спасибо за подробное описание.
30 Октябрь 2014, 15:06:07
Ответ #12
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 885
  • Репутация: +206/-0
    • Просмотр профиля
Здравствуйте, подскажите пожалуйста где в 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 прав, это ненужно ни для оптимизации, ни для клиентов.