public function renderDefault($id, $id_category) { if (!$id) { throw new NBadRequestException('Product neexistuje'); } $this->template->id_category = $id_category; $this->template->category_parents = CategoryModel::getParents($this->template->id_category, $this->id_lang); $this->template->product = ProductModel::getProductWithParams($id, $this->id_lang, $this->user); $this['productNewsSaleAvaiableTable']->setIdProduct($id); $this['productNewsSaleAvaiableTable']->setIdCategory($id_category); $this['productNewsSaleAvaiableTable']->setIdLang($this->id_lang); $this['productNewsSaleAvaiableTable']->setUser($this->user); /* * META INFO */ if ($this->template->product) { if ($this->template->product['meta_title'] == '') { $this['header']->addTitle($this->template->product['name']); } else { $this['header']->addTitle($this->template->product['meta_title']); } if ($this->template->product['meta_description'] == '') { $this['header']->setDescription($this->template->product['name']); } else { $this['header']->setDescription($this->template->product['meta_description']); } $this['header']->addKeywords($this->template->product['meta_keywords']); } $this['header']['js']->addFile('jquery/bubblepopup/jquery.bubblepopup.v2.3.1.min.js'); $this['header']['css']->addFile('../jscripts/jquery/bubblepopup/jquery.bubblepopup.v2.3.1.css'); }
function beforeRender() { parent::beforeRender(); $this->template->id_category = $this->id; $this->template->category_parents = CategoryModel::getParents($this->template->id_category, $this->id_lang); //ak je iba jeden parent zobraz kategorie, inak zobraz produkty if (count($this->template->category_parents) == 1) { $id_parent = current($this->template->category_parents); $category_list = CategoryModel::getFluent('id_category')->where('id_parent = %i', $id_parent)->fetchAll(); $this->template->categories = array(); foreach ($category_list as $l) { $_tmp = CategoryModel::get($l->id_category, $this->id_lang); $_tmp['product_count'] = dibi::fetchSingle("SELECT COUNT(id_product) FROM [product] JOIN [category_product] USING(id_product) WHERE id_category = %i", $l->id_category); $this->template->categories[] = $_tmp; } $this->template->product_count = dibi::fetchSingle("SELECT COUNT(id_product) FROM [product] JOIN [category_product] USING(id_product) WHERE id_category = %i", $this->id); } else { $list = dibi::select('id_product')->from('product')->join('category_product')->using('(id_product)')->join('product_param')->using('(id_product)')->where('id_category = ', $this->id, 'AND product.active = 1'); /* * Filter */ $orderSession = $this['quickFilter']->getSession(); // dde($orderSession['order']); // $orderSession['order'] = 'price'; if ($orderSession['order']) { $list->orderBy($orderSession['order']); } else { $order_array = $this['quickFilter']->getOrderFilterArray(); $list->orderBy(key($order_array)); } $list->groupBy('id_product'); // dump($order); // print_r($list); $count_list = clone $list; // $count = $count_list->removeClause('select')->select('COUNT(id_product)')->fetchSingle(); $count = count($count_list); $vp = new VisualPaginator($this, 'paginator'); $paginator = $vp->getPaginator(); $numOnPageSession = $this['quickFilter']->getSession(); if ($numOnPageSession['num']) { $paginator->itemsPerPage = $numOnPageSession['num']; } else { $num_on_page_array = $this['quickFilter']->getNumOnPageFilterArray(); $paginator->itemsPerPage = key($num_on_page_array); } $paginator->itemCount = (int) $count; $this->template->product_count = $count; $this->template->products = $list->limit($paginator->offset . ',' . $paginator->itemsPerPage)->fetchAll(); //dump($this->template->products); $this->template->paginator = $paginator; foreach ($this->template->products as $k => $p) { $this->template->products[$k] = ProductModel::getProductWithParams($p['id_product'], $this->id_lang, $this->user); } // }; } // print_r($this->template->products);exit; }
function renderCategory($id_category, $id_lang, $color = 'black') { $template = $this->template; $template->color_home = $color; $tmp = CategoryModel::getParents($id_category, $id_lang); $tmp = array_reverse($tmp); $tree = CategoryModel::getTree($id_lang); $template->parents = array(); foreach ($tmp as $t) { $template->parents[] = $tree[$t]; } $template->setFile(dirname(__FILE__) . '/eshop_category.latte'); $template->render(); }
static function getParents() { $model = new CategoryModel(); $result = $model->getParents(); return $result; }
static function getProductWithParams($id_product, $id_lang, $user) { $product = self::get($id_product, $id_lang); if (!$product) { throw new NBadRequestException('Product neexistuje'); } $product = (array) $product; $key = 'getProductWithParams(' . $id_product . ',' . $id_lang . ')'; $value = self::loadCache($key); if (!$value) { $value = array(); $value['files'] = self::getFiles($id_product); if (isset($value['files'][0])) { $value['first_file'] =& $value['files'][0]; } else { $value['first_file'] = array('src' => 'no-image', 'ext' => 'jpg'); } $value['categories'] = self::getProductCategories($id_product); //zisti main category!!! $max_count = 0; $main_parent = null; foreach ($value['categories'] as $k => $category) { $tmp_parents = CategoryModel::getParents($category['id_category'], $id_lang); if ($max_count < count($tmp_parents)) { $main_parent = $tmp_parents[key($tmp_parents)]; $max_count = count($tmp_parents); } } $value['main_category'] = $main_parent; self::saveCache($key, $value); } $product = array_merge($product, $value); //no cache $product['params'] = self::getProductParams($id_product, $id_lang, $user); $first_key_param = null; // print_r($product);exit; //zisti ktora varianta je najviac na sklade, tu budeme uvadzat pri nahlade $product['max_stock'] = 0; //zisti min_price $product['min_price'] = array('original_price' => 0, 'sale_percent' => 0, 'sale' => 0, 'price' => 0, 'tax' => 0, 'user_discount' => 0, 'price_with_tax' => 0, 'tax_price' => 0, 'price_showed' => 0); //iba pre parameter connection, ci nie je vsade prazdny $show_connection = false; foreach ($product['params'] as $k => $r) { if ($r['connection'] != '') { $show_connection = true; } if ($first_key_param == null) { $first_key_param = $k; } if (isset($r['stock']) and $r['stock'] > $product['max_stock']) { $product['max_stock'] = $r['stock']; } if ($r['price_array']['price_showed'] < $product['min_price']['price_showed'] or $product['min_price']['price_showed'] == 0) { $product['min_price'] =& $r['price_array']; } } $product['show_connection'] = $show_connection; if (isset($product['params'][$first_key_param])) { $product['first_param'] =& $product['params'][$first_key_param]; } else { $product['first_param'] = null; } return $product; }