Как сделать ЧПУ?
Как сделать ЧПУ?
Здравствуйте!
Подскажите пожалуйста как можно сделать ЧПУ
Сейчас категории товара и сам товар отображаются по ссылкам
http://дверной-эксперт.рф/catalog/5
http://дверной-эксперт.рф/product/5/20
Очень хотелось бы переделать в вид
http://дверной-эксперт.рф/polimerno-poroshkovye-dveri
http://дверной-эксперт.рф/polimerno-por ... e-dveri/20
Даже не знаю с чего начать
Подскажите пожалуйста как можно сделать ЧПУ
Сейчас категории товара и сам товар отображаются по ссылкам
http://дверной-эксперт.рф/catalog/5
http://дверной-эксперт.рф/product/5/20
Очень хотелось бы переделать в вид
http://дверной-эксперт.рф/polimerno-poroshkovye-dveri
http://дверной-эксперт.рф/polimerno-por ... e-dveri/20
Даже не знаю с чего начать
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
сам транислит в категории присутствует - поле "link"
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
Спасибо за помощь, но почему то в моём случае я правил для категорий в UrlManager не обнаружил, зато нашел их в файле
/modules/catalog/config/routes.php
видимо эти правил как то автоматически подключаются при обработке этого модуля, который тоже где то подключается
добавил туда своё
'polimerno-poroshkovye-dveri' => 'catalog/default/view',
далее в контролере хотел добавить обработчик на 'polimerno-poroshkovye-dveri/' присвоить айди 5 и по идее должно работать,
добавил в файле
modules/catalog/controllers/DefaultController.php
в фукнции
и ... облом
на запрос /polimerno-poroshkovye-dveri
получаю 404
на запрос /catalog/5 - die('actionView') отрабатывает корректно
значит моё правило почему-то не сработало
/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]
Re: Как сделать ЧПУ?
моё решение
подскажите как такую проверку на языке yii2 сделать
а то наверное не айс такое решение
Код: Выделить всё
if($_SERVER["REQUEST_URI"]=="/polimerno-poroshkovye-dveri") $cat_id = 5;
а то наверное не айс такое решение
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
работать то работает, но вот генерация адресов категорий то всё равно по старому работает
http://дверной-эксперт.рф/catalog/5
т.е. /catalog/<cat_id>
нужно ещё найти где адреса генерируются
http://дверной-эксперт.рф/catalog/5
т.е. /catalog/<cat_id>
нужно ещё найти где адреса генерируются
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
и в идеале не статикой прописывать правила а из БД получать
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
вместо
'polimerno-poroshkovye-dveri' => 'catalog/default/view',
добавил правило
'<url>' => 'catalog/default/view',
http://дверной-эксперт.рф/polimerno-poroshkovye-dveri тоже работает т.к. более общий случай
но тогда перестаёт работать общий урл
http://дверной-эксперт.рф/catalog
видимо лучше статическими правилами для каждой категории пропишу - всё равно эти категории добавляться будут очень редко
'polimerno-poroshkovye-dveri' => 'catalog/default/view',
добавил правило
'<url>' => 'catalog/default/view',
http://дверной-эксперт.рф/polimerno-poroshkovye-dveri тоже работает т.к. более общий случай
но тогда перестаёт работать общий урл
http://дверной-эксперт.рф/catalog
видимо лучше статическими правилами для каждой категории пропишу - всё равно эти категории добавляться будут очень редко
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
ссылки для левого меню формируются в виджете левого меню командой
$this->catalog = CatalogMenuHelper::getMenu(false);
ещё бы найти этот хэлпер
$this->catalog = CatalogMenuHelper::getMenu(false);
ещё бы найти этот хэлпер
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
удобная штука PHPStorm - удерживая ctr кликнул по CatalogMenuHelper::getMenu(false); и провалился в этот хэлпер!
components/CatalogMenuHelper.php
components/CatalogMenuHelper.php
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
находим строчку формирования адреса
'url' => '/catalog/'.$category['id'],
и меняем её
'url' => '/'.$category['link'],
вуаля - меню сформировалось в ЧПУ виде!
'url' => '/catalog/'.$category['id'],
и меняем её
'url' => '/'.$category['link'],
вуаля - меню сформировалось в ЧПУ виде!
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
ну и добавляем в .htaccess 301 редирект со старой адресации
вида
http://дверной-эксперт.рф/catalog/1
на новую
http://дверной-эксперт.рф/metallicheskie-dveri
вида
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]
Re: Как сделать ЧПУ?
обнаружил ещё ссылки на категории в старом формате в подножии сайта - видимо виджет аля футер ... нужно найти и сделать соответствующую замену
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
а не так страшен этот yii2
задачу практически методом научного тыка сделал
задачу практически методом научного тыка сделал
Последний раз редактировалось GTAlex 2017.03.31, 10:50, всего редактировалось 1 раз.
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
да, самому не нравится статическое прописание маршрутов, но я так понимаю для нормального решения нужно всё таки /catalog/ в адрес запихатьKrash писал(а): ↑2017.03.31, 10:44 https://yii2-cookbook.readthedocs.io/using-slugs/
http://www.yiiframework.com/doc-2.0/yii ... avior.html
Может лучше с этим?
я ля
http://дверной-эксперт.рф/catalog/kovanye-izdelija
но чисто визуально лучше без /catalog/
http://дверной-эксперт.рф/kovanye-izdelija
т.к. эти каталоги делаются практически единожды - думаю оставить как сделал, в явном виде прописывая link категорий и назначая соответствующий id
[url = "http://gtalex.ru/"]Мой блог[/url]
Re: Как сделать ЧПУ?
Вы правы - костыль жёстский получился
подумаю как более правильно реализовать ...
[url = "http://gtalex.ru/"]Мой блог[/url]
- proctoleha
- Сообщения: 298
- Зарегистрирован: 2016.07.10, 19:00
Re: Как сделать ЧПУ?
[oftop]
Вот насколько все-таки дружелюбное сообщество Yii2. Я бы на такой вопрос ответил: изучаем матчасть: что такое роутинг и мршрутизация.
[/oftop]
Вот насколько все-таки дружелюбное сообщество Yii2. Я бы на такой вопрос ответил: изучаем матчасть: что такое роутинг и мршрутизация.
[/oftop]
Вот за что я не люблю линукс, так это за свои кривые, временами, руки