Страница 1 из 1

Как сделать ЧПУ?

Добавлено: 2017.03.31, 07:20
GTAlex
Здравствуйте!
Подскажите пожалуйста как можно сделать ЧПУ

Сейчас категории товара и сам товар отображаются по ссылкам
http://дверной-эксперт.рф/catalog/5
http://дверной-эксперт.рф/product/5/20

Очень хотелось бы переделать в вид
http://дверной-эксперт.рф/polimerno-poroshkovye-dveri
http://дверной-эксперт.рф/polimerno-por ... e-dveri/20

Даже не знаю с чего начать :(

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 07:22
GTAlex
сам транислит в категории присутствует - поле "link"

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 07:45
ElisDN

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 09:51
GTAlex
Спасибо за помощь, но почему то в моём случае я правил для категорий в UrlManager не обнаружил, зато нашел их в файле
/modules/catalog/config/routes.php
видимо эти правил как то автоматически подключаются при обработке этого модуля, который тоже где то подключается

Код: Выделить всё

return array(
….
    'catalog/search' => 'catalog/default/search',
    'catalog/find' => 'catalog/default/find',
    'catalog/sale' => 'catalog/default/sale',
    'catalog/change_view' => 'catalog/default/change_view',
    'catalog/<url>' => 'catalog/default/view',
    'catalog/page/<page:\d+>' => 'catalog/default/index',

    'product/<id_cat>/<id>' => 'catalog/product/index'
);
добавил туда своё
'polimerno-poroshkovye-dveri' => 'catalog/default/view',

далее в контролере хотел добавить обработчик на 'polimerno-poroshkovye-dveri/' присвоить айди 5 и по идее должно работать,

добавил в файле
modules/catalog/controllers/DefaultController.php

в фукнции

Код: Выделить всё

public function actionView() {
        if($_SERVER[REMOTE_ADDR]=='мой IP') {
            die('actionView');
        }
и ... облом
на запрос /polimerno-poroshkovye-dveri
получаю 404 :(

на запрос /catalog/5 - die('actionView') отрабатывает корректно
значит моё правило почему-то не сработало :(

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 09:55
GTAlex
упс, заработало вроде ...

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:01
GTAlex
моё решение

Код: Выделить всё

if($_SERVER["REQUEST_URI"]=="/polimerno-poroshkovye-dveri")  $cat_id = 5;
подскажите как такую проверку на языке yii2 сделать :)
а то наверное не айс такое решение

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:03
GTAlex
работать то работает, но вот генерация адресов категорий то всё равно по старому работает
http://дверной-эксперт.рф/catalog/5
т.е. /catalog/<cat_id>
нужно ещё найти где адреса генерируются

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:05
GTAlex
и в идеале не статикой прописывать правила а из БД получать

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:09
GTAlex
вместо
'polimerno-poroshkovye-dveri' => 'catalog/default/view',
добавил правило
'<url>' => 'catalog/default/view',
http://дверной-эксперт.рф/polimerno-poroshkovye-dveri тоже работает т.к. более общий случай

но тогда перестаёт работать общий урл
http://дверной-эксперт.рф/catalog

видимо лучше статическими правилами для каждой категории пропишу - всё равно эти категории добавляться будут очень редко

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:25
GTAlex
ссылки для левого меню формируются в виджете левого меню командой
$this->catalog = CatalogMenuHelper::getMenu(false);
ещё бы найти этот хэлпер

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:27
GTAlex
удобная штука PHPStorm - удерживая ctr кликнул по CatalogMenuHelper::getMenu(false); и провалился в этот хэлпер!

components/CatalogMenuHelper.php

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:29
GTAlex
находим строчку формирования адреса
'url' => '/catalog/'.$category['id'],
и меняем её
'url' => '/'.$category['link'],
вуаля - меню сформировалось в ЧПУ виде!

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:36
GTAlex
ну и добавляем в .htaccess 301 редирект со старой адресации
вида
http://дверной-эксперт.рф/catalog/1
на новую
http://дверной-эксперт.рф/metallicheskie-dveri

Код: Выделить всё

Redirect 301 /catalog/1 /metallicheskie-dveri
Redirect 301 /catalog/2 /mezhkomnatnye-dveri
Redirect 301 /catalog/3 /aljuminievye-dveri
Redirect 301 /catalog/4 /aljuminievye-dveri
Redirect 301 /catalog/5 /polimerno-poroshkovye-dveri

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:38
GTAlex
обнаружил ещё ссылки на категории в старом формате в подножии сайта - видимо виджет аля футер ... нужно найти и сделать соответствующую замену

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:44
Krash

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:44
GTAlex
а не так страшен этот yii2 :)
задачу практически методом научного тыка сделал :)

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:48
GTAlex
да, самому не нравится статическое прописание маршрутов, но я так понимаю для нормального решения нужно всё таки /catalog/ в адрес запихать

я ля
http://дверной-эксперт.рф/catalog/kovanye-izdelija

но чисто визуально лучше без /catalog/
http://дверной-эксперт.рф/kovanye-izdelija
т.к. эти каталоги делаются практически единожды - думаю оставить как сделал, в явном виде прописывая link категорий и назначая соответствующий id

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:57
Krash
GTAlex писал(а): 2017.03.31, 10:48 думаю оставить как сделал
А разберетесь с этим через полгода-год?

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 10:59
GTAlex
Krash писал(а): 2017.03.31, 10:57
GTAlex писал(а): 2017.03.31, 10:48 думаю оставить как сделал
А разберетесь с этим через полгода-год?
Вы правы - костыль жёстский получился :)
подумаю как более правильно реализовать ...

Re: Как сделать ЧПУ?

Добавлено: 2017.03.31, 20:10
proctoleha
[oftop]
Вот насколько все-таки дружелюбное сообщество Yii2. Я бы на такой вопрос ответил: изучаем матчасть: что такое роутинг и мршрутизация.
[/oftop]