Страница 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]