Jump to content

Recommended Posts

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

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

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

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

Share this post


Link to post
Share on other sites

 

Share this post


Link to post
Share on other sites

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

Edited by kosuha606

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
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

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

Share this post


Link to post
Share on other sites
11 часов назад, lexxkrt сказал:

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

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

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

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

Share this post


Link to post
Share on other sites
10 hours ago, Dimasscus said:

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

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

Share this post


Link to post
Share on other sites
On 11/13/2018 at 8:30 AM, lexxkrt said:

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

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

Edited by vitalino000

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Третий день копаюсь в 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!

Edited by Scyth

Share this post


Link to post
Share on other sites
10 минут назад, Scyth сказал:

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

ШО за бред?

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

 

 

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

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

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

Share this post


Link to post
Share on other sites
9 часов назад, chukcha сказал:

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

 

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

 

 

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

Edited by Scyth

Share this post


Link to post
Share on other sites

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 ... для конкретных маршрутов.

Edited by Scyth

Share this post


Link to post
Share on other sites

В общем доработал коробочное решение.
Базируется полностью на стандартной функциональности 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. Для других версий не тестировалось.

Edited by Scyth

Share this post


Link to post
Share on other sites

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

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

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

И т.д.

 

Share this post


Link to post
Share on other sites
2 часа назад, chukcha сказал:

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


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

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

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

Edited by Scyth

Share this post


Link to post
Share on other sites

о... мАмАдАрАгАя...

Share this post


Link to post
Share on other sites
6 часов назад, Scyth сказал:

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

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

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

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

  • +1 1

Share this post


Link to post
Share on other sites
13 часов назад, Otvet сказал:

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

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

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


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

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

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

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

Edited by Scyth

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
On 12/24/2018 at 12:22 AM, Scyth said:

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

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

 

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

 

Edited by lexxkrt

Share this post


Link to post
Share on other sites
3 минуты назад, lexxkrt сказал:

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

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

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

  • +1 1

Share this post


Link to post
Share on other sites
В 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];
					}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By SirGrey
      Довольно часто требуется дополнительный блок ссылок в категории.
      К примеру если на сайте есть SEO фильтр и нужно сделать ссылки на страницы результатов.
      Так же это могут быть коллекции, теги да и просто любая страница с информацией.
       

       
       
    • By SirGrey
      450.00 руб
      Скачать/Купить дополнение


      Блок ссылок для категории
      Довольно часто требуется дополнительный блок ссылок в категории.
      К примеру если на сайте есть SEO фильтр и нужно сделать ссылки на страницы результатов.
      Так же это могут быть коллекции, теги да и просто любая страница с информацией.
       

       
       
      Добавил SirGrey Добавлено 09.07.2020 Категория Модули Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0 ocStore 3.0 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет Старая цена 0  
    • By zCarot
      Модуль для создания страницы загрузок -  добавление файлов прайс-листов  и ссылок 
      Удобное управление файлами в админке

      Посмотреть Demo: Ocstore 3.0.2
      Демо админки : Demo/demo  - Список файлов  - Список групп

      Основной функционал 

      Настройка в модуле
      Статус Показать дату Показать скачивания  Показать размер Стиль кнопки скачать Стиль кнопки перейти Мета H1 Мета тег Title Мета тег Description Мета тег Keywords Описание верх Описание низ  Описание справа  Группы файлов 
      Название  Описание Сортировка Статус Фильтр по статусу и названию Список файлов
      Название файла  Описание файла  Файл или ссылка  Маска Кол-во загрузок Выбор группы загрузок Дата добавления  Статус Сортировка Фильтр по - название - группа - статус  В модуле есть Ocmod файл нужен только для добавления ссылок в меню в админке 
      Установка стандартная 
      через OCMOD модификаторы или загрузить файлы в корень магазина по папкам
    • By zCarot
      1 300.00 руб
      Скачать/Купить дополнение


      Страница загрузок - файлы, прайсы, ссылки
      Модуль для создания страницы загрузок -  добавление файлов прайс-листов  и ссылок 
      Удобное управление файлами в админке

      Посмотреть Demo: Ocstore 3.0.2
      Демо админки : Demo/demo  - Список файлов  - Список групп

      Основной функционал 

      Настройка в модуле
      Статус Показать дату Показать скачивания  Показать размер Стиль кнопки скачать Стиль кнопки перейти Мета H1 Мета тег Title Мета тег Description Мета тег Keywords Описание верх Описание низ  Описание справа  Группы файлов 
      Название  Описание Сортировка Статус Фильтр по статусу и названию Список файлов
      Название файла  Описание файла  Файл или ссылка  Маска Кол-во загрузок Выбор группы загрузок Дата добавления  Статус Сортировка Фильтр по - название - группа - статус  В модуле есть Ocmod файл нужен только для добавления ссылок в меню в админке 
      Установка стандартная 
      через OCMOD модификаторы или загрузить файлы в корень магазина по папкам
      Добавил zCarot Добавлено 18.09.2020 Категория Модули Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет Старая цена 1500  
    • By dreanei23
      Позволяет массово создать/обновить/удалить seo_url, задать префиксы и суффиксы (это не тоже, что .html!) для генерации url
       
      ВНИМАНИЕ! Поддерживает только русский язык (ru-ru)!
       
      ВАЖНО! Не работает с мультимагазином (создает seo_url только для основного магазина). Не работает с мультиязычностью (создает seo_url только для языка, который по-умолчанию, обычно это русский язык)
       
      При создании генерирует url из следующих полей:
       
      Товары:
      product_id model sku name (делает транслитерацию на английский по всем правилам url)  
      Категории:
      category_id name (делает транслитерацию на английский по всем правилам url)  
      Производители:
      manufacturer_id name (делает транслитерацию на английский по всем правилам url)  
       
      УСТАНОВКА
      устанавливается как обычно, через установочник модификаторов opencart
      никакие файлы не заменяет
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.