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

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

Здравствуйте!
Подскажите пожалуйста как можно сделать ЧПУ

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

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

Даже не знаю с чего начать :(
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

сам транислит в категории присутствует - поле "link"
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение 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') отрабатывает корректно
значит моё правило почему-то не сработало :(
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

упс, заработало вроде ...
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

моё решение

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

if($_SERVER["REQUEST_URI"]=="/polimerno-poroshkovye-dveri")  $cat_id = 5;
подскажите как такую проверку на языке yii2 сделать :)
а то наверное не айс такое решение
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

работать то работает, но вот генерация адресов категорий то всё равно по старому работает
http://дверной-эксперт.рф/catalog/5
т.е. /catalog/<cat_id>
нужно ещё найти где адреса генерируются
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

и в идеале не статикой прописывать правила а из БД получать
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

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

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

видимо лучше статическими правилами для каждой категории пропишу - всё равно эти категории добавляться будут очень редко
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

ссылки для левого меню формируются в виджете левого меню командой
$this->catalog = CatalogMenuHelper::getMenu(false);
ещё бы найти этот хэлпер
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

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

components/CatalogMenuHelper.php
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

находим строчку формирования адреса
'url' => '/catalog/'.$category['id'],
и меняем её
'url' => '/'.$category['link'],
вуаля - меню сформировалось в ЧПУ виде!
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение 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
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

обнаружил ещё ссылки на категории в старом формате в подножии сайта - видимо виджет аля футер ... нужно найти и сделать соответствующую замену
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

а не так страшен этот yii2 :)
задачу практически методом научного тыка сделал :)
Последний раз редактировалось GTAlex 2017.03.31, 10:50, всего редактировалось 1 раз.
[url = "http://gtalex.ru/"]Мой блог[/url]
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

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

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

но чисто визуально лучше без /catalog/
http://дверной-эксперт.рф/kovanye-izdelija
т.к. эти каталоги делаются практически единожды - думаю оставить как сделал, в явном виде прописывая link категорий и назначая соответствующий id
[url = "http://gtalex.ru/"]Мой блог[/url]
Krash
Сообщения: 29
Зарегистрирован: 2016.04.19, 12:43

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

Сообщение Krash »

GTAlex писал(а): 2017.03.31, 10:48 думаю оставить как сделал
А разберетесь с этим через полгода-год?
GTAlex
Сообщения: 30
Зарегистрирован: 2013.12.11, 08:53
Откуда: Нск
Контактная информация:

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

Сообщение GTAlex »

Krash писал(а): 2017.03.31, 10:57
GTAlex писал(а): 2017.03.31, 10:48 думаю оставить как сделал
А разберетесь с этим через полгода-год?
Вы правы - костыль жёстский получился :)
подумаю как более правильно реализовать ...
[url = "http://gtalex.ru/"]Мой блог[/url]
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

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

Сообщение proctoleha »

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