senderstream Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 Добрый день. У меня есть свой селективный поиск, но он полностью на пхп в одном файле. Может кто подскажет как его пересобрать под модули опенкарта. не могу понять куда чего раскидывать. Читал мануалы по созданию модулей, не разобрался. Заранее очень благодарен. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 эм.. можно файл? Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 эм.. можно файл? Держи. правда там немного накручено. обьясню смысл. Имеется селектор, кототрый заполняется данными из базы. Сначала первый->на основании выбора позиции идет следующий с выборкой из базы всех записей с вхождением под выбранную позицию->третий по такому же принципу, потом на основании трех полей формируется запрос, выборка из базы и вывод полученного. select_search.php Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 эм.. это поиск по другой базе, не opencart? Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 да, но логика будет таже. мне просто пренести под mvc, как оно будет выбираться я сам пределаю. просто в опен карте дописаны пару таблиц с ключевыми полями, на основании резульирующего запроса выбираются позиции с этими ключевыми полями (ид товара), а потом вывод товаров по этим айдишникам Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Для более детального описания. Имеется таблица с марками авто, из нее заполняется первый селект. Имеет таблица с моделями авто, где каждая модель привязана к марке, из нее делается наполнение второго селекта на основании выбранной марки, имеется таблица с моделями и обьемами двигателей, выбирается и заполняется по тому же принципу, формируется запрос к таблице применяемостей где сравниваются все позиции и выбираются id товара. После чего формируется вывод из product, product_desription и тд opencart'a. Вот как то так. скрипт рабочий, но как его подвинтить под модули не могу разобраться Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Просто не могу понять логику работы этой mvc. Как получить данные из селектов, куда их заносить где обрабатывать. Насколько я понял выборка происходит в model, но туда ли надо все обработчики пихать, или там только процедура выборки. А в контроллере получение данных из формы занесение в переменную и передача в model. ? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 пример набросайте что бы было с чего начать например catalog/controller/search/search.php имя контроллера ControllerSearchSearch catalog/model/search/search.php ModelSearchSearch catalog/language/russian/search/search.php catalog/view/theme/default/template/search.tpl по аналогии с product.php например, только убрать всё лишнее, минимум кода. каркас так сказать Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Набросал, всеравно не пойму куда что перераспределять. Ну понятно html в .tpl. В ланг файле описания для вывода на экран. А процедурки и фукции? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 language - список языковых констант model - в основном всё что касается базы $this->db указатель на драйвер используемой базы. список методов можно посмотреть тут system/library/db.php, наиболее часто используется query() view - шаблон, рендерится контроллером controller главное звено в mvc к нему приходят запросы пользователя, он же решает какой дать ответ Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 например эта часть // выводим все строки из столбца name таблицы country в модели метод public function getAllCountries($limit=0) { $sql = "SELECT * FROM " . DB_PREFIX . "selector"; if ($limit) { $sql .= " LIMIT " . (int)$limit; } $query = $this->db->query($sql); return $query->rows; } в контроллере $this->load->model('search/search'); $countries = $this->model_search_search->getAllCountries(11); $this->data['countries'] =>$countries; $this->data['country'] = false; if (isset($this->request->post['country'])) { $this->data['country'] = $this->request->post['country']; } во view <select name="country" style="width: 250px;"> <option><?php echo $text_manufacturer ?></option> <?php foreach($countries as $country_item) { ?> <option <?php if ($country_item['brend_name'] == $country) echo 'selected="selected"'?> value="<?php echo $country_item['brend_name'] ?>" > $country_item['brend_name'] </option> <?php } ?> </select> пишу без интерпретатора, потому возможны ошибки, но главное суть 2 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Notice: Trying to get property of non-object in return $query->rows; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Разобрался, поправил то что Вы написали. разбираемся дальше Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 А как прикрутить в .tpl к селектам метод пост формы? Чтобы отправлять значение селекта контроллеру. или куда там Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 в контроллере сформировать action $this->data['post_action'] = $this->url->link('search/search'); во view отрисовать саму форму <form action="<?php echo $post_action; ?>" method="post"> ... </form> Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 не работает. выкладываю на каком этапе. нужно чтобы при выборе первого селекта данные отправлялись и заполнялся второй. не на опенкарте делал через js. как тут? контроллер <?php class ControllerSearchSearch extends Controller { public function index() { $this->data['post_action'] = $this->url->link('search/search'); $this->load->model('search/search'); $brands = $this->model_search_search->getAllBrands(); $this->data['brands'] = $brands; $this->data['brand_check'] = false; if (isset($this->request->post['brand_check'])) { $this->data['brand_check'] = $this->request->post['brand_check']; $models = $this->model_search_search->getAllModels(); $this->data['models'] = $models; $this->data['models_check'] = false; } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/search/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/search/search.tpl'; } else { $this->template = 'default/template/search/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> модель <?php class ModelSearchSearch extends Model { public function getAllBrands() { $sql = "SELECT * FROM autobrands"; $sort_data = array( 'brands' ); $query = $this->db->query($sql); return $query->rows; } public function getAllModels() { $sql = "SELECT models FROM automodels WHERE brands LIKE ".$this->data['brand_check'].""; $sort_data = array( 'models' ); $query = $this->db->query($sql); return $query->rows; } } ?> вью <form action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px; onchange="document.getElementById('frm').submit()""> <option></option> <?php foreach($brands as $brands_item) { ?> <option <?php if ($brands_item['brands'] == $brand_check) echo 'selected="selected"'?> value=<?php echo $brands_item['brands']?> > <?php echo $brands_item['brands'] ?> </option> <?php } ?> </select> <select name="models_check" style="width: 250px;"> <option></option> <?php foreach($models as $models_item) { ?> <option <?php if ($models_item['models'] == models_check) echo 'selected="selected"'?> value=<?php echo $models_item['models']?> > <?php echo $models_item['models'] ?> </option> <?php } ?> </select> </form> Может я неправильно обьявил переменную во 2м запросе в модели? Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 как правильно занести данные из полученного post в переменную и передать в модель для участия в запросе? и можно ли сделать событие onchange в селекте как в моем примере первоначальном <form id="frm" method="post"> <select name="country" onchange="document.getElementById('frm').submit()" style="width: 250px;"> Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 $sort_data = array( лишние WHERE brands LIKE ".$this->data['brand_check'].""данные следует эскейпить $this->db->escape($this->data['brand_check']) <form id="brands_form" action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px;" onchange="$('#brands_form').submit()"> 1 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Изменение формы удается, только переменная правильно не заносится. Ошибка в синтаксисе sql пишет. Запрос имеет такой вид $sql = "SELECT `models` FROM `automodels` WHERE `brands` LIKE ".$this->db->escape($this->data['brand_check']).""; От ошибки избавился, но переменная пустая Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 public function getAllModels($brand_check) { $sql = "SELECT models FROM automodels WHERE brands LIKE '".$this->db->escape($brand_check)."'"; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Warning: Missing argument 1 for ModelSearchSearch::getAllModels(), called in C:xampphtdocscatalogcontrollersearchsearch.php on line 14 and defined in C:xampphtdocscatalogmodelsearchsearch.php on line 13Notice: Undefined variable: brand_check in C:xampphtdocscatalogmodelsearchsearch.php on line 15 Все работает, не усмотрел, в контроллере тоже надо было аргумент поставить Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Впринципе смысл понятен. Сейчас допишу этапы поиска, потом сам поиск и вот встает вопрос. как вывести результаты на сайт? А то сейчас все это дело выводится на белом листе. Как интегрировать в шаблон как скажем стандартный поиск? Огромное спасибо за помощь. По-тихоньку начинаю вникать в mvc. Заглянул в другие .tpl. Все элементарно просто. Глупый был вопрос Надіслати Поділитися на інших сайтах More sharing options... siniy Опубліковано: 7 липня 2012 Share Опубліковано: 7 липня 2012 А может и мне с поиском поможете? Доработать поиск по сайту на OpenCart 1.5.1.3 По умолчанию поиск реализован по любому слову из поисковой фразы, в результате всегда выводится слишком много результатов, а если товар однотипный и соответственно названия тоже однотипные то вываливает почти весь магазин.... Мне подправили поиск, чтобы он искал по фразе целиком, ситуация улучшилась, но все равно есть недостатки, например: Есть у меня товар с названием: Аккумулятор для Palm M500 Если ввести запрос: Аккумулятор Palm M500 (т.е. просто безя "для") то уже ничего не находит... Не знаю как избавится от этого недостатка, пока пришло в голову сделать список стоп слов, куда внести это "для", т.е. чтобы при поиске это "для" вообще не учитывалось. И еще как вариант можно попробывать версию поиска, в которой опускается любое русское слово до 3-х (включительно)букв. Так же нужно сделать чтобы поиск работал по полю "модель" и SKU (имею в виду поиск на фронтпейдж) И еще есть такая идея, если конечно можно так реализовать, чтобы если в запросе есть и русские слова (на русском языке)и английские, то все русское опускалось и поик делался только по англоязычной части запроса(цифры тоже остаются), например, запрос: Аккумулятор для Palm M500 "Аккумулятор для" - должно вырезаться и поиск должен сработать по точной фразе Palm M500 Если запрос будет просто: "Аккумулятор" то ничего не вырезаем, делаем поиск по полной русскоязыной фразе Правка чтобы поиск работал по Модели и SKU есть тут http://rb.labtodo.com/page/better-search-in-opencart-v15-search-description-by-default#comment-1135 я ее пробывал делать, но почему-то у меня не заработала... возможно что-то ни так делал... Т.е. в результате выполнения ТЗ Вы должны предоставить 3 версии исправленного файлаов, в котором идет обработка поиска. 1 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову из запроса. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. 2 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) в любом запросе опускается любое русское слово до 3-х (включительно)букв. 3 варинт файлаов Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. Готов оплатить за эту доработку, если будут предоставлены готовые к использованию исправленные и доработанные файлы. ася 203-410-102 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 10 липня 2012 Автор Share Опубліковано: 10 липня 2012 В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. if(preg_match('/[^a-zA-Z]/', $string)){ $string = preg_replace('/[^а-яА-я]/','', $string); далее обычный поиск } else { поиск } В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. $str = "Товар для Покупателя"; $str = preg_replace("/(для)/",'',$str); результат = Товар Покупателя По поводу поиска по всей фразе если я не ошибаюсь нужно заменить в запросе OR на AND https://opencartforum.com/topic/3410-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%be%d0%b2/page__view__findpost__p__67241 как-то так Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Свой модуль поиска Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 эм.. можно файл? Держи. правда там немного накручено. обьясню смысл. Имеется селектор, кототрый заполняется данными из базы. Сначала первый->на основании выбора позиции идет следующий с выборкой из базы всех записей с вхождением под выбранную позицию->третий по такому же принципу, потом на основании трех полей формируется запрос, выборка из базы и вывод полученного. select_search.php Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 эм.. это поиск по другой базе, не opencart? Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 да, но логика будет таже. мне просто пренести под mvc, как оно будет выбираться я сам пределаю. просто в опен карте дописаны пару таблиц с ключевыми полями, на основании резульирующего запроса выбираются позиции с этими ключевыми полями (ид товара), а потом вывод товаров по этим айдишникам Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Для более детального описания. Имеется таблица с марками авто, из нее заполняется первый селект. Имеет таблица с моделями авто, где каждая модель привязана к марке, из нее делается наполнение второго селекта на основании выбранной марки, имеется таблица с моделями и обьемами двигателей, выбирается и заполняется по тому же принципу, формируется запрос к таблице применяемостей где сравниваются все позиции и выбираются id товара. После чего формируется вывод из product, product_desription и тд opencart'a. Вот как то так. скрипт рабочий, но как его подвинтить под модули не могу разобраться Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Просто не могу понять логику работы этой mvc. Как получить данные из селектов, куда их заносить где обрабатывать. Насколько я понял выборка происходит в model, но туда ли надо все обработчики пихать, или там только процедура выборки. А в контроллере получение данных из формы занесение в переменную и передача в model. ? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 пример набросайте что бы было с чего начать например catalog/controller/search/search.php имя контроллера ControllerSearchSearch catalog/model/search/search.php ModelSearchSearch catalog/language/russian/search/search.php catalog/view/theme/default/template/search.tpl по аналогии с product.php например, только убрать всё лишнее, минимум кода. каркас так сказать Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Набросал, всеравно не пойму куда что перераспределять. Ну понятно html в .tpl. В ланг файле описания для вывода на экран. А процедурки и фукции? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 language - список языковых констант model - в основном всё что касается базы $this->db указатель на драйвер используемой базы. список методов можно посмотреть тут system/library/db.php, наиболее часто используется query() view - шаблон, рендерится контроллером controller главное звено в mvc к нему приходят запросы пользователя, он же решает какой дать ответ Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 например эта часть // выводим все строки из столбца name таблицы country в модели метод public function getAllCountries($limit=0) { $sql = "SELECT * FROM " . DB_PREFIX . "selector"; if ($limit) { $sql .= " LIMIT " . (int)$limit; } $query = $this->db->query($sql); return $query->rows; } в контроллере $this->load->model('search/search'); $countries = $this->model_search_search->getAllCountries(11); $this->data['countries'] =>$countries; $this->data['country'] = false; if (isset($this->request->post['country'])) { $this->data['country'] = $this->request->post['country']; } во view <select name="country" style="width: 250px;"> <option><?php echo $text_manufacturer ?></option> <?php foreach($countries as $country_item) { ?> <option <?php if ($country_item['brend_name'] == $country) echo 'selected="selected"'?> value="<?php echo $country_item['brend_name'] ?>" > $country_item['brend_name'] </option> <?php } ?> </select> пишу без интерпретатора, потому возможны ошибки, но главное суть 2 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Notice: Trying to get property of non-object in return $query->rows; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Разобрался, поправил то что Вы написали. разбираемся дальше Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 А как прикрутить в .tpl к селектам метод пост формы? Чтобы отправлять значение селекта контроллеру. или куда там Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 в контроллере сформировать action $this->data['post_action'] = $this->url->link('search/search'); во view отрисовать саму форму <form action="<?php echo $post_action; ?>" method="post"> ... </form> Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 не работает. выкладываю на каком этапе. нужно чтобы при выборе первого селекта данные отправлялись и заполнялся второй. не на опенкарте делал через js. как тут? контроллер <?php class ControllerSearchSearch extends Controller { public function index() { $this->data['post_action'] = $this->url->link('search/search'); $this->load->model('search/search'); $brands = $this->model_search_search->getAllBrands(); $this->data['brands'] = $brands; $this->data['brand_check'] = false; if (isset($this->request->post['brand_check'])) { $this->data['brand_check'] = $this->request->post['brand_check']; $models = $this->model_search_search->getAllModels(); $this->data['models'] = $models; $this->data['models_check'] = false; } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/search/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/search/search.tpl'; } else { $this->template = 'default/template/search/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> модель <?php class ModelSearchSearch extends Model { public function getAllBrands() { $sql = "SELECT * FROM autobrands"; $sort_data = array( 'brands' ); $query = $this->db->query($sql); return $query->rows; } public function getAllModels() { $sql = "SELECT models FROM automodels WHERE brands LIKE ".$this->data['brand_check'].""; $sort_data = array( 'models' ); $query = $this->db->query($sql); return $query->rows; } } ?> вью <form action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px; onchange="document.getElementById('frm').submit()""> <option></option> <?php foreach($brands as $brands_item) { ?> <option <?php if ($brands_item['brands'] == $brand_check) echo 'selected="selected"'?> value=<?php echo $brands_item['brands']?> > <?php echo $brands_item['brands'] ?> </option> <?php } ?> </select> <select name="models_check" style="width: 250px;"> <option></option> <?php foreach($models as $models_item) { ?> <option <?php if ($models_item['models'] == models_check) echo 'selected="selected"'?> value=<?php echo $models_item['models']?> > <?php echo $models_item['models'] ?> </option> <?php } ?> </select> </form> Может я неправильно обьявил переменную во 2м запросе в модели? Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 как правильно занести данные из полученного post в переменную и передать в модель для участия в запросе? и можно ли сделать событие onchange в селекте как в моем примере первоначальном <form id="frm" method="post"> <select name="country" onchange="document.getElementById('frm').submit()" style="width: 250px;"> Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 $sort_data = array( лишние WHERE brands LIKE ".$this->data['brand_check'].""данные следует эскейпить $this->db->escape($this->data['brand_check']) <form id="brands_form" action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px;" onchange="$('#brands_form').submit()"> 1 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Изменение формы удается, только переменная правильно не заносится. Ошибка в синтаксисе sql пишет. Запрос имеет такой вид $sql = "SELECT `models` FROM `automodels` WHERE `brands` LIKE ".$this->db->escape($this->data['brand_check']).""; От ошибки избавился, но переменная пустая Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 public function getAllModels($brand_check) { $sql = "SELECT models FROM automodels WHERE brands LIKE '".$this->db->escape($brand_check)."'"; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Warning: Missing argument 1 for ModelSearchSearch::getAllModels(), called in C:xampphtdocscatalogcontrollersearchsearch.php on line 14 and defined in C:xampphtdocscatalogmodelsearchsearch.php on line 13Notice: Undefined variable: brand_check in C:xampphtdocscatalogmodelsearchsearch.php on line 15 Все работает, не усмотрел, в контроллере тоже надо было аргумент поставить Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Впринципе смысл понятен. Сейчас допишу этапы поиска, потом сам поиск и вот встает вопрос. как вывести результаты на сайт? А то сейчас все это дело выводится на белом листе. Как интегрировать в шаблон как скажем стандартный поиск? Огромное спасибо за помощь. По-тихоньку начинаю вникать в mvc. Заглянул в другие .tpl. Все элементарно просто. Глупый был вопрос Надіслати Поділитися на інших сайтах More sharing options... siniy Опубліковано: 7 липня 2012 Share Опубліковано: 7 липня 2012 А может и мне с поиском поможете? Доработать поиск по сайту на OpenCart 1.5.1.3 По умолчанию поиск реализован по любому слову из поисковой фразы, в результате всегда выводится слишком много результатов, а если товар однотипный и соответственно названия тоже однотипные то вываливает почти весь магазин.... Мне подправили поиск, чтобы он искал по фразе целиком, ситуация улучшилась, но все равно есть недостатки, например: Есть у меня товар с названием: Аккумулятор для Palm M500 Если ввести запрос: Аккумулятор Palm M500 (т.е. просто безя "для") то уже ничего не находит... Не знаю как избавится от этого недостатка, пока пришло в голову сделать список стоп слов, куда внести это "для", т.е. чтобы при поиске это "для" вообще не учитывалось. И еще как вариант можно попробывать версию поиска, в которой опускается любое русское слово до 3-х (включительно)букв. Так же нужно сделать чтобы поиск работал по полю "модель" и SKU (имею в виду поиск на фронтпейдж) И еще есть такая идея, если конечно можно так реализовать, чтобы если в запросе есть и русские слова (на русском языке)и английские, то все русское опускалось и поик делался только по англоязычной части запроса(цифры тоже остаются), например, запрос: Аккумулятор для Palm M500 "Аккумулятор для" - должно вырезаться и поиск должен сработать по точной фразе Palm M500 Если запрос будет просто: "Аккумулятор" то ничего не вырезаем, делаем поиск по полной русскоязыной фразе Правка чтобы поиск работал по Модели и SKU есть тут http://rb.labtodo.com/page/better-search-in-opencart-v15-search-description-by-default#comment-1135 я ее пробывал делать, но почему-то у меня не заработала... возможно что-то ни так делал... Т.е. в результате выполнения ТЗ Вы должны предоставить 3 версии исправленного файлаов, в котором идет обработка поиска. 1 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову из запроса. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. 2 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) в любом запросе опускается любое русское слово до 3-х (включительно)букв. 3 варинт файлаов Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. Готов оплатить за эту доработку, если будут предоставлены готовые к использованию исправленные и доработанные файлы. ася 203-410-102 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 10 липня 2012 Автор Share Опубліковано: 10 липня 2012 В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. if(preg_match('/[^a-zA-Z]/', $string)){ $string = preg_replace('/[^а-яА-я]/','', $string); далее обычный поиск } else { поиск } В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. $str = "Товар для Покупателя"; $str = preg_replace("/(для)/",'',$str); результат = Товар Покупателя По поводу поиска по всей фразе если я не ошибаюсь нужно заменить в запросе OR на AND https://opencartforum.com/topic/3410-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%be%d0%b2/page__view__findpost__p__67241 как-то так Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Свой модуль поиска Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 да, но логика будет таже. мне просто пренести под mvc, как оно будет выбираться я сам пределаю. просто в опен карте дописаны пару таблиц с ключевыми полями, на основании резульирующего запроса выбираются позиции с этими ключевыми полями (ид товара), а потом вывод товаров по этим айдишникам Надіслати Поділитися на інших сайтах More sharing options...
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Для более детального описания. Имеется таблица с марками авто, из нее заполняется первый селект. Имеет таблица с моделями авто, где каждая модель привязана к марке, из нее делается наполнение второго селекта на основании выбранной марки, имеется таблица с моделями и обьемами двигателей, выбирается и заполняется по тому же принципу, формируется запрос к таблице применяемостей где сравниваются все позиции и выбираются id товара. После чего формируется вывод из product, product_desription и тд opencart'a. Вот как то так. скрипт рабочий, но как его подвинтить под модули не могу разобраться Надіслати Поділитися на інших сайтах More sharing options...
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Просто не могу понять логику работы этой mvc. Как получить данные из селектов, куда их заносить где обрабатывать. Насколько я понял выборка происходит в model, но туда ли надо все обработчики пихать, или там только процедура выборки. А в контроллере получение данных из формы занесение в переменную и передача в model. ? Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 пример набросайте что бы было с чего начать например catalog/controller/search/search.php имя контроллера ControllerSearchSearch catalog/model/search/search.php ModelSearchSearch catalog/language/russian/search/search.php catalog/view/theme/default/template/search.tpl по аналогии с product.php например, только убрать всё лишнее, минимум кода. каркас так сказать Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Набросал, всеравно не пойму куда что перераспределять. Ну понятно html в .tpl. В ланг файле описания для вывода на экран. А процедурки и фукции? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 language - список языковых констант model - в основном всё что касается базы $this->db указатель на драйвер используемой базы. список методов можно посмотреть тут system/library/db.php, наиболее часто используется query() view - шаблон, рендерится контроллером controller главное звено в mvc к нему приходят запросы пользователя, он же решает какой дать ответ Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 например эта часть // выводим все строки из столбца name таблицы country в модели метод public function getAllCountries($limit=0) { $sql = "SELECT * FROM " . DB_PREFIX . "selector"; if ($limit) { $sql .= " LIMIT " . (int)$limit; } $query = $this->db->query($sql); return $query->rows; } в контроллере $this->load->model('search/search'); $countries = $this->model_search_search->getAllCountries(11); $this->data['countries'] =>$countries; $this->data['country'] = false; if (isset($this->request->post['country'])) { $this->data['country'] = $this->request->post['country']; } во view <select name="country" style="width: 250px;"> <option><?php echo $text_manufacturer ?></option> <?php foreach($countries as $country_item) { ?> <option <?php if ($country_item['brend_name'] == $country) echo 'selected="selected"'?> value="<?php echo $country_item['brend_name'] ?>" > $country_item['brend_name'] </option> <?php } ?> </select> пишу без интерпретатора, потому возможны ошибки, но главное суть 2 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Notice: Trying to get property of non-object in return $query->rows; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Разобрался, поправил то что Вы написали. разбираемся дальше Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 А как прикрутить в .tpl к селектам метод пост формы? Чтобы отправлять значение селекта контроллеру. или куда там Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 в контроллере сформировать action $this->data['post_action'] = $this->url->link('search/search'); во view отрисовать саму форму <form action="<?php echo $post_action; ?>" method="post"> ... </form> Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 не работает. выкладываю на каком этапе. нужно чтобы при выборе первого селекта данные отправлялись и заполнялся второй. не на опенкарте делал через js. как тут? контроллер <?php class ControllerSearchSearch extends Controller { public function index() { $this->data['post_action'] = $this->url->link('search/search'); $this->load->model('search/search'); $brands = $this->model_search_search->getAllBrands(); $this->data['brands'] = $brands; $this->data['brand_check'] = false; if (isset($this->request->post['brand_check'])) { $this->data['brand_check'] = $this->request->post['brand_check']; $models = $this->model_search_search->getAllModels(); $this->data['models'] = $models; $this->data['models_check'] = false; } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/search/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/search/search.tpl'; } else { $this->template = 'default/template/search/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> модель <?php class ModelSearchSearch extends Model { public function getAllBrands() { $sql = "SELECT * FROM autobrands"; $sort_data = array( 'brands' ); $query = $this->db->query($sql); return $query->rows; } public function getAllModels() { $sql = "SELECT models FROM automodels WHERE brands LIKE ".$this->data['brand_check'].""; $sort_data = array( 'models' ); $query = $this->db->query($sql); return $query->rows; } } ?> вью <form action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px; onchange="document.getElementById('frm').submit()""> <option></option> <?php foreach($brands as $brands_item) { ?> <option <?php if ($brands_item['brands'] == $brand_check) echo 'selected="selected"'?> value=<?php echo $brands_item['brands']?> > <?php echo $brands_item['brands'] ?> </option> <?php } ?> </select> <select name="models_check" style="width: 250px;"> <option></option> <?php foreach($models as $models_item) { ?> <option <?php if ($models_item['models'] == models_check) echo 'selected="selected"'?> value=<?php echo $models_item['models']?> > <?php echo $models_item['models'] ?> </option> <?php } ?> </select> </form> Может я неправильно обьявил переменную во 2м запросе в модели? Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 как правильно занести данные из полученного post в переменную и передать в модель для участия в запросе? и можно ли сделать событие onchange в селекте как в моем примере первоначальном <form id="frm" method="post"> <select name="country" onchange="document.getElementById('frm').submit()" style="width: 250px;"> Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 $sort_data = array( лишние WHERE brands LIKE ".$this->data['brand_check'].""данные следует эскейпить $this->db->escape($this->data['brand_check']) <form id="brands_form" action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px;" onchange="$('#brands_form').submit()"> 1 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Изменение формы удается, только переменная правильно не заносится. Ошибка в синтаксисе sql пишет. Запрос имеет такой вид $sql = "SELECT `models` FROM `automodels` WHERE `brands` LIKE ".$this->db->escape($this->data['brand_check']).""; От ошибки избавился, но переменная пустая Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 public function getAllModels($brand_check) { $sql = "SELECT models FROM automodels WHERE brands LIKE '".$this->db->escape($brand_check)."'"; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Warning: Missing argument 1 for ModelSearchSearch::getAllModels(), called in C:xampphtdocscatalogcontrollersearchsearch.php on line 14 and defined in C:xampphtdocscatalogmodelsearchsearch.php on line 13Notice: Undefined variable: brand_check in C:xampphtdocscatalogmodelsearchsearch.php on line 15 Все работает, не усмотрел, в контроллере тоже надо было аргумент поставить Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Впринципе смысл понятен. Сейчас допишу этапы поиска, потом сам поиск и вот встает вопрос. как вывести результаты на сайт? А то сейчас все это дело выводится на белом листе. Как интегрировать в шаблон как скажем стандартный поиск? Огромное спасибо за помощь. По-тихоньку начинаю вникать в mvc. Заглянул в другие .tpl. Все элементарно просто. Глупый был вопрос Надіслати Поділитися на інших сайтах More sharing options... siniy Опубліковано: 7 липня 2012 Share Опубліковано: 7 липня 2012 А может и мне с поиском поможете? Доработать поиск по сайту на OpenCart 1.5.1.3 По умолчанию поиск реализован по любому слову из поисковой фразы, в результате всегда выводится слишком много результатов, а если товар однотипный и соответственно названия тоже однотипные то вываливает почти весь магазин.... Мне подправили поиск, чтобы он искал по фразе целиком, ситуация улучшилась, но все равно есть недостатки, например: Есть у меня товар с названием: Аккумулятор для Palm M500 Если ввести запрос: Аккумулятор Palm M500 (т.е. просто безя "для") то уже ничего не находит... Не знаю как избавится от этого недостатка, пока пришло в голову сделать список стоп слов, куда внести это "для", т.е. чтобы при поиске это "для" вообще не учитывалось. И еще как вариант можно попробывать версию поиска, в которой опускается любое русское слово до 3-х (включительно)букв. Так же нужно сделать чтобы поиск работал по полю "модель" и SKU (имею в виду поиск на фронтпейдж) И еще есть такая идея, если конечно можно так реализовать, чтобы если в запросе есть и русские слова (на русском языке)и английские, то все русское опускалось и поик делался только по англоязычной части запроса(цифры тоже остаются), например, запрос: Аккумулятор для Palm M500 "Аккумулятор для" - должно вырезаться и поиск должен сработать по точной фразе Palm M500 Если запрос будет просто: "Аккумулятор" то ничего не вырезаем, делаем поиск по полной русскоязыной фразе Правка чтобы поиск работал по Модели и SKU есть тут http://rb.labtodo.com/page/better-search-in-opencart-v15-search-description-by-default#comment-1135 я ее пробывал делать, но почему-то у меня не заработала... возможно что-то ни так делал... Т.е. в результате выполнения ТЗ Вы должны предоставить 3 версии исправленного файлаов, в котором идет обработка поиска. 1 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову из запроса. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. 2 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) в любом запросе опускается любое русское слово до 3-х (включительно)букв. 3 варинт файлаов Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. Готов оплатить за эту доработку, если будут предоставлены готовые к использованию исправленные и доработанные файлы. ася 203-410-102 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 10 липня 2012 Автор Share Опубліковано: 10 липня 2012 В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. if(preg_match('/[^a-zA-Z]/', $string)){ $string = preg_replace('/[^а-яА-я]/','', $string); далее обычный поиск } else { поиск } В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. $str = "Товар для Покупателя"; $str = preg_replace("/(для)/",'',$str); результат = Товар Покупателя По поводу поиска по всей фразе если я не ошибаюсь нужно заменить в запросе OR на AND https://opencartforum.com/topic/3410-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%be%d0%b2/page__view__findpost__p__67241 как-то так Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Свой модуль поиска Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Набросал, всеравно не пойму куда что перераспределять. Ну понятно html в .tpl. В ланг файле описания для вывода на экран. А процедурки и фукции? Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 language - список языковых констант model - в основном всё что касается базы $this->db указатель на драйвер используемой базы. список методов можно посмотреть тут system/library/db.php, наиболее часто используется query() view - шаблон, рендерится контроллером controller главное звено в mvc к нему приходят запросы пользователя, он же решает какой дать ответ Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 например эта часть // выводим все строки из столбца name таблицы country в модели метод public function getAllCountries($limit=0) { $sql = "SELECT * FROM " . DB_PREFIX . "selector"; if ($limit) { $sql .= " LIMIT " . (int)$limit; } $query = $this->db->query($sql); return $query->rows; } в контроллере $this->load->model('search/search'); $countries = $this->model_search_search->getAllCountries(11); $this->data['countries'] =>$countries; $this->data['country'] = false; if (isset($this->request->post['country'])) { $this->data['country'] = $this->request->post['country']; } во view <select name="country" style="width: 250px;"> <option><?php echo $text_manufacturer ?></option> <?php foreach($countries as $country_item) { ?> <option <?php if ($country_item['brend_name'] == $country) echo 'selected="selected"'?> value="<?php echo $country_item['brend_name'] ?>" > $country_item['brend_name'] </option> <?php } ?> </select> пишу без интерпретатора, потому возможны ошибки, но главное суть 2 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Notice: Trying to get property of non-object in return $query->rows; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Разобрался, поправил то что Вы написали. разбираемся дальше Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 А как прикрутить в .tpl к селектам метод пост формы? Чтобы отправлять значение селекта контроллеру. или куда там Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 в контроллере сформировать action $this->data['post_action'] = $this->url->link('search/search'); во view отрисовать саму форму <form action="<?php echo $post_action; ?>" method="post"> ... </form> Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 не работает. выкладываю на каком этапе. нужно чтобы при выборе первого селекта данные отправлялись и заполнялся второй. не на опенкарте делал через js. как тут? контроллер <?php class ControllerSearchSearch extends Controller { public function index() { $this->data['post_action'] = $this->url->link('search/search'); $this->load->model('search/search'); $brands = $this->model_search_search->getAllBrands(); $this->data['brands'] = $brands; $this->data['brand_check'] = false; if (isset($this->request->post['brand_check'])) { $this->data['brand_check'] = $this->request->post['brand_check']; $models = $this->model_search_search->getAllModels(); $this->data['models'] = $models; $this->data['models_check'] = false; } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/search/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/search/search.tpl'; } else { $this->template = 'default/template/search/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> модель <?php class ModelSearchSearch extends Model { public function getAllBrands() { $sql = "SELECT * FROM autobrands"; $sort_data = array( 'brands' ); $query = $this->db->query($sql); return $query->rows; } public function getAllModels() { $sql = "SELECT models FROM automodels WHERE brands LIKE ".$this->data['brand_check'].""; $sort_data = array( 'models' ); $query = $this->db->query($sql); return $query->rows; } } ?> вью <form action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px; onchange="document.getElementById('frm').submit()""> <option></option> <?php foreach($brands as $brands_item) { ?> <option <?php if ($brands_item['brands'] == $brand_check) echo 'selected="selected"'?> value=<?php echo $brands_item['brands']?> > <?php echo $brands_item['brands'] ?> </option> <?php } ?> </select> <select name="models_check" style="width: 250px;"> <option></option> <?php foreach($models as $models_item) { ?> <option <?php if ($models_item['models'] == models_check) echo 'selected="selected"'?> value=<?php echo $models_item['models']?> > <?php echo $models_item['models'] ?> </option> <?php } ?> </select> </form> Может я неправильно обьявил переменную во 2м запросе в модели? Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 как правильно занести данные из полученного post в переменную и передать в модель для участия в запросе? и можно ли сделать событие onchange в селекте как в моем примере первоначальном <form id="frm" method="post"> <select name="country" onchange="document.getElementById('frm').submit()" style="width: 250px;"> Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 $sort_data = array( лишние WHERE brands LIKE ".$this->data['brand_check'].""данные следует эскейпить $this->db->escape($this->data['brand_check']) <form id="brands_form" action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px;" onchange="$('#brands_form').submit()"> 1 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Изменение формы удается, только переменная правильно не заносится. Ошибка в синтаксисе sql пишет. Запрос имеет такой вид $sql = "SELECT `models` FROM `automodels` WHERE `brands` LIKE ".$this->db->escape($this->data['brand_check']).""; От ошибки избавился, но переменная пустая Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 public function getAllModels($brand_check) { $sql = "SELECT models FROM automodels WHERE brands LIKE '".$this->db->escape($brand_check)."'"; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Warning: Missing argument 1 for ModelSearchSearch::getAllModels(), called in C:xampphtdocscatalogcontrollersearchsearch.php on line 14 and defined in C:xampphtdocscatalogmodelsearchsearch.php on line 13Notice: Undefined variable: brand_check in C:xampphtdocscatalogmodelsearchsearch.php on line 15 Все работает, не усмотрел, в контроллере тоже надо было аргумент поставить Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Впринципе смысл понятен. Сейчас допишу этапы поиска, потом сам поиск и вот встает вопрос. как вывести результаты на сайт? А то сейчас все это дело выводится на белом листе. Как интегрировать в шаблон как скажем стандартный поиск? Огромное спасибо за помощь. По-тихоньку начинаю вникать в mvc. Заглянул в другие .tpl. Все элементарно просто. Глупый был вопрос Надіслати Поділитися на інших сайтах More sharing options... siniy Опубліковано: 7 липня 2012 Share Опубліковано: 7 липня 2012 А может и мне с поиском поможете? Доработать поиск по сайту на OpenCart 1.5.1.3 По умолчанию поиск реализован по любому слову из поисковой фразы, в результате всегда выводится слишком много результатов, а если товар однотипный и соответственно названия тоже однотипные то вываливает почти весь магазин.... Мне подправили поиск, чтобы он искал по фразе целиком, ситуация улучшилась, но все равно есть недостатки, например: Есть у меня товар с названием: Аккумулятор для Palm M500 Если ввести запрос: Аккумулятор Palm M500 (т.е. просто безя "для") то уже ничего не находит... Не знаю как избавится от этого недостатка, пока пришло в голову сделать список стоп слов, куда внести это "для", т.е. чтобы при поиске это "для" вообще не учитывалось. И еще как вариант можно попробывать версию поиска, в которой опускается любое русское слово до 3-х (включительно)букв. Так же нужно сделать чтобы поиск работал по полю "модель" и SKU (имею в виду поиск на фронтпейдж) И еще есть такая идея, если конечно можно так реализовать, чтобы если в запросе есть и русские слова (на русском языке)и английские, то все русское опускалось и поик делался только по англоязычной части запроса(цифры тоже остаются), например, запрос: Аккумулятор для Palm M500 "Аккумулятор для" - должно вырезаться и поиск должен сработать по точной фразе Palm M500 Если запрос будет просто: "Аккумулятор" то ничего не вырезаем, делаем поиск по полной русскоязыной фразе Правка чтобы поиск работал по Модели и SKU есть тут http://rb.labtodo.com/page/better-search-in-opencart-v15-search-description-by-default#comment-1135 я ее пробывал делать, но почему-то у меня не заработала... возможно что-то ни так делал... Т.е. в результате выполнения ТЗ Вы должны предоставить 3 версии исправленного файлаов, в котором идет обработка поиска. 1 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову из запроса. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. 2 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) в любом запросе опускается любое русское слово до 3-х (включительно)букв. 3 варинт файлаов Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. Готов оплатить за эту доработку, если будут предоставлены готовые к использованию исправленные и доработанные файлы. ася 203-410-102 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 10 липня 2012 Автор Share Опубліковано: 10 липня 2012 В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. if(preg_match('/[^a-zA-Z]/', $string)){ $string = preg_replace('/[^а-яА-я]/','', $string); далее обычный поиск } else { поиск } В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. $str = "Товар для Покупателя"; $str = preg_replace("/(для)/",'',$str); результат = Товар Покупателя По поводу поиска по всей фразе если я не ошибаюсь нужно заменить в запросе OR на AND https://opencartforum.com/topic/3410-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%be%d0%b2/page__view__findpost__p__67241 как-то так Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Свой модуль поиска Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 например эта часть // выводим все строки из столбца name таблицы country в модели метод public function getAllCountries($limit=0) { $sql = "SELECT * FROM " . DB_PREFIX . "selector"; if ($limit) { $sql .= " LIMIT " . (int)$limit; } $query = $this->db->query($sql); return $query->rows; } в контроллере $this->load->model('search/search'); $countries = $this->model_search_search->getAllCountries(11); $this->data['countries'] =>$countries; $this->data['country'] = false; if (isset($this->request->post['country'])) { $this->data['country'] = $this->request->post['country']; } во view <select name="country" style="width: 250px;"> <option><?php echo $text_manufacturer ?></option> <?php foreach($countries as $country_item) { ?> <option <?php if ($country_item['brend_name'] == $country) echo 'selected="selected"'?> value="<?php echo $country_item['brend_name'] ?>" > $country_item['brend_name'] </option> <?php } ?> </select> пишу без интерпретатора, потому возможны ошибки, но главное суть 2 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Notice: Trying to get property of non-object in return $query->rows; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Разобрался, поправил то что Вы написали. разбираемся дальше Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 А как прикрутить в .tpl к селектам метод пост формы? Чтобы отправлять значение селекта контроллеру. или куда там Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 в контроллере сформировать action $this->data['post_action'] = $this->url->link('search/search'); во view отрисовать саму форму <form action="<?php echo $post_action; ?>" method="post"> ... </form> Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 не работает. выкладываю на каком этапе. нужно чтобы при выборе первого селекта данные отправлялись и заполнялся второй. не на опенкарте делал через js. как тут? контроллер <?php class ControllerSearchSearch extends Controller { public function index() { $this->data['post_action'] = $this->url->link('search/search'); $this->load->model('search/search'); $brands = $this->model_search_search->getAllBrands(); $this->data['brands'] = $brands; $this->data['brand_check'] = false; if (isset($this->request->post['brand_check'])) { $this->data['brand_check'] = $this->request->post['brand_check']; $models = $this->model_search_search->getAllModels(); $this->data['models'] = $models; $this->data['models_check'] = false; } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/search/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/search/search.tpl'; } else { $this->template = 'default/template/search/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> модель <?php class ModelSearchSearch extends Model { public function getAllBrands() { $sql = "SELECT * FROM autobrands"; $sort_data = array( 'brands' ); $query = $this->db->query($sql); return $query->rows; } public function getAllModels() { $sql = "SELECT models FROM automodels WHERE brands LIKE ".$this->data['brand_check'].""; $sort_data = array( 'models' ); $query = $this->db->query($sql); return $query->rows; } } ?> вью <form action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px; onchange="document.getElementById('frm').submit()""> <option></option> <?php foreach($brands as $brands_item) { ?> <option <?php if ($brands_item['brands'] == $brand_check) echo 'selected="selected"'?> value=<?php echo $brands_item['brands']?> > <?php echo $brands_item['brands'] ?> </option> <?php } ?> </select> <select name="models_check" style="width: 250px;"> <option></option> <?php foreach($models as $models_item) { ?> <option <?php if ($models_item['models'] == models_check) echo 'selected="selected"'?> value=<?php echo $models_item['models']?> > <?php echo $models_item['models'] ?> </option> <?php } ?> </select> </form> Может я неправильно обьявил переменную во 2м запросе в модели? Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 как правильно занести данные из полученного post в переменную и передать в модель для участия в запросе? и можно ли сделать событие onchange в селекте как в моем примере первоначальном <form id="frm" method="post"> <select name="country" onchange="document.getElementById('frm').submit()" style="width: 250px;"> Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 $sort_data = array( лишние WHERE brands LIKE ".$this->data['brand_check'].""данные следует эскейпить $this->db->escape($this->data['brand_check']) <form id="brands_form" action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px;" onchange="$('#brands_form').submit()"> 1 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Изменение формы удается, только переменная правильно не заносится. Ошибка в синтаксисе sql пишет. Запрос имеет такой вид $sql = "SELECT `models` FROM `automodels` WHERE `brands` LIKE ".$this->db->escape($this->data['brand_check']).""; От ошибки избавился, но переменная пустая Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 public function getAllModels($brand_check) { $sql = "SELECT models FROM automodels WHERE brands LIKE '".$this->db->escape($brand_check)."'"; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Warning: Missing argument 1 for ModelSearchSearch::getAllModels(), called in C:xampphtdocscatalogcontrollersearchsearch.php on line 14 and defined in C:xampphtdocscatalogmodelsearchsearch.php on line 13Notice: Undefined variable: brand_check in C:xampphtdocscatalogmodelsearchsearch.php on line 15 Все работает, не усмотрел, в контроллере тоже надо было аргумент поставить Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Впринципе смысл понятен. Сейчас допишу этапы поиска, потом сам поиск и вот встает вопрос. как вывести результаты на сайт? А то сейчас все это дело выводится на белом листе. Как интегрировать в шаблон как скажем стандартный поиск? Огромное спасибо за помощь. По-тихоньку начинаю вникать в mvc. Заглянул в другие .tpl. Все элементарно просто. Глупый был вопрос Надіслати Поділитися на інших сайтах More sharing options... siniy Опубліковано: 7 липня 2012 Share Опубліковано: 7 липня 2012 А может и мне с поиском поможете? Доработать поиск по сайту на OpenCart 1.5.1.3 По умолчанию поиск реализован по любому слову из поисковой фразы, в результате всегда выводится слишком много результатов, а если товар однотипный и соответственно названия тоже однотипные то вываливает почти весь магазин.... Мне подправили поиск, чтобы он искал по фразе целиком, ситуация улучшилась, но все равно есть недостатки, например: Есть у меня товар с названием: Аккумулятор для Palm M500 Если ввести запрос: Аккумулятор Palm M500 (т.е. просто безя "для") то уже ничего не находит... Не знаю как избавится от этого недостатка, пока пришло в голову сделать список стоп слов, куда внести это "для", т.е. чтобы при поиске это "для" вообще не учитывалось. И еще как вариант можно попробывать версию поиска, в которой опускается любое русское слово до 3-х (включительно)букв. Так же нужно сделать чтобы поиск работал по полю "модель" и SKU (имею в виду поиск на фронтпейдж) И еще есть такая идея, если конечно можно так реализовать, чтобы если в запросе есть и русские слова (на русском языке)и английские, то все русское опускалось и поик делался только по англоязычной части запроса(цифры тоже остаются), например, запрос: Аккумулятор для Palm M500 "Аккумулятор для" - должно вырезаться и поиск должен сработать по точной фразе Palm M500 Если запрос будет просто: "Аккумулятор" то ничего не вырезаем, делаем поиск по полной русскоязыной фразе Правка чтобы поиск работал по Модели и SKU есть тут http://rb.labtodo.com/page/better-search-in-opencart-v15-search-description-by-default#comment-1135 я ее пробывал делать, но почему-то у меня не заработала... возможно что-то ни так делал... Т.е. в результате выполнения ТЗ Вы должны предоставить 3 версии исправленного файлаов, в котором идет обработка поиска. 1 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову из запроса. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. 2 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) в любом запросе опускается любое русское слово до 3-х (включительно)букв. 3 варинт файлаов Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. Готов оплатить за эту доработку, если будут предоставлены готовые к использованию исправленные и доработанные файлы. ася 203-410-102 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 10 липня 2012 Автор Share Опубліковано: 10 липня 2012 В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. if(preg_match('/[^a-zA-Z]/', $string)){ $string = preg_replace('/[^а-яА-я]/','', $string); далее обычный поиск } else { поиск } В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. $str = "Товар для Покупателя"; $str = preg_replace("/(для)/",'',$str); результат = Товар Покупателя По поводу поиска по всей фразе если я не ошибаюсь нужно заменить в запросе OR на AND https://opencartforum.com/topic/3410-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%be%d0%b2/page__view__findpost__p__67241 как-то так Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Свой модуль поиска Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Notice: Trying to get property of non-object in return $query->rows; Надіслати Поділитися на інших сайтах More sharing options...
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Разобрался, поправил то что Вы написали. разбираемся дальше Надіслати Поділитися на інших сайтах More sharing options...
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 А как прикрутить в .tpl к селектам метод пост формы? Чтобы отправлять значение селекта контроллеру. или куда там Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 в контроллере сформировать action $this->data['post_action'] = $this->url->link('search/search'); во view отрисовать саму форму <form action="<?php echo $post_action; ?>" method="post"> ... </form> Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 не работает. выкладываю на каком этапе. нужно чтобы при выборе первого селекта данные отправлялись и заполнялся второй. не на опенкарте делал через js. как тут? контроллер <?php class ControllerSearchSearch extends Controller { public function index() { $this->data['post_action'] = $this->url->link('search/search'); $this->load->model('search/search'); $brands = $this->model_search_search->getAllBrands(); $this->data['brands'] = $brands; $this->data['brand_check'] = false; if (isset($this->request->post['brand_check'])) { $this->data['brand_check'] = $this->request->post['brand_check']; $models = $this->model_search_search->getAllModels(); $this->data['models'] = $models; $this->data['models_check'] = false; } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/search/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/search/search.tpl'; } else { $this->template = 'default/template/search/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> модель <?php class ModelSearchSearch extends Model { public function getAllBrands() { $sql = "SELECT * FROM autobrands"; $sort_data = array( 'brands' ); $query = $this->db->query($sql); return $query->rows; } public function getAllModels() { $sql = "SELECT models FROM automodels WHERE brands LIKE ".$this->data['brand_check'].""; $sort_data = array( 'models' ); $query = $this->db->query($sql); return $query->rows; } } ?> вью <form action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px; onchange="document.getElementById('frm').submit()""> <option></option> <?php foreach($brands as $brands_item) { ?> <option <?php if ($brands_item['brands'] == $brand_check) echo 'selected="selected"'?> value=<?php echo $brands_item['brands']?> > <?php echo $brands_item['brands'] ?> </option> <?php } ?> </select> <select name="models_check" style="width: 250px;"> <option></option> <?php foreach($models as $models_item) { ?> <option <?php if ($models_item['models'] == models_check) echo 'selected="selected"'?> value=<?php echo $models_item['models']?> > <?php echo $models_item['models'] ?> </option> <?php } ?> </select> </form> Может я неправильно обьявил переменную во 2м запросе в модели? Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 как правильно занести данные из полученного post в переменную и передать в модель для участия в запросе? и можно ли сделать событие onchange в селекте как в моем примере первоначальном <form id="frm" method="post"> <select name="country" onchange="document.getElementById('frm').submit()" style="width: 250px;"> Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 $sort_data = array( лишние WHERE brands LIKE ".$this->data['brand_check'].""данные следует эскейпить $this->db->escape($this->data['brand_check']) <form id="brands_form" action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px;" onchange="$('#brands_form').submit()"> 1 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Изменение формы удается, только переменная правильно не заносится. Ошибка в синтаксисе sql пишет. Запрос имеет такой вид $sql = "SELECT `models` FROM `automodels` WHERE `brands` LIKE ".$this->db->escape($this->data['brand_check']).""; От ошибки избавился, но переменная пустая Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 public function getAllModels($brand_check) { $sql = "SELECT models FROM automodels WHERE brands LIKE '".$this->db->escape($brand_check)."'"; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Warning: Missing argument 1 for ModelSearchSearch::getAllModels(), called in C:xampphtdocscatalogcontrollersearchsearch.php on line 14 and defined in C:xampphtdocscatalogmodelsearchsearch.php on line 13Notice: Undefined variable: brand_check in C:xampphtdocscatalogmodelsearchsearch.php on line 15 Все работает, не усмотрел, в контроллере тоже надо было аргумент поставить Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Впринципе смысл понятен. Сейчас допишу этапы поиска, потом сам поиск и вот встает вопрос. как вывести результаты на сайт? А то сейчас все это дело выводится на белом листе. Как интегрировать в шаблон как скажем стандартный поиск? Огромное спасибо за помощь. По-тихоньку начинаю вникать в mvc. Заглянул в другие .tpl. Все элементарно просто. Глупый был вопрос Надіслати Поділитися на інших сайтах More sharing options... siniy Опубліковано: 7 липня 2012 Share Опубліковано: 7 липня 2012 А может и мне с поиском поможете? Доработать поиск по сайту на OpenCart 1.5.1.3 По умолчанию поиск реализован по любому слову из поисковой фразы, в результате всегда выводится слишком много результатов, а если товар однотипный и соответственно названия тоже однотипные то вываливает почти весь магазин.... Мне подправили поиск, чтобы он искал по фразе целиком, ситуация улучшилась, но все равно есть недостатки, например: Есть у меня товар с названием: Аккумулятор для Palm M500 Если ввести запрос: Аккумулятор Palm M500 (т.е. просто безя "для") то уже ничего не находит... Не знаю как избавится от этого недостатка, пока пришло в голову сделать список стоп слов, куда внести это "для", т.е. чтобы при поиске это "для" вообще не учитывалось. И еще как вариант можно попробывать версию поиска, в которой опускается любое русское слово до 3-х (включительно)букв. Так же нужно сделать чтобы поиск работал по полю "модель" и SKU (имею в виду поиск на фронтпейдж) И еще есть такая идея, если конечно можно так реализовать, чтобы если в запросе есть и русские слова (на русском языке)и английские, то все русское опускалось и поик делался только по англоязычной части запроса(цифры тоже остаются), например, запрос: Аккумулятор для Palm M500 "Аккумулятор для" - должно вырезаться и поиск должен сработать по точной фразе Palm M500 Если запрос будет просто: "Аккумулятор" то ничего не вырезаем, делаем поиск по полной русскоязыной фразе Правка чтобы поиск работал по Модели и SKU есть тут http://rb.labtodo.com/page/better-search-in-opencart-v15-search-description-by-default#comment-1135 я ее пробывал делать, но почему-то у меня не заработала... возможно что-то ни так делал... Т.е. в результате выполнения ТЗ Вы должны предоставить 3 версии исправленного файлаов, в котором идет обработка поиска. 1 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову из запроса. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. 2 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) в любом запросе опускается любое русское слово до 3-х (включительно)букв. 3 варинт файлаов Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. Готов оплатить за эту доработку, если будут предоставлены готовые к использованию исправленные и доработанные файлы. ася 203-410-102 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 10 липня 2012 Автор Share Опубліковано: 10 липня 2012 В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. if(preg_match('/[^a-zA-Z]/', $string)){ $string = preg_replace('/[^а-яА-я]/','', $string); далее обычный поиск } else { поиск } В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. $str = "Товар для Покупателя"; $str = preg_replace("/(для)/",'',$str); результат = Товар Покупателя По поводу поиска по всей фразе если я не ошибаюсь нужно заменить в запросе OR на AND https://opencartforum.com/topic/3410-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%be%d0%b2/page__view__findpost__p__67241 как-то так Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Свой модуль поиска
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 не работает. выкладываю на каком этапе. нужно чтобы при выборе первого селекта данные отправлялись и заполнялся второй. не на опенкарте делал через js. как тут? контроллер <?php class ControllerSearchSearch extends Controller { public function index() { $this->data['post_action'] = $this->url->link('search/search'); $this->load->model('search/search'); $brands = $this->model_search_search->getAllBrands(); $this->data['brands'] = $brands; $this->data['brand_check'] = false; if (isset($this->request->post['brand_check'])) { $this->data['brand_check'] = $this->request->post['brand_check']; $models = $this->model_search_search->getAllModels(); $this->data['models'] = $models; $this->data['models_check'] = false; } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/search/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/search/search.tpl'; } else { $this->template = 'default/template/search/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> модель <?php class ModelSearchSearch extends Model { public function getAllBrands() { $sql = "SELECT * FROM autobrands"; $sort_data = array( 'brands' ); $query = $this->db->query($sql); return $query->rows; } public function getAllModels() { $sql = "SELECT models FROM automodels WHERE brands LIKE ".$this->data['brand_check'].""; $sort_data = array( 'models' ); $query = $this->db->query($sql); return $query->rows; } } ?> вью <form action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px; onchange="document.getElementById('frm').submit()""> <option></option> <?php foreach($brands as $brands_item) { ?> <option <?php if ($brands_item['brands'] == $brand_check) echo 'selected="selected"'?> value=<?php echo $brands_item['brands']?> > <?php echo $brands_item['brands'] ?> </option> <?php } ?> </select> <select name="models_check" style="width: 250px;"> <option></option> <?php foreach($models as $models_item) { ?> <option <?php if ($models_item['models'] == models_check) echo 'selected="selected"'?> value=<?php echo $models_item['models']?> > <?php echo $models_item['models'] ?> </option> <?php } ?> </select> </form> Может я неправильно обьявил переменную во 2м запросе в модели? Надіслати Поділитися на інших сайтах More sharing options...
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 как правильно занести данные из полученного post в переменную и передать в модель для участия в запросе? и можно ли сделать событие onchange в селекте как в моем примере первоначальном <form id="frm" method="post"> <select name="country" onchange="document.getElementById('frm').submit()" style="width: 250px;"> Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 $sort_data = array( лишние WHERE brands LIKE ".$this->data['brand_check'].""данные следует эскейпить $this->db->escape($this->data['brand_check']) <form id="brands_form" action="<?php echo $post_action; ?>" method="post"> <select name="brand_check" style="width: 250px;" onchange="$('#brands_form').submit()"> 1 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Изменение формы удается, только переменная правильно не заносится. Ошибка в синтаксисе sql пишет. Запрос имеет такой вид $sql = "SELECT `models` FROM `automodels` WHERE `brands` LIKE ".$this->db->escape($this->data['brand_check']).""; От ошибки избавился, но переменная пустая Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 public function getAllModels($brand_check) { $sql = "SELECT models FROM automodels WHERE brands LIKE '".$this->db->escape($brand_check)."'"; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Warning: Missing argument 1 for ModelSearchSearch::getAllModels(), called in C:xampphtdocscatalogcontrollersearchsearch.php on line 14 and defined in C:xampphtdocscatalogmodelsearchsearch.php on line 13Notice: Undefined variable: brand_check in C:xampphtdocscatalogmodelsearchsearch.php on line 15 Все работает, не усмотрел, в контроллере тоже надо было аргумент поставить Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Впринципе смысл понятен. Сейчас допишу этапы поиска, потом сам поиск и вот встает вопрос. как вывести результаты на сайт? А то сейчас все это дело выводится на белом листе. Как интегрировать в шаблон как скажем стандартный поиск? Огромное спасибо за помощь. По-тихоньку начинаю вникать в mvc. Заглянул в другие .tpl. Все элементарно просто. Глупый был вопрос Надіслати Поділитися на інших сайтах More sharing options... siniy Опубліковано: 7 липня 2012 Share Опубліковано: 7 липня 2012 А может и мне с поиском поможете? Доработать поиск по сайту на OpenCart 1.5.1.3 По умолчанию поиск реализован по любому слову из поисковой фразы, в результате всегда выводится слишком много результатов, а если товар однотипный и соответственно названия тоже однотипные то вываливает почти весь магазин.... Мне подправили поиск, чтобы он искал по фразе целиком, ситуация улучшилась, но все равно есть недостатки, например: Есть у меня товар с названием: Аккумулятор для Palm M500 Если ввести запрос: Аккумулятор Palm M500 (т.е. просто безя "для") то уже ничего не находит... Не знаю как избавится от этого недостатка, пока пришло в голову сделать список стоп слов, куда внести это "для", т.е. чтобы при поиске это "для" вообще не учитывалось. И еще как вариант можно попробывать версию поиска, в которой опускается любое русское слово до 3-х (включительно)букв. Так же нужно сделать чтобы поиск работал по полю "модель" и SKU (имею в виду поиск на фронтпейдж) И еще есть такая идея, если конечно можно так реализовать, чтобы если в запросе есть и русские слова (на русском языке)и английские, то все русское опускалось и поик делался только по англоязычной части запроса(цифры тоже остаются), например, запрос: Аккумулятор для Palm M500 "Аккумулятор для" - должно вырезаться и поиск должен сработать по точной фразе Palm M500 Если запрос будет просто: "Аккумулятор" то ничего не вырезаем, делаем поиск по полной русскоязыной фразе Правка чтобы поиск работал по Модели и SKU есть тут http://rb.labtodo.com/page/better-search-in-opencart-v15-search-description-by-default#comment-1135 я ее пробывал делать, но почему-то у меня не заработала... возможно что-то ни так делал... Т.е. в результате выполнения ТЗ Вы должны предоставить 3 версии исправленного файлаов, в котором идет обработка поиска. 1 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову из запроса. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. 2 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) в любом запросе опускается любое русское слово до 3-х (включительно)букв. 3 варинт файлаов Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. Готов оплатить за эту доработку, если будут предоставлены готовые к использованию исправленные и доработанные файлы. ася 203-410-102 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 10 липня 2012 Автор Share Опубліковано: 10 липня 2012 В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. if(preg_match('/[^a-zA-Z]/', $string)){ $string = preg_replace('/[^а-яА-я]/','', $string); далее обычный поиск } else { поиск } В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. $str = "Товар для Покупателя"; $str = preg_replace("/(для)/",'',$str); результат = Товар Покупателя По поводу поиска по всей фразе если я не ошибаюсь нужно заменить в запросе OR на AND https://opencartforum.com/topic/3410-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%be%d0%b2/page__view__findpost__p__67241 как-то так Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Изменение формы удается, только переменная правильно не заносится. Ошибка в синтаксисе sql пишет. Запрос имеет такой вид $sql = "SELECT `models` FROM `automodels` WHERE `brands` LIKE ".$this->db->escape($this->data['brand_check']).""; От ошибки избавился, но переменная пустая Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 6 липня 2012 Share Опубліковано: 6 липня 2012 public function getAllModels($brand_check) { $sql = "SELECT models FROM automodels WHERE brands LIKE '".$this->db->escape($brand_check)."'"; Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Warning: Missing argument 1 for ModelSearchSearch::getAllModels(), called in C:xampphtdocscatalogcontrollersearchsearch.php on line 14 and defined in C:xampphtdocscatalogmodelsearchsearch.php on line 13Notice: Undefined variable: brand_check in C:xampphtdocscatalogmodelsearchsearch.php on line 15 Все работает, не усмотрел, в контроллере тоже надо было аргумент поставить Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Впринципе смысл понятен. Сейчас допишу этапы поиска, потом сам поиск и вот встает вопрос. как вывести результаты на сайт? А то сейчас все это дело выводится на белом листе. Как интегрировать в шаблон как скажем стандартный поиск? Огромное спасибо за помощь. По-тихоньку начинаю вникать в mvc. Заглянул в другие .tpl. Все элементарно просто. Глупый был вопрос Надіслати Поділитися на інших сайтах More sharing options... siniy Опубліковано: 7 липня 2012 Share Опубліковано: 7 липня 2012 А может и мне с поиском поможете? Доработать поиск по сайту на OpenCart 1.5.1.3 По умолчанию поиск реализован по любому слову из поисковой фразы, в результате всегда выводится слишком много результатов, а если товар однотипный и соответственно названия тоже однотипные то вываливает почти весь магазин.... Мне подправили поиск, чтобы он искал по фразе целиком, ситуация улучшилась, но все равно есть недостатки, например: Есть у меня товар с названием: Аккумулятор для Palm M500 Если ввести запрос: Аккумулятор Palm M500 (т.е. просто безя "для") то уже ничего не находит... Не знаю как избавится от этого недостатка, пока пришло в голову сделать список стоп слов, куда внести это "для", т.е. чтобы при поиске это "для" вообще не учитывалось. И еще как вариант можно попробывать версию поиска, в которой опускается любое русское слово до 3-х (включительно)букв. Так же нужно сделать чтобы поиск работал по полю "модель" и SKU (имею в виду поиск на фронтпейдж) И еще есть такая идея, если конечно можно так реализовать, чтобы если в запросе есть и русские слова (на русском языке)и английские, то все русское опускалось и поик делался только по англоязычной части запроса(цифры тоже остаются), например, запрос: Аккумулятор для Palm M500 "Аккумулятор для" - должно вырезаться и поиск должен сработать по точной фразе Palm M500 Если запрос будет просто: "Аккумулятор" то ничего не вырезаем, делаем поиск по полной русскоязыной фразе Правка чтобы поиск работал по Модели и SKU есть тут http://rb.labtodo.com/page/better-search-in-opencart-v15-search-description-by-default#comment-1135 я ее пробывал делать, но почему-то у меня не заработала... возможно что-то ни так делал... Т.е. в результате выполнения ТЗ Вы должны предоставить 3 версии исправленного файлаов, в котором идет обработка поиска. 1 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову из запроса. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. 2 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) в любом запросе опускается любое русское слово до 3-х (включительно)букв. 3 варинт файлаов Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. Готов оплатить за эту доработку, если будут предоставлены готовые к использованию исправленные и доработанные файлы. ася 203-410-102 Надіслати Поділитися на інших сайтах More sharing options... senderstream Опубліковано: 10 липня 2012 Автор Share Опубліковано: 10 липня 2012 В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. if(preg_match('/[^a-zA-Z]/', $string)){ $string = preg_replace('/[^а-яА-я]/','', $string); далее обычный поиск } else { поиск } В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. $str = "Товар для Покупателя"; $str = preg_replace("/(для)/",'',$str); результат = Товар Покупателя По поводу поиска по всей фразе если я не ошибаюсь нужно заменить в запросе OR на AND https://opencartforum.com/topic/3410-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%be%d0%b2/page__view__findpost__p__67241 как-то так Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Warning: Missing argument 1 for ModelSearchSearch::getAllModels(), called in C:xampphtdocscatalogcontrollersearchsearch.php on line 14 and defined in C:xampphtdocscatalogmodelsearchsearch.php on line 13Notice: Undefined variable: brand_check in C:xampphtdocscatalogmodelsearchsearch.php on line 15 Все работает, не усмотрел, в контроллере тоже надо было аргумент поставить Надіслати Поділитися на інших сайтах More sharing options...
senderstream Опубліковано: 6 липня 2012 Автор Share Опубліковано: 6 липня 2012 Впринципе смысл понятен. Сейчас допишу этапы поиска, потом сам поиск и вот встает вопрос. как вывести результаты на сайт? А то сейчас все это дело выводится на белом листе. Как интегрировать в шаблон как скажем стандартный поиск? Огромное спасибо за помощь. По-тихоньку начинаю вникать в mvc. Заглянул в другие .tpl. Все элементарно просто. Глупый был вопрос Надіслати Поділитися на інших сайтах More sharing options...
siniy Опубліковано: 7 липня 2012 Share Опубліковано: 7 липня 2012 А может и мне с поиском поможете? Доработать поиск по сайту на OpenCart 1.5.1.3 По умолчанию поиск реализован по любому слову из поисковой фразы, в результате всегда выводится слишком много результатов, а если товар однотипный и соответственно названия тоже однотипные то вываливает почти весь магазин.... Мне подправили поиск, чтобы он искал по фразе целиком, ситуация улучшилась, но все равно есть недостатки, например: Есть у меня товар с названием: Аккумулятор для Palm M500 Если ввести запрос: Аккумулятор Palm M500 (т.е. просто безя "для") то уже ничего не находит... Не знаю как избавится от этого недостатка, пока пришло в голову сделать список стоп слов, куда внести это "для", т.е. чтобы при поиске это "для" вообще не учитывалось. И еще как вариант можно попробывать версию поиска, в которой опускается любое русское слово до 3-х (включительно)букв. Так же нужно сделать чтобы поиск работал по полю "модель" и SKU (имею в виду поиск на фронтпейдж) И еще есть такая идея, если конечно можно так реализовать, чтобы если в запросе есть и русские слова (на русском языке)и английские, то все русское опускалось и поик делался только по англоязычной части запроса(цифры тоже остаются), например, запрос: Аккумулятор для Palm M500 "Аккумулятор для" - должно вырезаться и поиск должен сработать по точной фразе Palm M500 Если запрос будет просто: "Аккумулятор" то ничего не вырезаем, делаем поиск по полной русскоязыной фразе Правка чтобы поиск работал по Модели и SKU есть тут http://rb.labtodo.com/page/better-search-in-opencart-v15-search-description-by-default#comment-1135 я ее пробывал делать, но почему-то у меня не заработала... возможно что-то ни так делал... Т.е. в результате выполнения ТЗ Вы должны предоставить 3 версии исправленного файлаов, в котором идет обработка поиска. 1 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову из запроса. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. 2 вариант файлаов. Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию) в любом запросе опускается любое русское слово до 3-х (включительно)букв. 3 варинт файлаов Запрос обрабатывается по полной фразе, а не по любому слову. Обработка сразу запроса по полю Модель и SKU (т.е. делаем поиск в этих полях тоже сразу по умолчанию В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. Готов оплатить за эту доработку, если будут предоставлены готовые к использованию исправленные и доработанные файлы. ася 203-410-102 Надіслати Поділитися на інших сайтах More sharing options...
senderstream Опубліковано: 10 липня 2012 Автор Share Опубліковано: 10 липня 2012 В поисковом запросе, если он состоит из английского и русского текста, вырезается русскоязычная часть, а англоязычная оставляется, так же все цифры что были, и по ним уже делается поиск. Если запрос полностью на русском, то ничего не вырезается, исщем по полной фразе на русском. if(preg_match('/[^a-zA-Z]/', $string)){ $string = preg_replace('/[^а-яА-я]/','', $string); далее обычный поиск } else { поиск } В любом запросе не учитываем слово "для" т.е. оно просто вырезается из поискового запроса и не участвует в поиске. $str = "Товар для Покупателя"; $str = preg_replace("/(для)/",'',$str); результат = Товар Покупателя По поводу поиска по всей фразе если я не ошибаюсь нужно заменить в запросе OR на AND https://opencartforum.com/topic/3410-%d1%83%d0%bb%d1%83%d1%87%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d1%82%d0%be%d0%b2%d0%b0%d1%80%d0%be%d0%b2/page__view__findpost__p__67241 как-то так Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts