[Решено] модуль "последние"

Тема в разделе "OpenCart", создана пользователем Cold_232, 16 фев 2014.

Статус темы:
Закрыта.
  1. Cold_232

    Cold_232

    Регистрация:
    22 июн 2013
    Сообщения:
    128
    Симпатии:
    31
    Насколько я понял, стандартный модуль выводит последние товары по p.date_added в файле ..\catalog\controller\module\latest.php. Это значение даты в админке не показует, следовательно, его так просто оперативно не изменить. Зато из админки можно изменять "дату поступления" date_available (из таблицы oc_product).
    Как научить модуль "последние" выводить товары по date_available, которую можно менять в админке?
     
  2. Bnopen

    Bnopen Команда форума

    Регистрация:
    3 мар 2013
    Сообщения:
    1.155
    Симпатии:
    514
    Cold_232, в контроллере latest - catalog/controller/module/latest

    PHP:
            $data = array(
                
    'sort'  => 'p.date_added',
                
    'order' => 'DESC',
                
    'start' => 0,
                
    'limit' => $setting['limit']
            );
    поменяйте p.date_added на p.date_available
     
    Cold_232 нравится это.
  3. Cold_232

    Cold_232

    Регистрация:
    22 июн 2013
    Сообщения:
    128
    Симпатии:
    31
    Да, конечно, я так и сделал. Этого не достаточно. Давно, как-то попадался вариант на форуме ок. Ещё где-то надо добавить. как-то чтобы поняла система эту переменную p.date_available, что ли. Буду искать решение, знаю что есть :Smile:
     
  4. Bnopen

    Bnopen Команда форума

    Регистрация:
    3 мар 2013
    Сообщения:
    1.155
    Симпатии:
    514
    Cold_232, точно, еще же есть в файле /catalog/model/catalog/product.php, функция, которая выводит новинки:
    PHP:
        public function getLatestProducts($limit) {
            if (
    $this->customer->isLogged()) {
                
    $customer_group_id $this->customer->getCustomerGroupId();
            } else {
                
    $customer_group_id $this->config->get('config_customer_group_id');
            }   
                   
            
    $product_data $this->cache->get('product.latest.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' $customer_group_id '.' . (int)$limit);

            if (!
    $product_data) {
                
    $query $this->db->query("SELECT p.product_id FROM " DB_PREFIX "product p LEFT JOIN " DB_PREFIX "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.date_added DESC LIMIT " . (int)$limit);
                 
                foreach (
    $query->rows as $result) {
                    
    $product_data[$result['product_id']] = $this->getProduct($result['product_id']);
                }
               
                
    $this->cache->set('product.latest.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id'). '.' $customer_group_id '.' . (int)$limit$product_data);
            }
           
            return 
    $product_data;
        }
    Скорее всего надо и здесь поменять ORDER BY p.date_added на p.date_available.
     
  5. Cold_232

    Cold_232

    Регистрация:
    22 июн 2013
    Сообщения:
    128
    Симпатии:
    31
    Нашёл таки что менять :smile: Кроме изменения, предложенного Bnopen,


    ещё нужно в \catalog\model\catalog\product.php добавить 'p.date_available' в массив:
     
Статус темы:
Закрыта.