Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

В общем, переделываю сайт после другого прогера и в моей версии симплы выпилины методы get_next_product() и get_prev_product(), прошу помощи. Как я понимаю, эти методы должны находиться в View.php Скиньте код этих методов, если не трудно.

 

Все-таки они не выпилины, как оказалось они расположены в api/Products.php, но почему-то эти методы не срабатывают при вызове в шаблоне product.tpl таким способом {$next_product->url} 

 

Из ProductView.php в шаблон выводятся вот так:

$this->design->assign('next_product', $this->products->get_next_product($product->id));

 

Сам метод next_product выглядит во так:

 

public function get_next_product($id)
    {
        $this->db->query("SELECT position FROM __products WHERE id=? LIMIT 1", $id);
        $position = $this->db->result('position');
        
        $this->db->query("SELECT pc.category_id FROM __products_categories pc WHERE product_id=? ORDER BY position LIMIT 1", $id);
        $category_id = $this->db->result('category_id');


        $query = $this->db->placehold("SELECT id FROM __products p, __products_categories pc
                                        WHERE pc.product_id=p.id AND p.position>? 
                                        AND pc.position=(SELECT MIN(pc2.position) FROM __products_categories pc2 WHERE pc.product_id=pc2.product_id)
                                        AND pc.category_id=? 
                                        AND p.visible ORDER BY p.position limit 1", $position, $category_id);
        $this->db->query($query);


        return $this->get_product((integer)$this->db->result('id'));
    }
 

 

 

Как выяснилось, у нас на сайте не используются категории товаров. Следовательно запрос:

 

 

$this->db->query("SELECT pc.category_id FROM __products_categories pc WHERE product_id=? ORDER BY position LIMIT 1", $id);
 

Возвращает 0.

Изменено пользователем palehin
Ссылка на сообщение
Поделиться на другие сайты

Пробуйте примерно так:

public function get_next_product($id)
    {
        $this->db->query("SELECT position FROM __products WHERE id=? LIMIT 1", $id);
        $position = $this->db->result('position');
        
         $query = $this->db->placehold("SELECT id FROM __products p
                                        WHERE  p.position>? 
                                        AND p.visible ORDER BY p.position  limit 1", $position);
        $this->db->query($query);

        return $this->get_product((integer)$this->db->result('id'));
    }
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...