/** * main action */ public function mainAction() { /** * initialise */ require_once 'models/common/common_node.php'; $Node = new common_node(); /** * input data */ $node_id = $this->GET['id']; if (is_numeric($this->GET['blog_node_id'])) { $blog_node_id = $this->GET['blog_node_id']; } else { $blog_node_id = $Node->conf['id_map-blog']; } /** * get node detail */ $node_data = $Node->nodeDetail($node_id); /** * filtering * TODO: support for multiple taxonomy * */ if (is_numeric($this->GET['taxonomy_tree_id'])) { $taxonomy_tree_id = $this->GET['taxonomy_tree_id']; } else { if ($taxonomy = $Node->getTaxonomyForNode($node_data['id'])) { $taxonomy_tree_id = $taxonomy[0]; } else { $taxonomy_tree_id = ''; } } if (is_numeric($this->GET['limit_from']) && is_numeric($this->GET['limit_per_page'])) { $limit_from = $this->GET['limit_from']; $limit_per_page = $this->GET['limit_per_page']; } else { if (is_numeric($node_data['component']['limit'])) { $limit_from = 0; $limit_per_page = $node_data['component']['limit']; } else { $limit_from = ''; $limit_per_page = ''; } } /** * template */ switch ($node_data['component']['template']) { case 'full': $template = 'news_list'; break; case 'teaser': $template = 'news_list_teaser'; break; case 'grid': $template = 'news_list_grid'; break; case 'stack': $template = 'news_list_stack'; break; case 'latest': default: $template = 'news_list_latest'; break; } /** * pagination */ if ($node_data['component']['pagination'] == 1) { $display_pagination = 1; } else { $display_pagination = 0; } /** * image size */ $image_o = $this->getImageSizeOptions($node_data); /** * call controller */ $_Onxshop = new Onxshop_Request("component/{$template}~blog_node_id={$blog_node_id}:id={$node_id}:limit_from={$limit_from}:limit_per_page={$limit_per_page}:display_pagination={$display_pagination}:publish=1:taxonomy_tree_id={$taxonomy_tree_id}:image_width={$image_o['width']}:image_height={$image_o['height']}:image_fill={$image_o['fill']}~"); $this->tpl->assign('NEWS_LIST', $_Onxshop->getContent()); $this->tpl->assign('NODE', $node_data); /** * display title */ $this->displayTitle($node_data); return true; }
/** * main action */ public function mainAction() { /** * initialize node */ require_once 'models/common/common_node.php'; $Node = new common_node(); $node_data = $Node->nodeDetail($this->GET['id']); $taxonomy_ids = $Node->getTaxonomyForNode($node_data['id']); if (is_array($node_data['component']['related']) || count($taxonomy_ids) > 0) { /** * prepare HTTP query for product_list component */ $product_id_list = array(); if (count($node_data['component']['related']) > 0) { foreach ($node_data['component']['related'] as $item) { if (is_numeric($item)) { $product_id_list[] = $item; } } } /** * Get product id list by category if catogory specified */ $this->extentProductIdListByTaxonomy($taxonomy_ids, $product_id_list); /** * build query */ $query_raw = array(); // sorting if ($node_data['component']['display_sorting'] == 1) { $query_raw['display_sorting'] = 1; } // force sorting as listed $query_raw['product_id_list_force_sorting_as_listed'] = 1; // image role if ($node_data['component']['image_role']) { $query_raw['image_role'] = $node_data['component']['image_role']; } // image width if ($node_data['component']['image_width'] > 0) { $query_raw['image_width'] = $node_data['component']['image_width']; } /** * product_id_list */ $query_raw['product_id_list'] = $product_id_list; //dont continue if list is empty if (count($query_raw['product_id_list']) == 0) { return true; } $query = http_build_query($query_raw, '', ':'); /** * detect controller for product list */ switch ($node_data['component']['template']) { case 'stack': $controller = 'product_list_stack'; break; case 'scroll': $controller = 'product_list_scroll'; break; case '6col': $controller = 'product_list_6columns'; break; case '5col': $controller = 'product_list_5columns'; break; case '4col': $controller = 'product_list_4columns'; break; case '3col': $controller = 'product_list_3columns'; break; case '2col': $controller = 'product_list_2columns'; break; case '1col': default: $controller = 'product_list_shelf'; break; } /** * call controller */ $_Onxshop_Request = new Onxshop_Request("component/ecommerce/{$controller}~{$query}~"); $this->tpl->assign('PRODUCT_LIST', $_Onxshop_Request->getContent()); } $this->tpl->assign('NODE', $node_data); if ($node_data['display_title']) { $this->tpl->parse('content.title'); } return true; }
/** * get product variety list * * check requested list * can be product_id_list or node_id * if node_id not provided, use first parent page */ function getProductVarietyList() { $filter = array(); //this filter option will ensure listing only enabled products and varieties $filter['publish'] = 1; //image role filter if (in_array($this->GET['image_role'], array('default', 'teaser', 'feature', 'background', 'RTE'))) { $filter['image_role'] = $this->GET['image_role']; } else { $filter['image_role'] = 'main'; } $this->tpl->assign('IMAGE_ROLE', $filter['image_role']); if (is_array($this->GET['product_id_list'])) { /* passed from this controllers: ./component/ecommerce/best_buys.php ./component/ecommerce/recently_viewed_products.php ./component/ecommerce/product_related_basket.php ./component/ecommerce/product_related_to_customer.php ./component/ecommerce/product_related.php */ $filter['product_id_list'] = $this->GET['product_id_list']; $product_variety_list = $this->Product->getFilteredProductList($filter, GLOBAL_LOCALE_CURRENCY); /** * modify priority according sort of product_id_list */ if ($this->GET['product_id_list_force_sorting_as_listed']) { foreach ($product_variety_list as $key => $item) { $product_variety_list[$key]['priority'] = 1000 - array_search($item['product_id'], $this->GET['product_id_list']); } } } else { /** * initialize node */ require_once 'models/common/common_node.php'; $Node = new common_node(); /** * Find node_id * 1. can be provided * 2. detected from place where the component sits */ if (is_numeric($this->GET['id'])) { $node_id = $this->GET['id']; //TODO find first parent page from given "id" //$node_id = $Node->getFirstParentPage($_SESSION['active_pages']); } else { $node_id = $Node->getFirstParentPage($_SESSION['active_pages']); //don't continue if node_id is not numeric (i.e. empty SESSION.active_pages) if (!is_numeric($node_id)) { return false; } } /** * filter, find if taxonomy is set for node */ if ($this->GET['taxonomy_tree_id']) { $taxonomy = explode(",", $this->GET['taxonomy_tree_id']); if (count($taxonomy) > 0 && is_numeric($taxonomy[0])) { $filter['taxonomy_json'] = json_encode($taxonomy); } } else { if ($taxonomy = $Node->getTaxonomyForNode($node_id)) { //add extra taxonomy filter $taxonomy = $this->addTaxonomyFilter($taxonomy); $filter['taxonomy_json'] = json_encode($taxonomy); } else { //add taxonomy filter from session or POST $taxonomy = $this->addTaxonomyFilter(); if (count($taxonomy) > 0) { $filter['taxonomy_json'] = json_encode($taxonomy); } } } /** * add keyword filter */ $filter['keyword'] = $this->addKeywordFilter(); /** * fallback to listing products which homepage is under the node_id */ if (empty($filter['taxonomy_json']) && empty($filter['keyword'])) { $filter['node_id'] = $node_id; } /** * get product list * */ $product_variety_list = $this->Product->getFilteredProductList($filter, GLOBAL_LOCALE_CURRENCY); } //print_r($product_variety_list); return $product_variety_list; }