Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

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

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

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

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

Надіслати
Поділитися на інших сайтах


  • 8 months later...

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

Змінено користувачем kosuha606
Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах

  • 1 month later...

Всем привет. не знаю что там может или не может встроенный чпу, но проблему с 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

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

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

Надіслати
Поділитися на інших сайтах


  • 1 month later...
On 11/13/2018 at 8:30 AM, lexxkrt said:

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

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

Змінено користувачем vitalino000
Надіслати
Поділитися на інших сайтах


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

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

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

Скриншот 28-09-2018 123201.jpg


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];
					}

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.