Ответить Новая тема Новый опрос 
 Путь к странице CMS
mostorg
Новичок
Сообщений: 2
Регистрация: 07-11-2014


25-06-2015 05:25
Здравствуйте.
Просмотрел кучу форумов, но ответ на свой вопрос так и не нашёл.
Суть проблемы:
Преста 1.6.0.9 и второй сайт 1.6.0.14 хочу путь к странице cms сделать автоматом наподобие как путь к товару, т.е. :
site.ru/категория/статья но в настройках сео в админке такое можно поставить только для пути к товару {category:/}{rewrite}/
для пути к странице цмс такое не прокатит.
Можно конечно ручками вбить например: сайт.ру/инфо/статья , но категорий со статьями будет много и на разные темы.
Есть ещё вариант {meta_keywords}/{rewrite} и в каждой статье в качестве кейвордс вставлять название категории, но тогда нельзя пользоваться кейвордами для самой статьи.

Сейчас например ehk к статье выглядит так сайт.ru/ватрушка-красная.html а хлебные крошки чуть ниже так: сайт.ru/ватрушки/ватрушка-красная.html

Кто нибудь сталкивался с этим? как пропилить, что бы было так же как с товарами?
и желательно чтоб и у товаров и у cms страниц урл заканчивался на / (сейчас так можно делать либо для товаров, либо для страницы cms).

Мега огромное спасибо тому кто поможет - весь мозг уже себе взорвал....

И ещё может кто посоветует хороший модуль для редиректа дублирующихся страниц??
Спасибо.
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


25-06-2015 16:01
1. Откройте файл /classes/Dispatcher.php поднимите правила cms_rule и
Код:
cms_category_rule
в самый верх (до category_rule).

2. Откройте файл /classes/Link.php найдите метод getCMSLink добавьте после:
Код:
if (!is_object($cms))
{

Код:
if($c = new CMS((int)$cms))
    $cat = CMSCategory::getUrlRewriteInformations($c->id_cms_category);


Код:
return $url.$dispatcher->createUrl('cms_rule', $id_lang, array('id' => (int)$cms, 'rewrite' => (string)$alias), $this->allow, '', $id_shop);

замените на:
Код:
return $url.$dispatcher->createUrl('cms_rule', $id_lang, array('id' => (int)$cms, 'cms_rewrite' => (isset($cat[0]['link_rewrite']) ? $cat[0]['link_rewrite'] : null), 'rewrite' => (string)$alias), $this->allow, '', $id_shop);


после:
Код:
$params['id'] = $cms->id;

добавьте:
Код:
$cat = CMSCategory::getUrlRewriteInformations($cms->id_cms_category);
$params['cms_rewrite'] = (isset($cat[0]['link_rewrite']) ? $cat[0]['link_rewrite'] : null);


3. в cms_rule:
Код:
'rule' =>        'content/{id}-{rewrite}',

замените на:
Код:
'rule' =>        '{cms_rewrite:/}{id}-{rewrite}/',

после:
Код:
'rewrite' =>        array('regexp' => '[_a-zA-Z0-9-\pL]*'),

добавьте:
Код:
'cms_rewrite' =>        array('regexp' => '[_a-zA-Z0-9-\pL]*'),


в cms_category_rule
Код:
'rule' =>        'content/category/{id}-{rewrite}',

замените на:
Код:
'rule' =>        '{id}-{rewrite}',



Цитата:( mostorg @ 25-06-2015 06:25 Смотреть сообщение )
И ещё может кто посоветует хороший модуль для редиректа дублирующихся страниц??

В prestashop (если не переписаны контроллеры / классы) нет возможности добавить (создать) дублирующую страницу!
canonicalRedirection обрабатывает каждый запрос.
Если подобная ошибка возникает - опишите подробнее (приложите ссылки).
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос