Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

ychetka

Новачок
  
  • Публікації

    7
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем ychetka

  1. у меня проблем небыло, ошибка: # MySQL.e : Duplicate entry '57-необычные подарки-1' for key 1

    т.е. уже есть такая строка в базе

    Вот пример SQl запроса на запись тегов, в котором решена твоя проблема (обрати внимание на вторую часть запроса)

    $this->db->query("INSERT INTO " . DB_PREFIX . "product_tags SET product_id ='" . (int)$product['product_id'] . "', tag = '" . $this->db->escape($ptag_ind) . "', language_id = '" . (int)$product['language_id'] . "' ON DUPLICATE KEY UPDATE tag = VALUES(tag), product_id=VALUES(product_id), language_id=VALUES(language_id)");

  2. Модуль не работает

    v. - 1.4.9.7

    Все css и js сервер отдает. Картинка просто жуть - вся верста сьехала функционала никакого. никаких ошибок и предупреждений php не выводит. Буду рад если подскажите как заставить работать. Скриншот - post-5692-0-12630000-1315160763_thumb.jpg

  3. Здр. присваивание, точнее формирование в контроллере (админка) товара есть функция Getform , там надо залаживать возможность иметь вторую цену в товаре. Запись в базу - В модели товара addproduct

  4. Эххх.. Собственно, возникла необходимость в поиске по атрибутам товара. Не мудрствуя лукаво, было принято решение допилить встроенный расширенный поиск (oStore). Забегая вперед, скажу что шаблон вывода товара и контроллер (а точнее проверка в контроллере), были отредактированы, таким образом, никаких

    <select><option></option></select>  

    в шаблоне вывода нет, а строится таблица , т.е. в моем варианте (точнее заказчика) ему нужен был именно такой функционал

    картинка

    Итак вернусь к поиску.

    Решил использовать встроенную возможность искать модель (пока так, потом отредактирую темплейты нормально).

    Запрос для поиска (пример) - .../index.php?route=product/search&keyword=красный&category_id=0&model=1

    Контроллер поиска использует модель

    /catalog/product

    функции

    getTotalProductsByKeyword

    getTotalProductsByTag

    (я так понял это два параллельных поиска так далее их результаты просто сравниваются и берется результат того у кого больше)

    $product_total = $this->model_catalog_product->getTotalProductsByKeyword($this->request->get['keyword'], isset($this->request->get['category_id']) ? $this->request->get['category_id'] : '', isset($this->request->get['description']) ? $this->request->get['description'] : '', isset($this->request->get['model']) ? $this->request->get['model'] : '');
    
    
    $product_tag_total = $this->model_catalog_product->getTotalProductsByTag($this->request->get['keyword'], isset($this->request->get['category_id']) ? $this->request->get['category_id'] : '');
    
    
    $product_total = max($product_total, $product_tag_total);
    

    По сути обе - это выборка из БД, правда запросы там не простые, а с объединением таблиц, чем и было решено воспользоваться:

    Вот отредактированная строка из модели /model/catalog/product.php функция getTotalProductsByKeyword :

    $sql = "SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description 
    pd ON (p.product_id = pd.product_id)  LEFT JOIN " . DB_PREFIX . "product_option_value_description povd ON 
    (p.product_id = povd.product_id)  LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) 
    WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . 
    (int)$this->config->get('config_store_id') . "'";
    

    Я присоединил

    product_option_value_description

    к запросу и провел соотношение

    product.product_id = product_option_value_description.product_id

    и еще одно небольшое условие ниже

    if (!$model) {
    $sql .= ")";
    
    } else {
    $sql .= " OR povd.name LIKE '%" . $this->db->escape($keyword) . "%')";
    }

    По аналогии с были отредактированы выборки:

    getTotalProductsByKeyword
    getTotalProductsByTag 
    getProductsByKeyword 
    getProductsByTag

    Задача поиска по атрибутам в итоге решена, но отрабатывает некорректно, а точнее:

    Если в поиск забить к примеру слово "красный" и у какого нибудь товара есть опция значение которой "красный" поиск работает нормально, но если слово поиска будет "красный карандаш" - поиск не выдаст результатов, я не понимаю отчего это происходит, ведь выборка идет LIKE %% (

    $sql .= " OR povd.name LIKE '%" . $this->db->escape($keyword) . "%')";

    )

    причем даже пробле вначале слова " красный" - поиск не дает результатов. Сейчас на яве сделал ключевому слову trim (убираю пробелы с начала и конца строки), но это заплатка.

    Собственно свою проблемую я думаю я описал детально, если будут у кого-то вопросы по описанию, пишите я дам более детальные пояснения. Помогите решить проблему с поиском.

    P/S Я с Opencart знаком сегодня ровно как неделю, прошу сильно не пинать, мог где-то что-то упустить.

  5. Необходим функционал некого фильтра. Типа производители бытовой химии не выводятся в категории детские игрушки. Я понимаю что можно сделать 10 тематических магазинов вместо рутовых категорий но все же, подскажите существует ли сие чудо в природе ?


×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.