Kors Опубликовано 28 октября, 2014 Жалоба Поделиться Опубликовано 28 октября, 2014 На демо сайте провожу эксперимент:1. В админке на странице товаров у трех первых товаров устанавливаю значение артикула 1234562. В админке на странице товаров провожу поиск на фразу 123456. Получаю три товара - все правильно.3. В настройках меняю значение Товаров на странице админки, устанавливаю 2. Теперь при поиске показывает 2 товара и ссылок на другие страницы поиска нет. Один товар при поиске потерян.4. В настройках меняю значение Товаров на странице админки, устанавливаю 1. Теперь при поиске показывает 1 товар и ссылок на другие страницы поиска нет. Два другие товара при поиске не найдены.То есть поиск неверно определяет количество страниц (кол-во найденных товаров).Анализ кода api/Products.php показывает, что две части, связанные с поиском, совсем разные: if(!empty($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) { $kw = $this->db->escape(trim($keyword)); $keyword_filter .= $this->db->placehold("AND (p.name LIKE '%$kw%' OR p.meta_keywords LIKE '%$kw%' OR p.id in (SELECT product_id FROM __variants WHERE sku LIKE '%$kw%'))"); } } if(isset($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) $keyword_filter .= $this->db->placehold('AND (p.name LIKE "%'.$this->db->escape(trim($keyword)).'%" OR p.meta_keywords LIKE "%'.$this->db->escape(trim($keyword)).'%") '); } Отсюда и неверные результаты. На витрине также можно наблюдать аналогичную ошибку поиска. Понятно, что для исправления ошибки надо второй фрагмент сделать таким же, как и первый. А вообще в файле api/Products.php функции public function get_products($filter = array()) public function count_products($filter = array())написаны довольно нерационально. В них значительная часть кода повторяется. Поэтому при изменениях версий автор часто меняет в одном месте и забывает изменить в другом. Примеров несовпадения кода, который должен совпадать, предостаточно, если посмотреть разные версии. Автору давно бы уже пора вынести повторяющийся код в отдельную функцию - это сэкономило бы много времени и ему самому и пользователям... И массу переменных $category_id_filter = ''; $brand_id_filter = ''; $product_id_filter = ''; $keyword_filter = ''; $visible_filter = ''; $is_featured_filter = ''; $in_stock_filter = ''; $discounted_filter = ''; $features_filter = '';тоже вряд ли можно отнести к достоинствам кода. Пользователи, которые делают доработки, имеют неудобства от такой нерациональной организации. Лишняя работа и, как следствие, лишние ошибки. Даже специалисты данного форума нередко ошибаются, забывая про повтор кода... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.