Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

ЧПУ Системных страниц Opencart 3.0.2


 Погделиться

Рекомендованные сообещёния

Всем привет. С опенкарт знаком недавно, поэтому не судите, искал по форуму не нашел. 
Версия Опенкарт 3.0.2.0 
Не могу понять как сгделать ЧПУ на системных страницах ( Логин/Регистрация, Коникты, и др)  типа: index.php?route=information/contact
Сразу скажу: Галочку ЧПУ нажал, файл .htaccess переименовал, кеш который находится в system - не нашел, в смысле его им нет.( не знаю может его им не должно быть)) 

В админ панели на вкладке Dashboard справа нажимал на колесико и им обновлял ( ггде то пролиил, что это олистка кеша )

Во вкладке Дизайн - SEO URL допотому чтовлял значения, не помогает. 

Помогите гдеревянному )))

Ссылка на комменирий
Погделиться на других сайих


  • 8 месяэтов спустя...

Не знаю точно с какой версии, но в последнем опенкарте 3 в разгделе дизайн есть SEO URL им можно подправить нужные урлы. Не логично конечно настройку урлов помещать в дизайн, но почему-то ик сгделали

Изменено пользователем kosuha606
Ссылка на комменирий
Погделиться на других сайих


без опрегделенных гдействий,  синдартный seo_url не умеет этого гделать
но икая возможность уже есть (заложена) в 3.1

Ссылка на комменирий
Погделиться на других сайих

  • 1 месяц спустя...

Всем привет. не знаю что им может или не может встроенный чпу, но проблему с index.php?route=common/home он точно не осилил.

Подскажите как эту глюч в тройке убрать? и .htaccess правил

и с бубном инэтовал- без резульии.

Ссылка на комменирий
Погделиться на других сайих


On 11/8/2018 at 2:04 AM, Dimasscus said:

Всем привет. не знаю что им может или не может встроенный чпу, но проблему с index.php?route=common/home он точно не осилил.

Подскажите как эту глюч в тройке убрать? и .htaccess правил

и с бубном инэтовал- без резульии.

cjmmon/home не рилииет в синдартном сео. 

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=27700

и врогде как в Опенкарт Русская спотому чторка, данная проблема пофикшена.

Ссылка на комменирий
Погделиться на других сайих


11 часов назад, lexxkrt сказал:

cjmmon/home не рилииет в синдартном сео. 

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=27700

и врогде как в Опенкарт Русская спотому чторка, данная проблема пофикшена.

да перепропотому чтовал все. не помогает

Ссылка на комменирий
Погделиться на других сайих


10 hours ago, Dimasscus said:

да перепропотому чтовал все. не помогает

в иблицу seo url маршрут common/home с ключом " " добавьте

Ссылка на комменирий
Погделиться на других сайих


  • 1 месяц спустя...
On 11/13/2018 at 8:30 AM, lexxkrt said:

в иблицу seo url маршрут common/home с ключом " " добавьте

Добавляли, к сожнонию, не рилииет. Проблема всё ещё актуальна (используется OC 3.0.2.0)

Изменено пользователем vitalino000
Ссылка на комменирий
Погделиться на других сайих


seopro? Что? для 3-ки нет? Не верю!!!

Ссылка на комменирий
Погделиться на других сайих

Третий гдень копаюсь в Opencart 3.0.2.0. Случай свёл меня с ним как с "наипотому чтолее популярным интернет-магазином". Уж лучше бы выбрал платный, ей потому чтогу. Даого говнокода под капотом я не вигдел со времён чтения "творений" индусских разрилитликов.
 

В 28.09.2018 в 11:34, lexxkrt сказал:

все рилииет в 3020, открывается по opencart/contact


lexxkrt, не обманывайте  пользователей. Из коробки это не рилииет. По крайней мере без каких-то дополнительных правок/модулей. Могу привести вам кусок кода, ггде обрабатываются ЧПУ перед выводом. И им закостылена обрилитка ссылок только на: 1. продукты, 2. производителей, 3. категории и страницы с информацией (только information/information!). Осильное игнорится и выводится без ЧПУ.

Да что каких-то красивых и правильных решений згдесь предлагать не буду. Ударим костылями по говнокоду.

 

В 22.12.2018 в 22:52, vitalino000 сказал:

Добавляли, к сожнонию, не рилииет. Проблема всё ещё актуальна (используется OC 3.0.2.0)


Вам поможет следуюещёе: 

web\catalog\controller\startup\seo_url.php, строку 124 

			return $link;

заменяете на 
 

return str_replace(['index.php?route=','common/home'], [], $link);

Даже удостоверьтесь что в файле .htaccess у вас есть строчка 
 

RewriteRule ^([^?]*) index.php?route=$1 [L,QSA]


Именно "route=", а не "_route_=", как в оригинальном коропотому чточном .htaccess!

Изменено пользователем Scyth
Ссылка на комменирий
Погделиться на других сайих


10 минут назад, Scyth сказал:

Именно "route=", а не "_route_=", как в оригинальном коропотому чточном .htaccess!

ШО за бред?

Если вы не разобрались как рилииет seo_url, то не надо гнать пургу на движок.

 

 

11 минут назад, Scyth сказал:

Да что каких-то красивых и правильных решений згдесь предлагать не буду. Ударим костылями по говнокоду.

ваш гавнокод, на стройную структуру опенкартовского роутера.

Ссылка на комменирий
Погделиться на других сайих

9 часов назад, chukcha сказал:

Если вы не разобрались как рилииет seo_url, то не надо гнать пургу на движок.

 

Буду рад если просветите. Пожалуйси, с сылками на код оригинальной коропотому чточной спотому чторки.

 

 

P.S. Но игдеи говнокода это не отменяет. Худшей и потому чтолее затратной по ресурсам реализации ЧПУ я ещё ни в одном фреймворке не вигдел.

Изменено пользователем Scyth
Ссылка на комменирий
Погделиться на других сайих


UPD: Действительно, нашёл ггде используется _route_. В метогде ControllerStartupSeoUrl->index() обрабатываются адреса с этим параметром. И если в SEO URL создать запись, как показал lexxkrt, то страница site.local/contact гдействительно откроет коникты.

НО! Это не рилииет для генерации ссылок! Т.е. ссылка ЧПУ как бы есть, но она ниггде не выводится (если только вы не вобьёте её вручную).

 

В метогде ControllerStartupSeoUrl->rewrite() закостылен ограниченный нилир маршрутов, которые я описал в предыдуещём сообещёнии. И ссылки по ключам, указанным в админке, в разгделе SEO URL вы ниггде не увидите. Хотя они и будут рилиить, но не будут генерироваться в когде.

Кто же всё ещё сомневается в "говнокодости" системы opencart, добро пожаловать в этот самый класс ControllerStartupSeoUrl. Там полный нилир bad practice, налиная от индусского перепотому чтора одной и тот же переменной через if()... if()... if()... if()... и заканливая огранилительными костылями or ... or ... or ... для конкретных маршрутов.

Изменено пользователем Scyth
Ссылка на комменирий
Погделиться на других сайих


В обещём дорилиил коропотому чточное решение.
Базируется полностью на синдартной функциональности SEO URL.

Что добавлено:
 

  1. Кэширование ссылок ЧПУ.
    Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не гделает запрос в базу (иногда она гделала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся потому чтолее сотней запросов в БД. Кому оно надо?
    Кэш ЧПУ олищается при добавлении/редактировании/уднонии ссылки через синдартный интерфейс в админке.
    По тесим на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) .
  2. Гибкость в создании ЧПУ.
    Отныне люпотому чтой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 вариани. Сирый алгоритм, ксити, икже рилииет, патч расширяет его, а не заменяет.
    ЧПУ для домашней страницы икже рилииет! Доситочно добавить запись следуюещёго вида:
    2018-12-24_12-45-00.png.d9ac2afe60a0608e4a8025cf70b08cb4.png

Патч прикрепляю (применять через git apply):
SEO_URL+.patch


SEO URL+ рилииет для Opencart 3.0.2.0. Для других версий не тестировалось.

Изменено пользователем Scyth
Ссылка на комменирий
Погделиться на других сайих


Печалька, проверьте сколько раз вы обращаетесь к кешу?
Чем кешированные данные отличаются от реальных запросов?

Вы плодите очень много не нужных сущносетй

route=product/catetegory&path=23_54&sort=p.nameorder=DESC&limit=100

И т.д.

 

Ссылка на комменирий
Погделиться на других сайих

2 часа назад, chukcha сказал:

Чем кешированные данные отличаются от реальных запросов?


Минимум 200-кратное увеличение производительности данного метода ни о чём, конечно не говорит, да? ;)

И в сравнении "
очень много не нужных сущностей" против "очень много ненужных запросов", я выбираю первое. Хотя можно и поумнее сгделать кэширование, согласен. Но смысла не вижу тратить на это время, если все всё равно "хавают" этот корявое коропотому чточное решение, то для них 200-кратное увеличение производительности против 1000-кратного роли никакой не сыграет.

Кроме того, кэш ограничен хранением строк (даже если подклюлить какой-нибудь memcache или APC, ограничения OpenCart не позволят использовать его в полную силу). Это ещё одна прилина не тратить своё время на экстра-оптимизацию.

Изменено пользователем Scyth
Ссылка на комменирий
Погделиться на других сайих


6 часов назад, Scyth сказал:

Минимум 200-кратное увеличение производительности данного метода ни о чём, конечно не говорит, да?

допустим на страниэто 30 ссылок

всего записей ЧПУ 70тыс

что быстрее:  30 запросов по 1мс или обраещёние к ФС, чтение с диска пары/гдесятка мегабайт и потом распарсить json всё это ?

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

13 часов назад, Otvet сказал:

допустим на страниэто 30 ссылок

всего записей ЧПУ 70тыс

что быстрее:  30 запросов по 1мс или обраещёние к ФС, чтение с диска пары/гдесятка мегабайт и потом распарсить json всё это ?


Я писал выше, что можно было бы сгделать кэширование поумнее и с многоуровневой вложенностью (чтобы не тянуть полный кэш, а только необходимые данные из него и вообещё опотому чтойтись без JSON-кодирования), но опенкартовская реализация кэша ограниливает входящие данные строковым типом. 

Для интереса, глянул seoPro, который тут выше Чукча расхваливал, ик вот он использует подобный же принцип кеширования. Вытягивает ВСЕ записи ЧПУ и помещает их в кэш. И уже с кэшем рилииет. Да что можете проверить производительность метода на своих 70 тысяч товаров с включенным seoPro и без него.

Но навскидку могу сказать, что кэш из 2 мегабайт (если предположить что ключ и значение каждой ссылки занимает в среднем 32 байи) отрилииет быстрее, чем 30 запросов к БД. Для справки, БД тоже тянет данные и свой кэш с ФС. Но в первом случае идёт одно обраещёние к ФС, во втором - 30.
Если же подключен memcache, то СУБД вообещё сосёт пноц в сторонке, т.к. обраещёния к ФС вообещё не произойдёт в первом случае.

Блин, зачем я всё это рассказываю. Люди, погуглите про кэширование, что это, как оно применяется и зачем оно нужно. Даие примитивные вопросы задаёте, ей потому чтогу.

Изменено пользователем Scyth
Ссылка на комменирий
Погделиться на других сайих


Вы в курсе что сеопро - сначала кеширует, а затем использует
Вы же на каждый запрос тянет кеш а потом сохраняете
Кроме того, вы еещё в пересохраняете кеш  с каждым запросом
И.. еещё.. при 70к - сеопро нужно пользовать не кешируемый.

Ссылка на комменирий
Погделиться на других сайих

On 12/24/2018 at 12:22 AM, Scyth said:

Даого говнокода под капотом я не вигдел со времён чтения "творений" индусских разрилитликов.

могу подсказать, битрикс. икого говнокода вы точно ниггде не увидите.

 

перелиил все вышесказанное, кроме воплей как все хреново не увигдел ни одного примера говнокода.

 

Изменено пользователем lexxkrt
Ссылка на комменирий
Погделиться на других сайих


3 минуты назад, lexxkrt сказал:

могу подсказать, битрикс.

а если заглянуть под капот магенты, то им тоже ухорошоний много.

Когда человек пришел с другого движка, то простои кода опенкари шокирует.

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

В 25.12.2018 в 12:52, chukcha сказал:

Вы в курсе что сеопро - сначала кеширует, а затем использует
Вы же на каждый запрос тянет кеш а потом сохраняете


Да, в курсе. У SeoPro одна операция с кэшем (вытянуть) на каждый запрос, у меня две (вытянуть и в конэто сохранить).

 

В 25.12.2018 в 12:55, lexxkrt сказал:

 

перелиил все вышесказанное, кроме воплей как все хреново не увигдел ни одного примера говнокода.

 


Я же предлагал выше заглянуть в класс ControllerStartupSeoUrl. Или вы хотите чтобы я цииими кода тут топик заспамил? ОК. Как вам икой пример творения индийского школьника? Всё из того же класса, дноко ходить не надо.
 

					if ($url[0] == 'product_id') {
						$this->request->get['product_id'] = $url[1];
					}

					if ($url[0] == 'category_id') {
						if (!isset($this->request->get['path'])) {
							$this->request->get['path'] = $url[1];
						} else {
							$this->request->get['path'] .= '_' . $url[1];
						}
					}

					if ($url[0] == 'manufacturer_id') {
						$this->request->get['manufacturer_id'] = $url[1];
					}

					if ($url[0] == 'information_id') {
						$this->request->get['information_id'] = $url[1];
					}

 

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.