chukcha Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 @Scyth Для тех кто в танке.. Это нормальная простота кода - все на ладони, что, где и когда А не навороченные роутеры из других движков Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 1 час назад, chukcha сказал: @Scyth Для тех кто в танке.. Это нормальная простота кода - все на ладони, что, где и когда А не навороченные роутеры из других движков Для тех кто плохо знаком с базовыми алгоритмами и основами ЯП: одна и та же переменная проверяется на соответствие либо через switch ... case, либо на крайний случай, через if ... else. То что выше - бессмыслица, порождённая незнанием как что работает. Когда первое же условие = true, нет смысла проверять ту же самую переменную на соответствие другим значениям. Ибо они все будут false. Называть такое "простотой кода" язык не поворачивается, т.к. это усложнение кода для обработчика. Да и чтение кода замедляет. Потому что надо каждый блок глазами пробежать, что автор имел ввиду. Точно ли там простое сравнение той же самой переменной или есть доп. условия? В случае со switch ... case код понятнее и читается быстрее. Так что это называется "грязный код", но никак не простой. И если вы не понимаете таких примитивных вещей, то не вижу смысла вообще дальше с вами вести дискуссию. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 7 минут назад, Scyth сказал: то не вижу смысла вообще дальше с вами вести дискуссию. Аналогично, потому что ваше самомнение зашкаливает. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 13 минут назад, Scyth сказал: То что выше - бессмыслица, порождённая незнанием как что работает. Я вас хочу расстроить Ио что вы видите в коде switch Реально вырождается в банальный if также как и ifelse Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 17 minutes ago, Scyth said: Называть такое "простотой кода" язык не поворачивается, т.к. это усложнение кода для обработчика обработчику насрать if там или switch/case, он все равно в двоичный код переводит, а в двоичном коде нет команды switch, он это все равно в сравнение преобразует. использование If это просто стиль написания автора такой, но данная тема не имеет отношения к теме чпу системных страниц. если вам не нравится как сделан роутер в опенкарте то не используйте опенкарт, либо сделайте свой роутер. это бесплатный продукт и вам никто ничего не должен. тысячи магазинов вполне устраивает Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 6 минут назад, lexxkrt сказал: либо сделайте свой роутер. так он "слепил" Нет чтоб сделать правильно, так берет, по его мнению г-роутер, и подвергает его модификации. И делает супер нагруженный метод.. Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 В 24.12.2018 в 12:37, Scyth сказал: Кто же всё ещё сомневается в "говнокодости" системы opencart, добро пожаловать в этот самый класс ControllerStartupSeoUrl. Там полный набор bad practice, начиная от индусского перебора одной и той же переменной через if()... if()... if()... if()... и заканчивая ограничительными костылями or ... or ... or ... для конкретных маршрутов. https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 16 часов назад, Otvet сказал: https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php В продакш версии (и даже в более поздней rc-версии) это всё ещё есть: https://github.com/opencart/opencart/blob/3.0.2.1_rc/upload/catalog/controller/startup/seo_url.php А так молодцы, поправили. Не всё так плохо у текущих контрибьюторов. В отличие от местных комментаторов, которые не понимают разницы между *if* и *else if*. Жаль только, что стабильные релизы медленно выпускаются. Версии 3.0.2.0 уже 1,5 года как, судя по оф. сайту. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 8 минут назад, Scyth сказал: Не всё так плохо у текущих контрибьюторов. Вы не понимаете, совсем, от слова совсем!!! То что есть на гите, также работает "криво". Но куда вам понять? Вы же мастер кеширвания.. Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает С другой стороны, я с вами соглашусь, что код не оптимален, избыточен. НО он рабочий -100% и отлажен миллионами экземпляров. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 к Упростителю кода.. Вы заметили что в обновленной версии нет if, а есть регулярки, как вы думаете что быстрее - реглярка или банальный if? Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 22 часа назад, chukcha сказал: Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 1 час назад, Scyth сказал: пока специального образования не получите, Когда я получил специальное образование, вас еще в проекте не было.. И скажу, вам по секрету.. на тот момент конструкций switch днем с огнем нужно было поискать.. И для вашего развития - switch - прекрасно работает и дает плюс в оптимизации кода исключительно на short jump и также табличных переходах На long jump switch - банальный if , а в случае с php - тем более. Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 3 hours ago, Scyth said: Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. как раз это вы не понимаете. если хотите говорить об оптимизации то вам куда-то сюда https://github.com/opencart/opencart/issues к Даниэлю Керру. Быть может он вас выслушает, а не "пошлет" как всех остальных. у всех есть много вопросов по "оптимизации", у меня вот первый же вопрос это по хлебным крошкам, конкретно про дублирование кода в каждом шаблоне. почему бы его не вынести в отдельный код, как например меню или строка сирч в хидере, притом что то что в хидере можно было и не выносить потому что используется только один раз. но мы пользуемся тем что есть, либо меняем под себя так как нам надо. не нравится роутер сделайте свой, выложите его, будет востребован заработаете денег на продаже его. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... serikoff Опубліковано: 6 січня 2020 Share Опубліковано: 6 січня 2020 В 24.12.2018 в 11:47, Scyth сказал: В общем доработал коробочное решение. Базируется полностью на стандартной функциональности SEO URL. Что добавлено: Кэширование ссылок ЧПУ. Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не делает запрос в базу (иногда она делала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся более сотней запросов в БД. Кому оно надо? Кэш ЧПУ очищается при добавлении/редактировании/удалении ссылки через стандартный интерфейс в админке. По тестам на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) . Гибкость в создании ЧПУ. Отныне любой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 варианта. Старый алгоритм, кстати, также работает, патч расширяет его, а не заменяет. ЧПУ для домашней страницы также работает! Достаточно добавить запись следующего вида: Патч прикрепляю (применять через git apply): SEO_URL+.patch SEO URL+ работает для Opencart 3.0.2.0. Для других версий не тестировалось. Как этот патч применить? Для OcStore 3.0.2.3 будет работать? Надіслати Поділитися на інших сайтах More sharing options... 1 month later... piccolo Опубліковано: 7 лютого 2020 Share Опубліковано: 7 лютого 2020 (змінено) Господа, вопрос то решился с ЧПУ системных страниц? Как исправить? Змінено 7 лютого 2020 користувачем piccolo Надіслати Поділитися на інших сайтах More sharing options... 1 month later... RAPOS Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 (змінено) OpenCart 3.0.3.2 Решил проблему стандартного SEO фиксом catalog\controller\startup\seo_url.php Для более ранних версий тройки должно пойти. Заменить код if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } } на if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } else { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "seo_url` WHERE `query` = '" . $data['route'] . "'"); if ($query->row) { if ($query->row['keyword'] == '/') { // From common/home $url = '/'; } else { $url = '/' . $query->row['keyword']; } } } } Да будет всем счастье! Змінено 3 квітня 2020 користувачем RAPOS Надіслати Поділитися на інших сайтах More sharing options... Middefender Опубліковано: 7 квітня 2020 Share Опубліковано: 7 квітня 2020 index.php?route=product - то есть это и /index.php?route=reviews и прочие по аналогии никак не убрать вообще? Выше метод не работает, к сожалению Помогите, пожалуйста Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Поддержка] Открытие внешних ссылок в новом окне + nofollow Автор: vayboy, 29 вересня 2016 ссылки 0 відповідей 1 221 перегляд vayboy 29 вересня 2016 [Поддержка] FastLinker - быстрый доступ к любому модулю Автор: Ngmt, 11 жовтня 2017 закладки быстрый доступ (і ще %d) Теги: закладки быстрый доступ ссылки админка администраторская панель 1 відповідь 1 034 перегляди Wild 17 листопада 2017 [Поддержка] Генерация SEO URL Автор: bodyau, 16 жовтня 2019 seourl чпу (і ще %d) Теги: seourl чпу генерация чпу url alias 1 відповідь 858 переглядів nuclearus 21 лютого 2020 [Поддержка] Блок ссылок для категории Автор: SirGrey, 9 липня 2020 категория тег ссылки (і ще %d) Теги: категория тег ссылки ссылка seo ссылки в категории 3 відповіді 1 052 перегляди SirGrey 18 жовтня 2021 [Поддержка] Удаление циклических ссылок Автор: rwebook, 17 січня 2020 удаление циклических ссылок циклические ссылки (і ще %d) Теги: удаление циклических ссылок циклические ссылки циклические ссылки 1 відповідь 902 перегляди jekyman83 2 лютого 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація ЧПУ Системных страниц Opencart 3.0.2 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Scyth Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 1 час назад, chukcha сказал: @Scyth Для тех кто в танке.. Это нормальная простота кода - все на ладони, что, где и когда А не навороченные роутеры из других движков Для тех кто плохо знаком с базовыми алгоритмами и основами ЯП: одна и та же переменная проверяется на соответствие либо через switch ... case, либо на крайний случай, через if ... else. То что выше - бессмыслица, порождённая незнанием как что работает. Когда первое же условие = true, нет смысла проверять ту же самую переменную на соответствие другим значениям. Ибо они все будут false. Называть такое "простотой кода" язык не поворачивается, т.к. это усложнение кода для обработчика. Да и чтение кода замедляет. Потому что надо каждый блок глазами пробежать, что автор имел ввиду. Точно ли там простое сравнение той же самой переменной или есть доп. условия? В случае со switch ... case код понятнее и читается быстрее. Так что это называется "грязный код", но никак не простой. И если вы не понимаете таких примитивных вещей, то не вижу смысла вообще дальше с вами вести дискуссию. 1 Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 7 минут назад, Scyth сказал: то не вижу смысла вообще дальше с вами вести дискуссию. Аналогично, потому что ваше самомнение зашкаливает. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 13 минут назад, Scyth сказал: То что выше - бессмыслица, порождённая незнанием как что работает. Я вас хочу расстроить Ио что вы видите в коде switch Реально вырождается в банальный if также как и ifelse Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 17 minutes ago, Scyth said: Называть такое "простотой кода" язык не поворачивается, т.к. это усложнение кода для обработчика обработчику насрать if там или switch/case, он все равно в двоичный код переводит, а в двоичном коде нет команды switch, он это все равно в сравнение преобразует. использование If это просто стиль написания автора такой, но данная тема не имеет отношения к теме чпу системных страниц. если вам не нравится как сделан роутер в опенкарте то не используйте опенкарт, либо сделайте свой роутер. это бесплатный продукт и вам никто ничего не должен. тысячи магазинов вполне устраивает Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 6 минут назад, lexxkrt сказал: либо сделайте свой роутер. так он "слепил" Нет чтоб сделать правильно, так берет, по его мнению г-роутер, и подвергает его модификации. И делает супер нагруженный метод.. Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 В 24.12.2018 в 12:37, Scyth сказал: Кто же всё ещё сомневается в "говнокодости" системы opencart, добро пожаловать в этот самый класс ControllerStartupSeoUrl. Там полный набор bad practice, начиная от индусского перебора одной и той же переменной через if()... if()... if()... if()... и заканчивая ограничительными костылями or ... or ... or ... для конкретных маршрутов. https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 16 часов назад, Otvet сказал: https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php В продакш версии (и даже в более поздней rc-версии) это всё ещё есть: https://github.com/opencart/opencart/blob/3.0.2.1_rc/upload/catalog/controller/startup/seo_url.php А так молодцы, поправили. Не всё так плохо у текущих контрибьюторов. В отличие от местных комментаторов, которые не понимают разницы между *if* и *else if*. Жаль только, что стабильные релизы медленно выпускаются. Версии 3.0.2.0 уже 1,5 года как, судя по оф. сайту. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 8 минут назад, Scyth сказал: Не всё так плохо у текущих контрибьюторов. Вы не понимаете, совсем, от слова совсем!!! То что есть на гите, также работает "криво". Но куда вам понять? Вы же мастер кеширвания.. Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает С другой стороны, я с вами соглашусь, что код не оптимален, избыточен. НО он рабочий -100% и отлажен миллионами экземпляров. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 к Упростителю кода.. Вы заметили что в обновленной версии нет if, а есть регулярки, как вы думаете что быстрее - реглярка или банальный if? Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 22 часа назад, chukcha сказал: Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 1 час назад, Scyth сказал: пока специального образования не получите, Когда я получил специальное образование, вас еще в проекте не было.. И скажу, вам по секрету.. на тот момент конструкций switch днем с огнем нужно было поискать.. И для вашего развития - switch - прекрасно работает и дает плюс в оптимизации кода исключительно на short jump и также табличных переходах На long jump switch - банальный if , а в случае с php - тем более. Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 3 hours ago, Scyth said: Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. как раз это вы не понимаете. если хотите говорить об оптимизации то вам куда-то сюда https://github.com/opencart/opencart/issues к Даниэлю Керру. Быть может он вас выслушает, а не "пошлет" как всех остальных. у всех есть много вопросов по "оптимизации", у меня вот первый же вопрос это по хлебным крошкам, конкретно про дублирование кода в каждом шаблоне. почему бы его не вынести в отдельный код, как например меню или строка сирч в хидере, притом что то что в хидере можно было и не выносить потому что используется только один раз. но мы пользуемся тем что есть, либо меняем под себя так как нам надо. не нравится роутер сделайте свой, выложите его, будет востребован заработаете денег на продаже его. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... serikoff Опубліковано: 6 січня 2020 Share Опубліковано: 6 січня 2020 В 24.12.2018 в 11:47, Scyth сказал: В общем доработал коробочное решение. Базируется полностью на стандартной функциональности SEO URL. Что добавлено: Кэширование ссылок ЧПУ. Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не делает запрос в базу (иногда она делала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся более сотней запросов в БД. Кому оно надо? Кэш ЧПУ очищается при добавлении/редактировании/удалении ссылки через стандартный интерфейс в админке. По тестам на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) . Гибкость в создании ЧПУ. Отныне любой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 варианта. Старый алгоритм, кстати, также работает, патч расширяет его, а не заменяет. ЧПУ для домашней страницы также работает! Достаточно добавить запись следующего вида: Патч прикрепляю (применять через git apply): SEO_URL+.patch SEO URL+ работает для Opencart 3.0.2.0. Для других версий не тестировалось. Как этот патч применить? Для OcStore 3.0.2.3 будет работать? Надіслати Поділитися на інших сайтах More sharing options... 1 month later... piccolo Опубліковано: 7 лютого 2020 Share Опубліковано: 7 лютого 2020 (змінено) Господа, вопрос то решился с ЧПУ системных страниц? Как исправить? Змінено 7 лютого 2020 користувачем piccolo Надіслати Поділитися на інших сайтах More sharing options... 1 month later... RAPOS Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 (змінено) OpenCart 3.0.3.2 Решил проблему стандартного SEO фиксом catalog\controller\startup\seo_url.php Для более ранних версий тройки должно пойти. Заменить код if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } } на if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } else { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "seo_url` WHERE `query` = '" . $data['route'] . "'"); if ($query->row) { if ($query->row['keyword'] == '/') { // From common/home $url = '/'; } else { $url = '/' . $query->row['keyword']; } } } } Да будет всем счастье! Змінено 3 квітня 2020 користувачем RAPOS Надіслати Поділитися на інших сайтах More sharing options... Middefender Опубліковано: 7 квітня 2020 Share Опубліковано: 7 квітня 2020 index.php?route=product - то есть это и /index.php?route=reviews и прочие по аналогии никак не убрать вообще? Выше метод не работает, к сожалению Помогите, пожалуйста Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Поддержка] Открытие внешних ссылок в новом окне + nofollow Автор: vayboy, 29 вересня 2016 ссылки 0 відповідей 1 221 перегляд vayboy 29 вересня 2016 [Поддержка] FastLinker - быстрый доступ к любому модулю Автор: Ngmt, 11 жовтня 2017 закладки быстрый доступ (і ще %d) Теги: закладки быстрый доступ ссылки админка администраторская панель 1 відповідь 1 034 перегляди Wild 17 листопада 2017 [Поддержка] Генерация SEO URL Автор: bodyau, 16 жовтня 2019 seourl чпу (і ще %d) Теги: seourl чпу генерация чпу url alias 1 відповідь 858 переглядів nuclearus 21 лютого 2020 [Поддержка] Блок ссылок для категории Автор: SirGrey, 9 липня 2020 категория тег ссылки (і ще %d) Теги: категория тег ссылки ссылка seo ссылки в категории 3 відповіді 1 052 перегляди SirGrey 18 жовтня 2021 [Поддержка] Удаление циклических ссылок Автор: rwebook, 17 січня 2020 удаление циклических ссылок циклические ссылки (і ще %d) Теги: удаление циклических ссылок циклические ссылки циклические ссылки 1 відповідь 902 перегляди jekyman83 2 лютого 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація ЧПУ Системных страниц Opencart 3.0.2 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 13 минут назад, Scyth сказал: То что выше - бессмыслица, порождённая незнанием как что работает. Я вас хочу расстроить Ио что вы видите в коде switch Реально вырождается в банальный if также как и ifelse Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 17 minutes ago, Scyth said: Называть такое "простотой кода" язык не поворачивается, т.к. это усложнение кода для обработчика обработчику насрать if там или switch/case, он все равно в двоичный код переводит, а в двоичном коде нет команды switch, он это все равно в сравнение преобразует. использование If это просто стиль написания автора такой, но данная тема не имеет отношения к теме чпу системных страниц. если вам не нравится как сделан роутер в опенкарте то не используйте опенкарт, либо сделайте свой роутер. это бесплатный продукт и вам никто ничего не должен. тысячи магазинов вполне устраивает Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 6 минут назад, lexxkrt сказал: либо сделайте свой роутер. так он "слепил" Нет чтоб сделать правильно, так берет, по его мнению г-роутер, и подвергает его модификации. И делает супер нагруженный метод.. Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 В 24.12.2018 в 12:37, Scyth сказал: Кто же всё ещё сомневается в "говнокодости" системы opencart, добро пожаловать в этот самый класс ControllerStartupSeoUrl. Там полный набор bad practice, начиная от индусского перебора одной и той же переменной через if()... if()... if()... if()... и заканчивая ограничительными костылями or ... or ... or ... для конкретных маршрутов. https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 16 часов назад, Otvet сказал: https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php В продакш версии (и даже в более поздней rc-версии) это всё ещё есть: https://github.com/opencart/opencart/blob/3.0.2.1_rc/upload/catalog/controller/startup/seo_url.php А так молодцы, поправили. Не всё так плохо у текущих контрибьюторов. В отличие от местных комментаторов, которые не понимают разницы между *if* и *else if*. Жаль только, что стабильные релизы медленно выпускаются. Версии 3.0.2.0 уже 1,5 года как, судя по оф. сайту. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 8 минут назад, Scyth сказал: Не всё так плохо у текущих контрибьюторов. Вы не понимаете, совсем, от слова совсем!!! То что есть на гите, также работает "криво". Но куда вам понять? Вы же мастер кеширвания.. Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает С другой стороны, я с вами соглашусь, что код не оптимален, избыточен. НО он рабочий -100% и отлажен миллионами экземпляров. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 к Упростителю кода.. Вы заметили что в обновленной версии нет if, а есть регулярки, как вы думаете что быстрее - реглярка или банальный if? Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 22 часа назад, chukcha сказал: Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 1 час назад, Scyth сказал: пока специального образования не получите, Когда я получил специальное образование, вас еще в проекте не было.. И скажу, вам по секрету.. на тот момент конструкций switch днем с огнем нужно было поискать.. И для вашего развития - switch - прекрасно работает и дает плюс в оптимизации кода исключительно на short jump и также табличных переходах На long jump switch - банальный if , а в случае с php - тем более. Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 3 hours ago, Scyth said: Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. как раз это вы не понимаете. если хотите говорить об оптимизации то вам куда-то сюда https://github.com/opencart/opencart/issues к Даниэлю Керру. Быть может он вас выслушает, а не "пошлет" как всех остальных. у всех есть много вопросов по "оптимизации", у меня вот первый же вопрос это по хлебным крошкам, конкретно про дублирование кода в каждом шаблоне. почему бы его не вынести в отдельный код, как например меню или строка сирч в хидере, притом что то что в хидере можно было и не выносить потому что используется только один раз. но мы пользуемся тем что есть, либо меняем под себя так как нам надо. не нравится роутер сделайте свой, выложите его, будет востребован заработаете денег на продаже его. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... serikoff Опубліковано: 6 січня 2020 Share Опубліковано: 6 січня 2020 В 24.12.2018 в 11:47, Scyth сказал: В общем доработал коробочное решение. Базируется полностью на стандартной функциональности SEO URL. Что добавлено: Кэширование ссылок ЧПУ. Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не делает запрос в базу (иногда она делала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся более сотней запросов в БД. Кому оно надо? Кэш ЧПУ очищается при добавлении/редактировании/удалении ссылки через стандартный интерфейс в админке. По тестам на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) . Гибкость в создании ЧПУ. Отныне любой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 варианта. Старый алгоритм, кстати, также работает, патч расширяет его, а не заменяет. ЧПУ для домашней страницы также работает! Достаточно добавить запись следующего вида: Патч прикрепляю (применять через git apply): SEO_URL+.patch SEO URL+ работает для Opencart 3.0.2.0. Для других версий не тестировалось. Как этот патч применить? Для OcStore 3.0.2.3 будет работать? Надіслати Поділитися на інших сайтах More sharing options... 1 month later... piccolo Опубліковано: 7 лютого 2020 Share Опубліковано: 7 лютого 2020 (змінено) Господа, вопрос то решился с ЧПУ системных страниц? Как исправить? Змінено 7 лютого 2020 користувачем piccolo Надіслати Поділитися на інших сайтах More sharing options... 1 month later... RAPOS Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 (змінено) OpenCart 3.0.3.2 Решил проблему стандартного SEO фиксом catalog\controller\startup\seo_url.php Для более ранних версий тройки должно пойти. Заменить код if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } } на if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } else { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "seo_url` WHERE `query` = '" . $data['route'] . "'"); if ($query->row) { if ($query->row['keyword'] == '/') { // From common/home $url = '/'; } else { $url = '/' . $query->row['keyword']; } } } } Да будет всем счастье! Змінено 3 квітня 2020 користувачем RAPOS Надіслати Поділитися на інших сайтах More sharing options... Middefender Опубліковано: 7 квітня 2020 Share Опубліковано: 7 квітня 2020 index.php?route=product - то есть это и /index.php?route=reviews и прочие по аналогии никак не убрать вообще? Выше метод не работает, к сожалению Помогите, пожалуйста Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Поддержка] Открытие внешних ссылок в новом окне + nofollow Автор: vayboy, 29 вересня 2016 ссылки 0 відповідей 1 221 перегляд vayboy 29 вересня 2016 [Поддержка] FastLinker - быстрый доступ к любому модулю Автор: Ngmt, 11 жовтня 2017 закладки быстрый доступ (і ще %d) Теги: закладки быстрый доступ ссылки админка администраторская панель 1 відповідь 1 034 перегляди Wild 17 листопада 2017 [Поддержка] Генерация SEO URL Автор: bodyau, 16 жовтня 2019 seourl чпу (і ще %d) Теги: seourl чпу генерация чпу url alias 1 відповідь 858 переглядів nuclearus 21 лютого 2020 [Поддержка] Блок ссылок для категории Автор: SirGrey, 9 липня 2020 категория тег ссылки (і ще %d) Теги: категория тег ссылки ссылка seo ссылки в категории 3 відповіді 1 052 перегляди SirGrey 18 жовтня 2021 [Поддержка] Удаление циклических ссылок Автор: rwebook, 17 січня 2020 удаление циклических ссылок циклические ссылки (і ще %d) Теги: удаление циклических ссылок циклические ссылки циклические ссылки 1 відповідь 902 перегляди jekyman83 2 лютого 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація ЧПУ Системных страниц Opencart 3.0.2 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
lexxkrt Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 17 minutes ago, Scyth said: Называть такое "простотой кода" язык не поворачивается, т.к. это усложнение кода для обработчика обработчику насрать if там или switch/case, он все равно в двоичный код переводит, а в двоичном коде нет команды switch, он это все равно в сравнение преобразует. использование If это просто стиль написания автора такой, но данная тема не имеет отношения к теме чпу системных страниц. если вам не нравится как сделан роутер в опенкарте то не используйте опенкарт, либо сделайте свой роутер. это бесплатный продукт и вам никто ничего не должен. тысячи магазинов вполне устраивает Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 6 минут назад, lexxkrt сказал: либо сделайте свой роутер. так он "слепил" Нет чтоб сделать правильно, так берет, по его мнению г-роутер, и подвергает его модификации. И делает супер нагруженный метод.. Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 В 24.12.2018 в 12:37, Scyth сказал: Кто же всё ещё сомневается в "говнокодости" системы opencart, добро пожаловать в этот самый класс ControllerStartupSeoUrl. Там полный набор bad practice, начиная от индусского перебора одной и той же переменной через if()... if()... if()... if()... и заканчивая ограничительными костылями or ... or ... or ... для конкретных маршрутов. https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 16 часов назад, Otvet сказал: https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php В продакш версии (и даже в более поздней rc-версии) это всё ещё есть: https://github.com/opencart/opencart/blob/3.0.2.1_rc/upload/catalog/controller/startup/seo_url.php А так молодцы, поправили. Не всё так плохо у текущих контрибьюторов. В отличие от местных комментаторов, которые не понимают разницы между *if* и *else if*. Жаль только, что стабильные релизы медленно выпускаются. Версии 3.0.2.0 уже 1,5 года как, судя по оф. сайту. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 8 минут назад, Scyth сказал: Не всё так плохо у текущих контрибьюторов. Вы не понимаете, совсем, от слова совсем!!! То что есть на гите, также работает "криво". Но куда вам понять? Вы же мастер кеширвания.. Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает С другой стороны, я с вами соглашусь, что код не оптимален, избыточен. НО он рабочий -100% и отлажен миллионами экземпляров. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 к Упростителю кода.. Вы заметили что в обновленной версии нет if, а есть регулярки, как вы думаете что быстрее - реглярка или банальный if? Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 22 часа назад, chukcha сказал: Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 1 час назад, Scyth сказал: пока специального образования не получите, Когда я получил специальное образование, вас еще в проекте не было.. И скажу, вам по секрету.. на тот момент конструкций switch днем с огнем нужно было поискать.. И для вашего развития - switch - прекрасно работает и дает плюс в оптимизации кода исключительно на short jump и также табличных переходах На long jump switch - банальный if , а в случае с php - тем более. Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 3 hours ago, Scyth said: Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. как раз это вы не понимаете. если хотите говорить об оптимизации то вам куда-то сюда https://github.com/opencart/opencart/issues к Даниэлю Керру. Быть может он вас выслушает, а не "пошлет" как всех остальных. у всех есть много вопросов по "оптимизации", у меня вот первый же вопрос это по хлебным крошкам, конкретно про дублирование кода в каждом шаблоне. почему бы его не вынести в отдельный код, как например меню или строка сирч в хидере, притом что то что в хидере можно было и не выносить потому что используется только один раз. но мы пользуемся тем что есть, либо меняем под себя так как нам надо. не нравится роутер сделайте свой, выложите его, будет востребован заработаете денег на продаже его. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... serikoff Опубліковано: 6 січня 2020 Share Опубліковано: 6 січня 2020 В 24.12.2018 в 11:47, Scyth сказал: В общем доработал коробочное решение. Базируется полностью на стандартной функциональности SEO URL. Что добавлено: Кэширование ссылок ЧПУ. Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не делает запрос в базу (иногда она делала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся более сотней запросов в БД. Кому оно надо? Кэш ЧПУ очищается при добавлении/редактировании/удалении ссылки через стандартный интерфейс в админке. По тестам на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) . Гибкость в создании ЧПУ. Отныне любой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 варианта. Старый алгоритм, кстати, также работает, патч расширяет его, а не заменяет. ЧПУ для домашней страницы также работает! Достаточно добавить запись следующего вида: Патч прикрепляю (применять через git apply): SEO_URL+.patch SEO URL+ работает для Opencart 3.0.2.0. Для других версий не тестировалось. Как этот патч применить? Для OcStore 3.0.2.3 будет работать? Надіслати Поділитися на інших сайтах More sharing options... 1 month later... piccolo Опубліковано: 7 лютого 2020 Share Опубліковано: 7 лютого 2020 (змінено) Господа, вопрос то решился с ЧПУ системных страниц? Как исправить? Змінено 7 лютого 2020 користувачем piccolo Надіслати Поділитися на інших сайтах More sharing options... 1 month later... RAPOS Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 (змінено) OpenCart 3.0.3.2 Решил проблему стандартного SEO фиксом catalog\controller\startup\seo_url.php Для более ранних версий тройки должно пойти. Заменить код if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } } на if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } else { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "seo_url` WHERE `query` = '" . $data['route'] . "'"); if ($query->row) { if ($query->row['keyword'] == '/') { // From common/home $url = '/'; } else { $url = '/' . $query->row['keyword']; } } } } Да будет всем счастье! Змінено 3 квітня 2020 користувачем RAPOS Надіслати Поділитися на інших сайтах More sharing options... Middefender Опубліковано: 7 квітня 2020 Share Опубліковано: 7 квітня 2020 index.php?route=product - то есть это и /index.php?route=reviews и прочие по аналогии никак не убрать вообще? Выше метод не работает, к сожалению Помогите, пожалуйста Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Поддержка] Открытие внешних ссылок в новом окне + nofollow Автор: vayboy, 29 вересня 2016 ссылки 0 відповідей 1 221 перегляд vayboy 29 вересня 2016 [Поддержка] FastLinker - быстрый доступ к любому модулю Автор: Ngmt, 11 жовтня 2017 закладки быстрый доступ (і ще %d) Теги: закладки быстрый доступ ссылки админка администраторская панель 1 відповідь 1 034 перегляди Wild 17 листопада 2017 [Поддержка] Генерация SEO URL Автор: bodyau, 16 жовтня 2019 seourl чпу (і ще %d) Теги: seourl чпу генерация чпу url alias 1 відповідь 858 переглядів nuclearus 21 лютого 2020 [Поддержка] Блок ссылок для категории Автор: SirGrey, 9 липня 2020 категория тег ссылки (і ще %d) Теги: категория тег ссылки ссылка seo ссылки в категории 3 відповіді 1 052 перегляди SirGrey 18 жовтня 2021 [Поддержка] Удаление циклических ссылок Автор: rwebook, 17 січня 2020 удаление циклических ссылок циклические ссылки (і ще %d) Теги: удаление циклических ссылок циклические ссылки циклические ссылки 1 відповідь 902 перегляди jekyman83 2 лютого 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація ЧПУ Системных страниц Opencart 3.0.2 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Otvet Опубліковано: 26 грудня 2018 Share Опубліковано: 26 грудня 2018 В 24.12.2018 в 12:37, Scyth сказал: Кто же всё ещё сомневается в "говнокодости" системы opencart, добро пожаловать в этот самый класс ControllerStartupSeoUrl. Там полный набор bad practice, начиная от индусского перебора одной и той же переменной через if()... if()... if()... if()... и заканчивая ограничительными костылями or ... or ... or ... для конкретных маршрутов. https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 16 часов назад, Otvet сказал: https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php В продакш версии (и даже в более поздней rc-версии) это всё ещё есть: https://github.com/opencart/opencart/blob/3.0.2.1_rc/upload/catalog/controller/startup/seo_url.php А так молодцы, поправили. Не всё так плохо у текущих контрибьюторов. В отличие от местных комментаторов, которые не понимают разницы между *if* и *else if*. Жаль только, что стабильные релизы медленно выпускаются. Версии 3.0.2.0 уже 1,5 года как, судя по оф. сайту. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 8 минут назад, Scyth сказал: Не всё так плохо у текущих контрибьюторов. Вы не понимаете, совсем, от слова совсем!!! То что есть на гите, также работает "криво". Но куда вам понять? Вы же мастер кеширвания.. Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает С другой стороны, я с вами соглашусь, что код не оптимален, избыточен. НО он рабочий -100% и отлажен миллионами экземпляров. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 к Упростителю кода.. Вы заметили что в обновленной версии нет if, а есть регулярки, как вы думаете что быстрее - реглярка или банальный if? Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 22 часа назад, chukcha сказал: Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 1 час назад, Scyth сказал: пока специального образования не получите, Когда я получил специальное образование, вас еще в проекте не было.. И скажу, вам по секрету.. на тот момент конструкций switch днем с огнем нужно было поискать.. И для вашего развития - switch - прекрасно работает и дает плюс в оптимизации кода исключительно на short jump и также табличных переходах На long jump switch - банальный if , а в случае с php - тем более. Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 3 hours ago, Scyth said: Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. как раз это вы не понимаете. если хотите говорить об оптимизации то вам куда-то сюда https://github.com/opencart/opencart/issues к Даниэлю Керру. Быть может он вас выслушает, а не "пошлет" как всех остальных. у всех есть много вопросов по "оптимизации", у меня вот первый же вопрос это по хлебным крошкам, конкретно про дублирование кода в каждом шаблоне. почему бы его не вынести в отдельный код, как например меню или строка сирч в хидере, притом что то что в хидере можно было и не выносить потому что используется только один раз. но мы пользуемся тем что есть, либо меняем под себя так как нам надо. не нравится роутер сделайте свой, выложите его, будет востребован заработаете денег на продаже его. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... serikoff Опубліковано: 6 січня 2020 Share Опубліковано: 6 січня 2020 В 24.12.2018 в 11:47, Scyth сказал: В общем доработал коробочное решение. Базируется полностью на стандартной функциональности SEO URL. Что добавлено: Кэширование ссылок ЧПУ. Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не делает запрос в базу (иногда она делала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся более сотней запросов в БД. Кому оно надо? Кэш ЧПУ очищается при добавлении/редактировании/удалении ссылки через стандартный интерфейс в админке. По тестам на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) . Гибкость в создании ЧПУ. Отныне любой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 варианта. Старый алгоритм, кстати, также работает, патч расширяет его, а не заменяет. ЧПУ для домашней страницы также работает! Достаточно добавить запись следующего вида: Патч прикрепляю (применять через git apply): SEO_URL+.patch SEO URL+ работает для Opencart 3.0.2.0. Для других версий не тестировалось. Как этот патч применить? Для OcStore 3.0.2.3 будет работать? Надіслати Поділитися на інших сайтах More sharing options... 1 month later... piccolo Опубліковано: 7 лютого 2020 Share Опубліковано: 7 лютого 2020 (змінено) Господа, вопрос то решился с ЧПУ системных страниц? Как исправить? Змінено 7 лютого 2020 користувачем piccolo Надіслати Поділитися на інших сайтах More sharing options... 1 month later... RAPOS Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 (змінено) OpenCart 3.0.3.2 Решил проблему стандартного SEO фиксом catalog\controller\startup\seo_url.php Для более ранних версий тройки должно пойти. Заменить код if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } } на if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } else { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "seo_url` WHERE `query` = '" . $data['route'] . "'"); if ($query->row) { if ($query->row['keyword'] == '/') { // From common/home $url = '/'; } else { $url = '/' . $query->row['keyword']; } } } } Да будет всем счастье! Змінено 3 квітня 2020 користувачем RAPOS Надіслати Поділитися на інших сайтах More sharing options... Middefender Опубліковано: 7 квітня 2020 Share Опубліковано: 7 квітня 2020 index.php?route=product - то есть это и /index.php?route=reviews и прочие по аналогии никак не убрать вообще? Выше метод не работает, к сожалению Помогите, пожалуйста Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Поддержка] Открытие внешних ссылок в новом окне + nofollow Автор: vayboy, 29 вересня 2016 ссылки 0 відповідей 1 221 перегляд vayboy 29 вересня 2016 [Поддержка] FastLinker - быстрый доступ к любому модулю Автор: Ngmt, 11 жовтня 2017 закладки быстрый доступ (і ще %d) Теги: закладки быстрый доступ ссылки админка администраторская панель 1 відповідь 1 034 перегляди Wild 17 листопада 2017 [Поддержка] Генерация SEO URL Автор: bodyau, 16 жовтня 2019 seourl чпу (і ще %d) Теги: seourl чпу генерация чпу url alias 1 відповідь 858 переглядів nuclearus 21 лютого 2020 [Поддержка] Блок ссылок для категории Автор: SirGrey, 9 липня 2020 категория тег ссылки (і ще %d) Теги: категория тег ссылки ссылка seo ссылки в категории 3 відповіді 1 052 перегляди SirGrey 18 жовтня 2021 [Поддержка] Удаление циклических ссылок Автор: rwebook, 17 січня 2020 удаление циклических ссылок циклические ссылки (і ще %d) Теги: удаление циклических ссылок циклические ссылки циклические ссылки 1 відповідь 902 перегляди jekyman83 2 лютого 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація ЧПУ Системных страниц Opencart 3.0.2 Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
Scyth Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 16 часов назад, Otvet сказал: https://github.com/opencart/opencart/blob/master/upload/catalog/controller/startup/seo_url.php В продакш версии (и даже в более поздней rc-версии) это всё ещё есть: https://github.com/opencart/opencart/blob/3.0.2.1_rc/upload/catalog/controller/startup/seo_url.php А так молодцы, поправили. Не всё так плохо у текущих контрибьюторов. В отличие от местных комментаторов, которые не понимают разницы между *if* и *else if*. Жаль только, что стабильные релизы медленно выпускаются. Версии 3.0.2.0 уже 1,5 года как, судя по оф. сайту. Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 8 минут назад, Scyth сказал: Не всё так плохо у текущих контрибьюторов. Вы не понимаете, совсем, от слова совсем!!! То что есть на гите, также работает "криво". Но куда вам понять? Вы же мастер кеширвания.. Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает С другой стороны, я с вами соглашусь, что код не оптимален, избыточен. НО он рабочий -100% и отлажен миллионами экземпляров. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 к Упростителю кода.. Вы заметили что в обновленной версии нет if, а есть регулярки, как вы думаете что быстрее - реглярка или банальный if? Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 22 часа назад, chukcha сказал: Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 1 час назад, Scyth сказал: пока специального образования не получите, Когда я получил специальное образование, вас еще в проекте не было.. И скажу, вам по секрету.. на тот момент конструкций switch днем с огнем нужно было поискать.. И для вашего развития - switch - прекрасно работает и дает плюс в оптимизации кода исключительно на short jump и также табличных переходах На long jump switch - банальный if , а в случае с php - тем более. Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 3 hours ago, Scyth said: Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. как раз это вы не понимаете. если хотите говорить об оптимизации то вам куда-то сюда https://github.com/opencart/opencart/issues к Даниэлю Керру. Быть может он вас выслушает, а не "пошлет" как всех остальных. у всех есть много вопросов по "оптимизации", у меня вот первый же вопрос это по хлебным крошкам, конкретно про дублирование кода в каждом шаблоне. почему бы его не вынести в отдельный код, как например меню или строка сирч в хидере, притом что то что в хидере можно было и не выносить потому что используется только один раз. но мы пользуемся тем что есть, либо меняем под себя так как нам надо. не нравится роутер сделайте свой, выложите его, будет востребован заработаете денег на продаже его. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... serikoff Опубліковано: 6 січня 2020 Share Опубліковано: 6 січня 2020 В 24.12.2018 в 11:47, Scyth сказал: В общем доработал коробочное решение. Базируется полностью на стандартной функциональности SEO URL. Что добавлено: Кэширование ссылок ЧПУ. Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не делает запрос в базу (иногда она делала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся более сотней запросов в БД. Кому оно надо? Кэш ЧПУ очищается при добавлении/редактировании/удалении ссылки через стандартный интерфейс в админке. По тестам на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) . Гибкость в создании ЧПУ. Отныне любой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 варианта. Старый алгоритм, кстати, также работает, патч расширяет его, а не заменяет. ЧПУ для домашней страницы также работает! Достаточно добавить запись следующего вида: Патч прикрепляю (применять через git apply): SEO_URL+.patch SEO URL+ работает для Opencart 3.0.2.0. Для других версий не тестировалось. Как этот патч применить? Для OcStore 3.0.2.3 будет работать? Надіслати Поділитися на інших сайтах More sharing options... 1 month later... piccolo Опубліковано: 7 лютого 2020 Share Опубліковано: 7 лютого 2020 (змінено) Господа, вопрос то решился с ЧПУ системных страниц? Как исправить? Змінено 7 лютого 2020 користувачем piccolo Надіслати Поділитися на інших сайтах More sharing options... 1 month later... RAPOS Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 (змінено) OpenCart 3.0.3.2 Решил проблему стандартного SEO фиксом catalog\controller\startup\seo_url.php Для более ранних версий тройки должно пойти. Заменить код if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } } на if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } else { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "seo_url` WHERE `query` = '" . $data['route'] . "'"); if ($query->row) { if ($query->row['keyword'] == '/') { // From common/home $url = '/'; } else { $url = '/' . $query->row['keyword']; } } } } Да будет всем счастье! Змінено 3 квітня 2020 користувачем RAPOS Надіслати Поділитися на інших сайтах More sharing options... Middefender Опубліковано: 7 квітня 2020 Share Опубліковано: 7 квітня 2020 index.php?route=product - то есть это и /index.php?route=reviews и прочие по аналогии никак не убрать вообще? Выше метод не работает, к сожалению Помогите, пожалуйста Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Поддержка] Открытие внешних ссылок в новом окне + nofollow Автор: vayboy, 29 вересня 2016 ссылки 0 відповідей 1 221 перегляд vayboy 29 вересня 2016 [Поддержка] FastLinker - быстрый доступ к любому модулю Автор: Ngmt, 11 жовтня 2017 закладки быстрый доступ (і ще %d) Теги: закладки быстрый доступ ссылки админка администраторская панель 1 відповідь 1 034 перегляди Wild 17 листопада 2017 [Поддержка] Генерация SEO URL Автор: bodyau, 16 жовтня 2019 seourl чпу (і ще %d) Теги: seourl чпу генерация чпу url alias 1 відповідь 858 переглядів nuclearus 21 лютого 2020 [Поддержка] Блок ссылок для категории Автор: SirGrey, 9 липня 2020 категория тег ссылки (і ще %d) Теги: категория тег ссылки ссылка seo ссылки в категории 3 відповіді 1 052 перегляди SirGrey 18 жовтня 2021 [Поддержка] Удаление циклических ссылок Автор: rwebook, 17 січня 2020 удаление циклических ссылок циклические ссылки (і ще %d) Теги: удаление циклических ссылок циклические ссылки циклические ссылки 1 відповідь 902 перегляди jekyman83 2 лютого 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація ЧПУ Системных страниц Opencart 3.0.2
chukcha Опубліковано: 27 грудня 2018 Share Опубліковано: 27 грудня 2018 к Упростителю кода.. Вы заметили что в обновленной версии нет if, а есть регулярки, как вы думаете что быстрее - реглярка или банальный if? Надіслати Поділитися на інших сайтах More sharing options... Scyth Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 22 часа назад, chukcha сказал: Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 1 час назад, Scyth сказал: пока специального образования не получите, Когда я получил специальное образование, вас еще в проекте не было.. И скажу, вам по секрету.. на тот момент конструкций switch днем с огнем нужно было поискать.. И для вашего развития - switch - прекрасно работает и дает плюс в оптимизации кода исключительно на short jump и также табличных переходах На long jump switch - банальный if , а в случае с php - тем более. Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 3 hours ago, Scyth said: Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. как раз это вы не понимаете. если хотите говорить об оптимизации то вам куда-то сюда https://github.com/opencart/opencart/issues к Даниэлю Керру. Быть может он вас выслушает, а не "пошлет" как всех остальных. у всех есть много вопросов по "оптимизации", у меня вот первый же вопрос это по хлебным крошкам, конкретно про дублирование кода в каждом шаблоне. почему бы его не вынести в отдельный код, как например меню или строка сирч в хидере, притом что то что в хидере можно было и не выносить потому что используется только один раз. но мы пользуемся тем что есть, либо меняем под себя так как нам надо. не нравится роутер сделайте свой, выложите его, будет востребован заработаете денег на продаже его. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... serikoff Опубліковано: 6 січня 2020 Share Опубліковано: 6 січня 2020 В 24.12.2018 в 11:47, Scyth сказал: В общем доработал коробочное решение. Базируется полностью на стандартной функциональности SEO URL. Что добавлено: Кэширование ссылок ЧПУ. Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не делает запрос в базу (иногда она делала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся более сотней запросов в БД. Кому оно надо? Кэш ЧПУ очищается при добавлении/редактировании/удалении ссылки через стандартный интерфейс в админке. По тестам на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) . Гибкость в создании ЧПУ. Отныне любой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 варианта. Старый алгоритм, кстати, также работает, патч расширяет его, а не заменяет. ЧПУ для домашней страницы также работает! Достаточно добавить запись следующего вида: Патч прикрепляю (применять через git apply): SEO_URL+.patch SEO URL+ работает для Opencart 3.0.2.0. Для других версий не тестировалось. Как этот патч применить? Для OcStore 3.0.2.3 будет работать? Надіслати Поділитися на інших сайтах More sharing options... 1 month later... piccolo Опубліковано: 7 лютого 2020 Share Опубліковано: 7 лютого 2020 (змінено) Господа, вопрос то решился с ЧПУ системных страниц? Как исправить? Змінено 7 лютого 2020 користувачем piccolo Надіслати Поділитися на інших сайтах More sharing options... 1 month later... RAPOS Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 (змінено) OpenCart 3.0.3.2 Решил проблему стандартного SEO фиксом catalog\controller\startup\seo_url.php Для более ранних версий тройки должно пойти. Заменить код if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } } на if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } else { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "seo_url` WHERE `query` = '" . $data['route'] . "'"); if ($query->row) { if ($query->row['keyword'] == '/') { // From common/home $url = '/'; } else { $url = '/' . $query->row['keyword']; } } } } Да будет всем счастье! Змінено 3 квітня 2020 користувачем RAPOS Надіслати Поділитися на інших сайтах More sharing options... Middefender Опубліковано: 7 квітня 2020 Share Опубліковано: 7 квітня 2020 index.php?route=product - то есть это и /index.php?route=reviews и прочие по аналогии никак не убрать вообще? Выше метод не работает, к сожалению Помогите, пожалуйста Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Поддержка] Открытие внешних ссылок в новом окне + nofollow Автор: vayboy, 29 вересня 2016 ссылки 0 відповідей 1 221 перегляд vayboy 29 вересня 2016 [Поддержка] FastLinker - быстрый доступ к любому модулю Автор: Ngmt, 11 жовтня 2017 закладки быстрый доступ (і ще %d) Теги: закладки быстрый доступ ссылки админка администраторская панель 1 відповідь 1 034 перегляди Wild 17 листопада 2017 [Поддержка] Генерация SEO URL Автор: bodyau, 16 жовтня 2019 seourl чпу (і ще %d) Теги: seourl чпу генерация чпу url alias 1 відповідь 858 переглядів nuclearus 21 лютого 2020 [Поддержка] Блок ссылок для категории Автор: SirGrey, 9 липня 2020 категория тег ссылки (і ще %d) Теги: категория тег ссылки ссылка seo ссылки в категории 3 відповіді 1 052 перегляди SirGrey 18 жовтня 2021 [Поддержка] Удаление циклических ссылок Автор: rwebook, 17 січня 2020 удаление циклических ссылок циклические ссылки (і ще %d) Теги: удаление циклических ссылок циклические ссылки циклические ссылки 1 відповідь 902 перегляди jekyman83 2 лютого 2020 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Scyth Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 22 часа назад, chukcha сказал: Для тех кто в танке разницы между if if if и if eleseif с точки зрения кода - НЕТ То что вы глазами видите короткий путь, это не значит, что так и работает Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 1 час назад, Scyth сказал: пока специального образования не получите, Когда я получил специальное образование, вас еще в проекте не было.. И скажу, вам по секрету.. на тот момент конструкций switch днем с огнем нужно было поискать.. И для вашего развития - switch - прекрасно работает и дает плюс в оптимизации кода исключительно на short jump и также табличных переходах На long jump switch - банальный if , а в случае с php - тем более. Надіслати Поділитися на інших сайтах More sharing options... lexxkrt Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 3 hours ago, Scyth said: Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. как раз это вы не понимаете. если хотите говорить об оптимизации то вам куда-то сюда https://github.com/opencart/opencart/issues к Даниэлю Керру. Быть может он вас выслушает, а не "пошлет" как всех остальных. у всех есть много вопросов по "оптимизации", у меня вот первый же вопрос это по хлебным крошкам, конкретно про дублирование кода в каждом шаблоне. почему бы его не вынести в отдельный код, как например меню или строка сирч в хидере, притом что то что в хидере можно было и не выносить потому что используется только один раз. но мы пользуемся тем что есть, либо меняем под себя так как нам надо. не нравится роутер сделайте свой, выложите его, будет востребован заработаете денег на продаже его. Надіслати Поділитися на інших сайтах More sharing options... 1 year later... serikoff Опубліковано: 6 січня 2020 Share Опубліковано: 6 січня 2020 В 24.12.2018 в 11:47, Scyth сказал: В общем доработал коробочное решение. Базируется полностью на стандартной функциональности SEO URL. Что добавлено: Кэширование ссылок ЧПУ. Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не делает запрос в базу (иногда она делала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся более сотней запросов в БД. Кому оно надо? Кэш ЧПУ очищается при добавлении/редактировании/удалении ссылки через стандартный интерфейс в админке. По тестам на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) . Гибкость в создании ЧПУ. Отныне любой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 варианта. Старый алгоритм, кстати, также работает, патч расширяет его, а не заменяет. ЧПУ для домашней страницы также работает! Достаточно добавить запись следующего вида: Патч прикрепляю (применять через git apply): SEO_URL+.patch SEO URL+ работает для Opencart 3.0.2.0. Для других версий не тестировалось. Как этот патч применить? Для OcStore 3.0.2.3 будет работать? Надіслати Поділитися на інших сайтах More sharing options... 1 month later... piccolo Опубліковано: 7 лютого 2020 Share Опубліковано: 7 лютого 2020 (змінено) Господа, вопрос то решился с ЧПУ системных страниц? Как исправить? Змінено 7 лютого 2020 користувачем piccolo Надіслати Поділитися на інших сайтах More sharing options... 1 month later... RAPOS Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 (змінено) OpenCart 3.0.3.2 Решил проблему стандартного SEO фиксом catalog\controller\startup\seo_url.php Для более ранних версий тройки должно пойти. Заменить код if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } } на if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } else { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "seo_url` WHERE `query` = '" . $data['route'] . "'"); if ($query->row) { if ($query->row['keyword'] == '/') { // From common/home $url = '/'; } else { $url = '/' . $query->row['keyword']; } } } } Да будет всем счастье! Змінено 3 квітня 2020 користувачем RAPOS Надіслати Поділитися на інших сайтах More sharing options... Middefender Опубліковано: 7 квітня 2020 Share Опубліковано: 7 квітня 2020 index.php?route=product - то есть это и /index.php?route=reviews и прочие по аналогии никак не убрать вообще? Выше метод не работает, к сожалению Помогите, пожалуйста Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 2 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
lexxkrt Опубліковано: 28 грудня 2018 Share Опубліковано: 28 грудня 2018 3 hours ago, Scyth said: Это вы не понимаете. И не поймёте, пока специального образования не получите, видимо. Разница есть. Гуглите как работает интерпретатор PHP. как раз это вы не понимаете. если хотите говорить об оптимизации то вам куда-то сюда https://github.com/opencart/opencart/issues к Даниэлю Керру. Быть может он вас выслушает, а не "пошлет" как всех остальных. у всех есть много вопросов по "оптимизации", у меня вот первый же вопрос это по хлебным крошкам, конкретно про дублирование кода в каждом шаблоне. почему бы его не вынести в отдельный код, как например меню или строка сирч в хидере, притом что то что в хидере можно было и не выносить потому что используется только один раз. но мы пользуемся тем что есть, либо меняем под себя так как нам надо. не нравится роутер сделайте свой, выложите его, будет востребован заработаете денег на продаже его. Надіслати Поділитися на інших сайтах More sharing options...
serikoff Опубліковано: 6 січня 2020 Share Опубліковано: 6 січня 2020 В 24.12.2018 в 11:47, Scyth сказал: В общем доработал коробочное решение. Базируется полностью на стандартной функциональности SEO URL. Что добавлено: Кэширование ссылок ЧПУ. Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не делает запрос в базу (иногда она делала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся более сотней запросов в БД. Кому оно надо? Кэш ЧПУ очищается при добавлении/редактировании/удалении ссылки через стандартный интерфейс в админке. По тестам на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) . Гибкость в создании ЧПУ. Отныне любой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 варианта. Старый алгоритм, кстати, также работает, патч расширяет его, а не заменяет. ЧПУ для домашней страницы также работает! Достаточно добавить запись следующего вида: Патч прикрепляю (применять через git apply): SEO_URL+.patch SEO URL+ работает для Opencart 3.0.2.0. Для других версий не тестировалось. Как этот патч применить? Для OcStore 3.0.2.3 будет работать? Надіслати Поділитися на інших сайтах More sharing options...
piccolo Опубліковано: 7 лютого 2020 Share Опубліковано: 7 лютого 2020 (змінено) Господа, вопрос то решился с ЧПУ системных страниц? Как исправить? Змінено 7 лютого 2020 користувачем piccolo Надіслати Поділитися на інших сайтах More sharing options...
RAPOS Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 (змінено) OpenCart 3.0.3.2 Решил проблему стандартного SEO фиксом catalog\controller\startup\seo_url.php Для более ранних версий тройки должно пойти. Заменить код if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } } на if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "seo_url WHERE `query` = 'category_id=" . (int)$category . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } else { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "seo_url` WHERE `query` = '" . $data['route'] . "'"); if ($query->row) { if ($query->row['keyword'] == '/') { // From common/home $url = '/'; } else { $url = '/' . $query->row['keyword']; } } } } Да будет всем счастье! Змінено 3 квітня 2020 користувачем RAPOS Надіслати Поділитися на інших сайтах More sharing options...
Middefender Опубліковано: 7 квітня 2020 Share Опубліковано: 7 квітня 2020 index.php?route=product - то есть это и /index.php?route=reviews и прочие по аналогии никак не убрать вообще? Выше метод не работает, к сожалению Помогите, пожалуйста Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts