chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 1 час назад, Yoda сказал: немного пересечь потреблядство. Меня аж выворачивает от этого всего А вот тут.. От чего? Есть авторы этого кода.. которые сказали, та мы, та щас и сделаем ... Три месяца... И никто не мешал.. Был найден баг, было озвучено. Кто должен его фиксить? Пусто!!!! Даже если это бета.. Есть еще баги - они озвучены - Кто???? Так где потребительство? Т.е. команда не работает.. И.. почти полтора года.. Пусто.. Уже две минорных версии вышло.. Пусто.. Так что в потребительстве обвинять не надо... Только при наличии обратной связи будет НЕпотребительство Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 минут назад, chukcha сказал: А вот тут.. От чего? Есть авторы этого кода.. которые сказали, та мы, та щас и сделаем ... Три месяца... И никто не мешал.. Был найден баг, было озвучено. Кто должен его фиксить? Пусто!!!! Даже если это бета.. Есть еще баги - они озвучены - Кто???? Так где потребительство? Т.е. команда не работает.. И.. почти полтора года.. Пусто.. Уже две минорных версии вышло.. Пусто.. Так что в потребительстве обвинять не надо... Только при наличии обратной связи будет НЕпотребительство Ой ой ой. Гитхаб коммит - это не барское дело? По остальным багам. Добро пожаловать на гит, там очень много рефакторинга. Всё в ваших руках. Любые инициативы приветствуются. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 13 минут назад, Yoda сказал: Любые инициативы приветствуются. Не дождетесь Есть команда.. Много рефакторинга? Где он в релизах? 14 минут назад, Yoda сказал: это не барское дело? Не-а.. а смысл.. Смыл только в обратной связи.. Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 2 минуты назад, chukcha сказал: Не дождетесь Есть команда.. Много рефакторинга? Где он в релизах? Не-а.. а смысл.. Смыл только в обратной связи.. Пройдите в гитхаб сходите внимательно просмотрите. Ещё раз повторяю. Есть баг. Багу нужен фикс. Болтать не мешки ворочать. Хотите помочь? Оформите код и сделайте коммит. Это самый быстрый способ. 2 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 35 минут назад, Yoda сказал: Это самый быстрый способ. И он не попадет в релиз.. Не интересно.. Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: И он не попадет в релиз.. Не интересно.. Почему? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 12 минут назад, chukcha сказал: И он не попадет в релиз.. 4 минуты назад, Yoda сказал: Почему? Вы прочитали? Или почему не попадет.. потому что больше года нет релиза Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: Даниэль Керр знать не знает ни про какие массивы. До Даниэля я вряд ли достучусь, а тут стоило попробовать. 5 часов назад, Yoda сказал: В каком месте туда может попасть массив? Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning 1 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: 3. С каких пор opencart стал YII и в CodeStyle стало принято передавать post-get данные многомерными массивами? При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. 5 часов назад, Yoda сказал: 4. Если вы такие умные-кричащие, где вы уже два года с вашими коммитами на GIT? С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? 5 часов назад, Yoda сказал: Как то вы оба два не очень замечали, что здесь тоже про ваши массивы ни слова. Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 10 минут назад, reDream сказал: $this->url->link('product/category', 'language=' . $this->config->get('config_language') Э.. это какая версия? 3.1 ocstore - 3.0 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 4 часа назад, chukcha сказал: А "баг" найден фильтро писателями.. .. Ну так научитесь писать свои преобразователи, это не сложно.. И не лезьте в системный.. Это на порядок проще.. А что, собственно, плохого в том, что кто-то "фильтро писатель"? И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: Э.. это какая версия? 3.1 ocstore - 3.0 ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле parse_str($result['push'], $data); где уже будет и route и path и другие если надо понадобится, только валидация для однозначности ссылки.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Yoda Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 минут назад, chukcha сказал: А вот тут.. От чего? Есть авторы этого кода.. которые сказали, та мы, та щас и сделаем ... Три месяца... И никто не мешал.. Был найден баг, было озвучено. Кто должен его фиксить? Пусто!!!! Даже если это бета.. Есть еще баги - они озвучены - Кто???? Так где потребительство? Т.е. команда не работает.. И.. почти полтора года.. Пусто.. Уже две минорных версии вышло.. Пусто.. Так что в потребительстве обвинять не надо... Только при наличии обратной связи будет НЕпотребительство Ой ой ой. Гитхаб коммит - это не барское дело? По остальным багам. Добро пожаловать на гит, там очень много рефакторинга. Всё в ваших руках. Любые инициативы приветствуются. Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 13 минут назад, Yoda сказал: Любые инициативы приветствуются. Не дождетесь Есть команда.. Много рефакторинга? Где он в релизах? 14 минут назад, Yoda сказал: это не барское дело? Не-а.. а смысл.. Смыл только в обратной связи.. Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 2 минуты назад, chukcha сказал: Не дождетесь Есть команда.. Много рефакторинга? Где он в релизах? Не-а.. а смысл.. Смыл только в обратной связи.. Пройдите в гитхаб сходите внимательно просмотрите. Ещё раз повторяю. Есть баг. Багу нужен фикс. Болтать не мешки ворочать. Хотите помочь? Оформите код и сделайте коммит. Это самый быстрый способ. 2 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 35 минут назад, Yoda сказал: Это самый быстрый способ. И он не попадет в релиз.. Не интересно.. Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: И он не попадет в релиз.. Не интересно.. Почему? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 12 минут назад, chukcha сказал: И он не попадет в релиз.. 4 минуты назад, Yoda сказал: Почему? Вы прочитали? Или почему не попадет.. потому что больше года нет релиза Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: Даниэль Керр знать не знает ни про какие массивы. До Даниэля я вряд ли достучусь, а тут стоило попробовать. 5 часов назад, Yoda сказал: В каком месте туда может попасть массив? Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning 1 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: 3. С каких пор opencart стал YII и в CodeStyle стало принято передавать post-get данные многомерными массивами? При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. 5 часов назад, Yoda сказал: 4. Если вы такие умные-кричащие, где вы уже два года с вашими коммитами на GIT? С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? 5 часов назад, Yoda сказал: Как то вы оба два не очень замечали, что здесь тоже про ваши массивы ни слова. Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 10 минут назад, reDream сказал: $this->url->link('product/category', 'language=' . $this->config->get('config_language') Э.. это какая версия? 3.1 ocstore - 3.0 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 4 часа назад, chukcha сказал: А "баг" найден фильтро писателями.. .. Ну так научитесь писать свои преобразователи, это не сложно.. И не лезьте в системный.. Это на порядок проще.. А что, собственно, плохого в том, что кто-то "фильтро писатель"? И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: Э.. это какая версия? 3.1 ocstore - 3.0 ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле parse_str($result['push'], $data); где уже будет и route и path и другие если надо понадобится, только валидация для однозначности ссылки.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Yoda Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 2 минуты назад, chukcha сказал: Не дождетесь Есть команда.. Много рефакторинга? Где он в релизах? Не-а.. а смысл.. Смыл только в обратной связи.. Пройдите в гитхаб сходите внимательно просмотрите. Ещё раз повторяю. Есть баг. Багу нужен фикс. Болтать не мешки ворочать. Хотите помочь? Оформите код и сделайте коммит. Это самый быстрый способ. 2 Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 35 минут назад, Yoda сказал: Это самый быстрый способ. И он не попадет в релиз.. Не интересно.. Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: И он не попадет в релиз.. Не интересно.. Почему? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 12 минут назад, chukcha сказал: И он не попадет в релиз.. 4 минуты назад, Yoda сказал: Почему? Вы прочитали? Или почему не попадет.. потому что больше года нет релиза Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: Даниэль Керр знать не знает ни про какие массивы. До Даниэля я вряд ли достучусь, а тут стоило попробовать. 5 часов назад, Yoda сказал: В каком месте туда может попасть массив? Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning 1 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: 3. С каких пор opencart стал YII и в CodeStyle стало принято передавать post-get данные многомерными массивами? При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. 5 часов назад, Yoda сказал: 4. Если вы такие умные-кричащие, где вы уже два года с вашими коммитами на GIT? С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? 5 часов назад, Yoda сказал: Как то вы оба два не очень замечали, что здесь тоже про ваши массивы ни слова. Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 10 минут назад, reDream сказал: $this->url->link('product/category', 'language=' . $this->config->get('config_language') Э.. это какая версия? 3.1 ocstore - 3.0 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 4 часа назад, chukcha сказал: А "баг" найден фильтро писателями.. .. Ну так научитесь писать свои преобразователи, это не сложно.. И не лезьте в системный.. Это на порядок проще.. А что, собственно, плохого в том, что кто-то "фильтро писатель"? И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: Э.. это какая версия? 3.1 ocstore - 3.0 ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле parse_str($result['push'], $data); где уже будет и route и path и другие если надо понадобится, только валидация для однозначности ссылки.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Yoda Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: И он не попадет в релиз.. Не интересно.. Почему? Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 12 минут назад, chukcha сказал: И он не попадет в релиз.. 4 минуты назад, Yoda сказал: Почему? Вы прочитали? Или почему не попадет.. потому что больше года нет релиза Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: Даниэль Керр знать не знает ни про какие массивы. До Даниэля я вряд ли достучусь, а тут стоило попробовать. 5 часов назад, Yoda сказал: В каком месте туда может попасть массив? Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning 1 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: 3. С каких пор opencart стал YII и в CodeStyle стало принято передавать post-get данные многомерными массивами? При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. 5 часов назад, Yoda сказал: 4. Если вы такие умные-кричащие, где вы уже два года с вашими коммитами на GIT? С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? 5 часов назад, Yoda сказал: Как то вы оба два не очень замечали, что здесь тоже про ваши массивы ни слова. Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 10 минут назад, reDream сказал: $this->url->link('product/category', 'language=' . $this->config->get('config_language') Э.. это какая версия? 3.1 ocstore - 3.0 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 4 часа назад, chukcha сказал: А "баг" найден фильтро писателями.. .. Ну так научитесь писать свои преобразователи, это не сложно.. И не лезьте в системный.. Это на порядок проще.. А что, собственно, плохого в том, что кто-то "фильтро писатель"? И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: Э.. это какая версия? 3.1 ocstore - 3.0 ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле parse_str($result['push'], $data); где уже будет и route и path и другие если надо понадобится, только валидация для однозначности ссылки.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: Даниэль Керр знать не знает ни про какие массивы. До Даниэля я вряд ли достучусь, а тут стоило попробовать. 5 часов назад, Yoda сказал: В каком месте туда может попасть массив? Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning 1 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: 3. С каких пор opencart стал YII и в CodeStyle стало принято передавать post-get данные многомерными массивами? При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. 5 часов назад, Yoda сказал: 4. Если вы такие умные-кричащие, где вы уже два года с вашими коммитами на GIT? С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? 5 часов назад, Yoda сказал: Как то вы оба два не очень замечали, что здесь тоже про ваши массивы ни слова. Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 10 минут назад, reDream сказал: $this->url->link('product/category', 'language=' . $this->config->get('config_language') Э.. это какая версия? 3.1 ocstore - 3.0 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 4 часа назад, chukcha сказал: А "баг" найден фильтро писателями.. .. Ну так научитесь писать свои преобразователи, это не сложно.. И не лезьте в системный.. Это на порядок проще.. А что, собственно, плохого в том, что кто-то "фильтро писатель"? И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: Э.. это какая версия? 3.1 ocstore - 3.0 ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле parse_str($result['push'], $data); где уже будет и route и path и другие если надо понадобится, только валидация для однозначности ссылки.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 5 часов назад, Yoda сказал: 3. С каких пор opencart стал YII и в CodeStyle стало принято передавать post-get данные многомерными массивами? При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. 5 часов назад, Yoda сказал: 4. Если вы такие умные-кричащие, где вы уже два года с вашими коммитами на GIT? С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? 5 часов назад, Yoda сказал: Как то вы оба два не очень замечали, что здесь тоже про ваши массивы ни слова. Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 10 минут назад, reDream сказал: $this->url->link('product/category', 'language=' . $this->config->get('config_language') Э.. это какая версия? 3.1 ocstore - 3.0 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 4 часа назад, chukcha сказал: А "баг" найден фильтро писателями.. .. Ну так научитесь писать свои преобразователи, это не сложно.. И не лезьте в системный.. Это на порядок проще.. А что, собственно, плохого в том, что кто-то "фильтро писатель"? И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: Э.. это какая версия? 3.1 ocstore - 3.0 ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле parse_str($result['push'], $data); где уже будет и route и path и другие если надо понадобится, только валидация для однозначности ссылки.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 10 минут назад, reDream сказал: $this->url->link('product/category', 'language=' . $this->config->get('config_language') Э.. это какая версия? 3.1 ocstore - 3.0 Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 4 часа назад, chukcha сказал: А "баг" найден фильтро писателями.. .. Ну так научитесь писать свои преобразователи, это не сложно.. И не лезьте в системный.. Это на порядок проще.. А что, собственно, плохого в том, что кто-то "фильтро писатель"? И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: Э.. это какая версия? 3.1 ocstore - 3.0 ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле parse_str($result['push'], $data); где уже будет и route и path и другие если надо понадобится, только валидация для однозначности ссылки.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 4 часа назад, chukcha сказал: А "баг" найден фильтро писателями.. .. Ну так научитесь писать свои преобразователи, это не сложно.. И не лезьте в системный.. Это на порядок проще.. А что, собственно, плохого в том, что кто-то "фильтро писатель"? И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. Надіслати Поділитися на інших сайтах More sharing options... reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: Э.. это какая версия? 3.1 ocstore - 3.0 ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле parse_str($result['push'], $data); где уже будет и route и path и другие если надо понадобится, только валидация для однозначности ссылки.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
reDream Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 8 минут назад, chukcha сказал: Э.. это какая версия? 3.1 ocstore - 3.0 ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле parse_str($result['push'], $data); где уже будет и route и path и другие если надо понадобится, только валидация для однозначности ссылки.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 А для 3.1 и сеопро можене понадобиться за счет того что есть дополнительное поле parse_str($result['push'], $data); где уже будет и route и path и другие если надо понадобится, только валидация для однозначности ссылки.. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 3 минуты назад, reDream сказал: ocstore 3.1.0.0 https://github.com/ocStore/ocStore/tree/ocstore-3-1-0-0 это сборка, база 3.0 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 Опубліковано: 25 січня 2019 Share Опубліковано: 25 січня 2019 Ух ты в указанной сборке на seourl от 3.1 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 9 часов назад, reDream сказал: И да, я бы с удовольствием "не лез в системный", если бы при формировании обычной ссылки (пусть и с многомерным массивом) мне не прилетал warning. поддерживаю. есть явная недоработка seo pro для тройки. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
markimax Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 15 часов назад, Yoda сказал: Ну для того зачем я все время напрягаюсь. Чтобы донести какую то культуру отношения к сообществу и немного пересечь потреблядство. Меня аж выворачивает от этого всего. Мы такие умные. Мы тут баг нашли. Как можно. Нам же теперь чтобы наживать. Надо код переписывать. А то что никто из этих персонажей для развития темы пальцем не пошевелил. Так это же пусть лохи парятся. Мы гавномодулей напишем и будет нам покушать. Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Спойлер 8 Надіслати Поділитися на інших сайтах More sharing options... vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Основний Новини та оголошення ocStore 3.0.2.0b1 версия для тестирования
vier Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 1 час назад, markimax сказал: Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м поддерживаю на все 100% 1 Надіслати Поділитися на інших сайтах More sharing options... Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options... auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Yoda Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 12 часов назад, reDream сказал: При чём тут CodeStyle? Я к тому, что многомерный массив в get - это нормально. И, как оказалось, для фильтра это очень удобно. Про post и говорить нечего, практически любой модуль, например, под OpenCart 1.5 используем многомерные массивы в post. С таким уровнем негатива на комментарий об ошибке - вы же первый закидаете какашками помидорами любой коммит, разве нет? Замечал и много где. Где мог - писал авторам. Где это было бесполезно - молча исправлял. Вряд ли сейчас кто-то кинется выкатывать очередную версию 2.3 и, тем более, 1.5. Конкретно с 3.0 - пока до стабильного релиза не добрались, есть время исправить. За коммит на Гите? Который фиксит системный баг? Вряд-ли. Надіслати Поділитися на інших сайтах More sharing options...
auditor Опубліковано: 26 січня 2019 Share Опубліковано: 26 січня 2019 3 часа назад, markimax сказал: Все сказал? Твоя демагогия уже всем надоела здесь Не надо впаривать говнокод. А он там реально г.. вно полное Тебе идею дали чтобы не было фрагментации ? Дали. Прислушайся к парням по цеху. У будь более уважителен к ним. Это не твой говнобложик И к моНАХам такие гвоносборки которые не умеючи писать код впихивают всем фарш Стратегия сборок должна быть простой - как можно меньше изменений кода оригинала opencart Только самые критичные И не гитом а ocmod -м А снастик (тебе же не дано писать код) там налабал полную пургу Показать контент солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано. 1 Надіслати Поділитися на інших сайтах More sharing options... 5 р dinox unpinned та unfeatured this topic 7 months later... seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options... Назад 4 5 6 7 8 9 Вперед Сторінка 9 з 9 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
seondex Опубліковано: 4 жовтня 2019 Share Опубліковано: 4 жовтня 2019 В 26.01.2019 в 01:53, reDream сказал: До Даниэля я вряд ли достучусь, а тут стоило попробовать. Похоже, я при вставке кода перепутал и ветку и метод, извиняюсь. Не "getQueryByKeyword", а "getKeywordByQuery". Смотрим сюда: https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/catalog/controller/startup/seo_url.php public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); if($this->config->get('config_seo_pro')){ $url = null; } else { $url = ''; } $url_info = parse_url(str_replace('&', '&', $link)); parse_str($url_info['query'], $data); //seo_pro baseRewrite if($this->config->get('config_seo_pro')){ list($url, $data, $postfix) = $this->seo_pro->baseRewrite($data, (int)$this->config->get('config_language_id')); } ... ... И следуем по пути в https://github.com/ocStore/ocStore/blob/ocstore-3-1-0-0/upload/system/library/seopro.php public function baseRewrite($data, $language_id) { $url = null; $postfix = null; $language_id = (int)$this->config->get('config_language_id'); switch ($data['route']) { case 'product/product': $postfix = true; if (isset($data['product_id'])) { $route = 'product/product'; $path = ''; $product_id = $data['product_id']; if (isset($data['path'])) { $path = $this->getPathByProduct($product_id); } unset($data); $data['route'] = $route; if ($path && $this->config->get('config_seo_url_include_path')) { $data['path'] = $path; } $data['product_id'] = $product_id; } break; case 'product/category': if (isset($data['path'])) { $category = explode('_', $data['path']); $category = end($category); $data['path'] = $this->getPathByCategory($category); //if (!$data['path']) return $url; } break; case 'product/product/review': case 'information/information/info': case 'product/manufacturer/info': break; default: break; } $queries = array(); foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); //single_url if($query_ !== null) { unset($data[$key]); //common/home if($query_ == '') return [$query_, $data , $postfix]; //common/home return ['/' . $query_, $data , $postfix]; } //single_url ... ... Обращаем внимание на это место: foreach ($data as $key => $value) { $query_ = $this->getKeywordByQuery($value); Ну и сам метод "getKeywordByQuery": public function getKeywordByQuery($query, $language_id = '') { $store_id = (int)$this->config->get('config_store_id'); if(!$language_id) { $language_id = $this->config->get('config_language_id'); } if($this->config->get('config_seo_url_cache')){ if(isset($this->keywords[$query][$store_id][$language_id])) return($this->keywords[$query][$store_id][$language_id]); } $sql = "SELECT keyword FROM " . DB_PREFIX . "seo_url WHERE query = '" . $this->db->escape($query) . "' AND store_id = '" . $store_id . "' AND language_id = '" . (int)$language_id . "' LIMIT 1"; $query = $this->db->query($sql); if ($query->num_rows) { return $query->row['keyword']; } return; } Ну и как же туда может попасть массив? Да очень просто, в каком-нибудь контроллере пишем: $this->url->link('product/category', 'language=' . $this->config->get('config_language') . '&path=' . $this->request->get['path'] . '&' . http_build_query(array('array' => ['foo' => 'bar']))); И натыкаемся на тот самый warning Spasıbo bolshoe Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts