function __construct() { $settings = MG::get('settings'); // Если нажата кнопка купить. $_REQUEST['category_id'] = URL::getQueryParametr('category_id'); if (!empty($_REQUEST['inCartProductId'])) { $cart = new Models_Cart(); // Если параметров товара не передано // возможно была нажата кнопка купить из мини карточки, // в этом случае самостоятельно вычисляем набор // параметров, которые были бы указаны при открытии карточки товара. if (empty($_POST) || isset($_POST['updateCart']) && isset($_POST['inCartProductId']) && count($_POST) == 2) { $modelProduct = new Models_Product(); $product = $modelProduct->getProduct($_REQUEST['inCartProductId']); if (empty($product)) { MG::redirect('/404'); exit; } $blockVariants = $modelProduct->getBlockVariants($product['id']); $blockedProp = $modelProduct->noPrintProperty(); $propertyFormData = $modelProduct->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => $product['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants, 'currency_iso' => $product['currency_iso'])); $_POST = $propertyFormData['defaultSet']; $_POST['inCartProductId'] = $product['id']; } $property = $cart->createProperty($_POST); $cart->addToCart($_REQUEST['inCartProductId'], $_REQUEST['amount_input'], $property); SmalCart::setCartData(); MG::redirect('/cart'); } if (!empty($_REQUEST['fastsearch'])) { $this->getSearchData(); } $countСatalogProduct = $settings['countСatalogProduct']; // Показать первую страницу выбранного раздела. $page = 1; // Запрашиваемая страница. if (isset($_REQUEST['p'])) { $page = $_REQUEST['p']; } $model = new Models_Catalog(); // Если происходит поиск по ключевым словам. $keyword = MG::defenderXss_decode(urldecode(URL::getQueryParametr('search'))); if (!empty($keyword)) { $keyword = $this->convertLang($keyword); $items = $model->getListProductByKeyWord($keyword, false, true, false, 'groupBy'); $searchData = array('keyword' => $keyword, 'count' => $items['numRows']); } else { // Получаем список вложенных категорий, // для вывода всех продуктов, на страницах текущей категории. if (empty($_REQUEST['category_id'])) { $_REQUEST['category_id'] = 0; } $model->categoryId = MG::get('category')->getCategoryList($_REQUEST['category_id']); // В конец списка, добавляем корневую текущую категорию. $model->categoryId[] = $_REQUEST['category_id']; // Записываем в глобальную переменную список всех вложенных категорий, // чтобы использовать в других местах кода, например в фильтре по характеристикам $_REQUEST['category_ids'] = $model->categoryId; // Передаем номер требуемой страницы, и количество выводимых объектов. $countСatalogProduct = $settings['countСatalogProduct']; $items = $model->getList($countСatalogProduct, false, true); } // Если с фильтра пришел запрос только на количество позиций. if (!empty($_REQUEST['getcount']) && !empty($_REQUEST['filter'])) { echo $items['totalCountItems'] ? $items['totalCountItems'] : 0; exit; } $settings = MG::get('settings'); if (empty($items['catalogItems'])) { $items['catalogItems'] = array(); } else { foreach ($items['catalogItems'] as $item) { if ($item['id']) { $productIds[] = $item['id']; } } $product = new Models_Product(); $blocksVariants = empty($productIds) ? null : $product->getBlocksVariantsToCatalog($productIds); $blockedProp = $product->noPrintProperty(); $actionButton = MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView'; foreach ($items['catalogItems'] as $k => $item) { $imagesUrl = explode("|", $item['image_url']); $items['catalogItems'][$k]["image_url"] = ""; if (!empty($imagesUrl[0])) { $items['catalogItems'][$k]["image_url"] = $imagesUrl[0]; } $items['catalogItems'][$k]['title'] = MG::modalEditor('catalog', $item['title'], 'edit', $item["id"]); if ($items['catalogItems'][$k]['count'] == 0) { $buyButton = $items['catalogItems'][$k]['actionView']; } else { $buyButton = $items['catalogItems'][$k][$actionButton]; if (!empty($items['catalogItems'][$k]['variants'])) { foreach ($items['catalogItems'][$k]['variants'] as $variant) { if ($variant['count'] == 0) { $buyButton = $items['catalogItems'][$k]['actionView']; } } } } // Легкая форма без характеристик. $liteFormData = $product->createPropertyForm($param = array('id' => $item['id'], 'maxCount' => $item['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => true, 'titleBtn' => "В корзину", 'blockVariants' => $blocksVariants[$item['id']], 'buyButton' => $buyButton)); $items['catalogItems'][$k]['liteFormData'] = $liteFormData['html']; $buyButton = $items['catalogItems'][$k]['liteFormData']; $items['catalogItems'][$k]['buyButton'] = $buyButton; } } $categoryDesc = MG::get('category')->getDesctiption($_REQUEST['category_id']); if ($_REQUEST['category_id']) { $categoryDesc = MG::inlineEditor(PREFIX . 'category', "html_content", $_REQUEST['category_id'], $categoryDesc); } $catImg = MG::get('category')->getImageCategory($_REQUEST['category_id']); //$model->currentCategory['title'] = $_REQUEST['category_id'] ? $model->currentCategory['title'] : 0, //var_dump($model->currentCategory['title']); $data = array('items' => $items['catalogItems'], 'titeCategory' => $model->currentCategory['title'], 'cat_desc' => $categoryDesc, 'cat_img' => $catImg, 'cat_id' => $_REQUEST['category_id'] ? $_REQUEST['category_id'] : 0, 'filterBar' => $items['filterBarHtml'], 'totalCountItems' => $items['totalCountItems'], 'pager' => $items['pager'], 'searchData' => empty($searchData) ? '' : $searchData, 'meta_title' => !empty($model->currentCategory['meta_title']) ? $model->currentCategory['meta_title'] : $model->currentCategory['title'], 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "товары,продукты,изделия", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "В каталоге нашего магазина есть все.", 'currency' => $settings['currency'], 'actionButton' => $actionButton); if (URL::isSection('catalog') || MG::getSetting('catalogIndex') == 'true' && (URL::isSection('index') || URL::isSection(''))) { $html = MG::get('pages')->getPageByUrl('catalog'); $html['html_content'] = MG::inlineEditor(PREFIX . 'page', "html_content", $html['id'], $html['html_content']); $data['meta_title'] = $html['meta_title'] ? $html['meta_title'] : $html['title']; $data['meta_title'] = $data['meta_title'] ? $data['meta_title'] : $model->currentCategory['title']; $data['meta_keywords'] = $html['meta_keywords']; $data['meta_desc'] = $html['meta_desc']; $data['cat_desc'] = $html['html_content']; $data['titeCategory'] = $html['title']; } if ($keyword) { $data['meta_title'] = 'Поиск по фразе: ' . $keyword; } $this->data = $data; }
function __construct() { $settings = MG::get('settings'); // Если нажата кнопка купить. $_REQUEST['type'] = $_GET['type']; $countСatalogProduct = $settings['countСatalogProduct']; // Показать первую страницу выбранного раздела. $page = 1; // Запрашиваемая страница. if (isset($_REQUEST['p'])) { $page = $_REQUEST['p']; } $model = new Models_Catalog(); $currencyRate = MG::getSetting('currencyRate'); $currencyShopIso = MG::getSetting('currencyShopIso'); if (!empty($_REQUEST['type'])) { $titeCategory = 'Группы товаров'; if ($_REQUEST['type'] == 'recommend') { $titeCategory = "Рекомендуемые товары"; $classTitle = "m-p-recommended-products-title"; // Формируем список товаров для блока рекомендуемой продукции. $items = $model->getListByUserFilter(MG::getSetting('countRecomProduct'), ' p.recommend = 1 and p.activity=1 ORDER BY sort ASC'); } elseif ($_REQUEST['type'] == 'latest') { $titeCategory = "Новинки"; $classTitle = "m-p-new-products-title"; // Формируем список товаров для блока новинок. $items = $model->getListByUserFilter(MG::getSetting('countNewProduct'), ' p.new = 1 and p.activity=1 ORDER BY sort ASC'); } elseif ($_REQUEST['type'] == 'sale') { $titeCategory = "Распродажа"; $classTitle = "m-p-sale-products-title"; // Формируем список товаров со старой ценой. $items = $model->getListByUserFilter(MG::getSetting('countSaleProduct'), ' (p.old_price>0 || pv.old_price>0) and p.activity=1 ORDER BY sort ASC'); } $settings = MG::get('settings'); if (!empty($items)) { foreach ($items['catalogItems'] as $k => $item) { $productIds[] = $item['id']; $items['catalogItems'][$k]['currency_iso'] = $item['currency_iso'] ? $item['currency_iso'] : $currencyShopIso; // $item['price'] *= $currencyRate[$item['currency_iso']]; $items['catalogItems'][$k]['old_price'] = $item['old_price'] * $currencyRate[$item['currency_iso']]; $items['catalogItems'][$k]['old_price'] = $item['old_price'] ? MG::priceCourse($item['old_price']) : 0; $items['catalogItems'][$k]['price'] = MG::priceCourse($item['price_course']); } } $product = new Models_Product(); $blocksVariants = $product->getBlocksVariantsToCatalog($productIds); $blockedProp = $product->noPrintProperty(); if (!empty($items)) { foreach ($items['catalogItems'] as $k => $item) { $imagesUrl = explode("|", $item['image_url']); $items['catalogItems'][$k]["image_url"] = ""; if (!empty($imagesUrl[0])) { $items['catalogItems'][$k]["image_url"] = $imagesUrl[0]; } $item['currency_iso'] = $item['currency_iso'] ? $item['currency_iso'] : $currencyShopIso; //$item['price'] *= $currencyRate[$item['currency_iso']]; $item['old_price'] = $item['old_price'] * $currencyRate[$item['currency_iso']]; $item['old_price'] = $item['old_price'] ? MG::priceCourse($item['old_price']) : 0; $item['price'] = MG::priceCourse($item['price_course']); $items['catalogItems'][$k]['title'] = MG::modalEditor('catalog', $item['title'], 'edit', $item["id"]); // Формируем варианты товара. // if ($item['variant_exist']) { // Легкая форма без характеристик. $liteFormData = $product->createPropertyForm($param = array('id' => $item['id'], 'maxCount' => $item['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => true, 'titleBtn' => MG::getSetting('buttonBuyName'), 'buyButton' => $items['catalogItems'][$k]['count'] == 0 ? $items['catalogItems'][$k]['actionView'] : '', 'blockVariants' => $blocksVariants[$item['id']])); $items['catalogItems'][$k]['liteFormData'] = $liteFormData['html']; // } // опледеляем для каждого продукта тип выводимой формы: упрощенная, с кнопками или без. if (!$items['catalogItems'][$k]['liteFormData']) { if ($items['catalogItems'][$k]['count'] == 0) { $buyButton = $items['catalogItems'][$k]['actionView']; } else { $buyButton = $items['catalogItems'][$k][$actionButton]; } } else { $buyButton = $items['catalogItems'][$k]['liteFormData']; } $items['catalogItems'][$k]['buyButton'] = $buyButton; } } $data = array('items' => $items['catalogItems'], 'titeCategory' => $titeCategory, 'pager' => $items['pager'], 'meta_title' => $titeCategory, 'meta_keywords' => "новинки, рекомендуемые, распродажа", 'meta_desc' => "Новинки, рекомендуемые, распродажа", 'currency' => $settings['currency'], 'actionButton' => MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView', 'class_title' => $classTitle, 'actionButton' => MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView', 'currency' => MG::getSetting('currency')); } else { $groupsData = $this->getGroupsData(); $data = array('titeCategory' => $titeCategory, 'items' => array(), 'recommendProducts' => !empty($groupsData['recommendProducts']['catalogItems']) ? $groupsData['recommendProducts']['catalogItems'] : array(), 'newProducts' => !empty($groupsData['newProducts']['catalogItems']) ? $groupsData['newProducts']['catalogItems'] : array(), 'saleProducts' => !empty($groupsData['saleProducts']['catalogItems']) ? $groupsData['saleProducts']['catalogItems'] : array(), 'meta_title' => 'Группы товаров', 'meta_keywords' => "новинки, рекомендуемые, распродажа", 'meta_desc' => "Новинки, рекомендуемые, распродажа", 'actionButton' => MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView', 'currency' => MG::getSetting('currency')); } $this->data = $data; }
/** * Получает список продуктов в соответствии с выбранными параметрами фильтра. * @param type $countRows - количество записей; * @param type $userfilter - пользовательская составляющая для запроса; * @param type $mgadmin - админка; * @return array */ public function getListByUserFilter($countRows = 20, $userfilter, $mgadmin = false) { // Вычисляет общее количество продуктов. $page = URL::get("page"); // Запрос вернет общее кол-во продуктов в выбранной категории. $sql = ' SELECT DISTINCT p.id, CONCAT(c.parent_url,c.url) as category_url, p.url as product_url, p.*,pv.product_id as variant_exist FROM `' . PREFIX . 'product` p LEFT JOIN `' . PREFIX . 'category` c ON c.id = p.cat_id LEFT JOIN `' . PREFIX . 'product_variant` pv ON p.id = pv.product_id WHERE ' . $userfilter; $navigator = new Navigator($sql, $page, $countRows); //определяем класс. $this->pages = $navigator->getRowsSql(); $model = new Models_Product(); /** * Достаем пользовательские характеристики для каждого товара. */ $idsProduct = array(); foreach ($this->pages as $key => $product) { $idsProduct[$product['id']] = $key; // Назначаем для продукта позьзовательские характеристики по умолчанию, заданные категорией. $this->pages[$key]['thisUserFields'] = MG::get('category')->getUserPropertyCategoryById($product['cat_id']); // Формируем ссылки подробнее и в корзину. $this->pages[$key]['actionBuy'] = '<a href="' . SITE . '/catalog?inCartProductId=' . $product["id"] . '" class="addToCart product-buy" data-item-id="' . $product["id"] . '">В корзину</a>'; $this->pages[$key]['actionView'] = '<a href="' . SITE . '/' . (isset($product["category_url"]) ? $product["category_url"] : 'catalog') . '/' . $product["product_url"] . '" class="product-info">Подробнее</a>'; } $arrayVariants = $model->getBlocksVariantsToCatalog(array_keys($idsProduct), true); foreach (array_keys($idsProduct) as $id) { $this->pages[$idsProduct[$id]]['variants'] = $arrayVariants[$id]; } // Собираем все ID продуктов в один запрос. if ($prodSet = trim(DB::quote(implode(',', array_keys($idsProduct))), "'")) { // Формируем список id продуктов, к которым нужно найти пользовательские характеристики. $where = ' IN (' . $prodSet . ')'; } else { $where = ' IN (0)'; } $res = DB::query(" \n SELECT pup.property_id, pup.value, pup.product_id, prop.*\n FROM `" . PREFIX . "product_user_property` as pup\n LEFT JOIN `" . PREFIX . "property` as prop\n ON pup.property_id = prop.id\n WHERE pup.`product_id` " . $where); while ($userFields = DB::fetchAssoc($res)) { // дописываем в массив пользовательских характеристик, все переопределенные для каждого тоавара, оставляя при этом не измененные характеристики по умолчанию $this->pages[$idsProduct[$userFields['product_id']]]['thisUserFields'][$userFields['property_id']] = $userFields; } if ($mgadmin) { $this->pager = $navigator->getPager('forAjax'); } else { $this->pager = $navigator->getPager(); } $result = array('catalogItems' => $this->pages, 'pager' => $this->pager); $args = func_get_args(); return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args); }
/** * Метод добавляет к массиву продуктов информацию о характеристиках * для каждого продукта * @param $arrayProducts - массив с продуктами * @return float. */ public function addPropertyToProduct($arrayProducts) { $categoryIds = array(); $whereCat = ''; $idsProduct = array(); $currency = MG::getSetting("currency"); $currencyRate = MG::getSetting('currencyRate'); $currencyShopIso = MG::getSetting('currencyShopIso'); $prod = new Models_Product(); $idsVariantProduct = array(); foreach ($arrayProducts as $key => $product) { $arrayProducts[$key]['category_url'] = SHORT_LINK == '1' && !URL::isSection('mg-admin') ? '' : $arrayProducts[$key]['category_url'] . '/'; $product['category_url'] = SHORT_LINK == '1' ? '' : $product['category_url'] . '/'; if ($product['variant_exist'] && $product['variant_id']) { $variants = $prod->getVariants($product['id']); $variantsKey = array_keys($variants); $product['variant_id'] = $variantsKey[0]; $idsVariantProduct[$product['id']][] = $key; $variant = $variants[$product['variant_id']]; $arrayProducts[$key]['price_course'] = $variant['price_course']; $arrayProducts[$key]['price'] = $variant['price']; $arrayProducts[$key]['image_url'] = $variant['image'] ? $variant['image'] : $arrayProducts[$key]['image_url']; } $idsProduct[$product['id']] = $key; $categoryIds[] = $product['cat_id']; // Назначаем для продукта позьзовательские // характеристики по умолчанию, заданные категорией. $arrayProducts[$key]['thisUserFields'] = MG::get('category')->getUserPropertyCategoryById($product['cat_id']); $arrayProducts[$key]['propertyIdsForCat'] = MG::get('category')->getPropertyForCategoryById($product['cat_id']); $arrayProducts[$key]['currency'] = $currency; // Формируем ссылки подробнее и в корзину. $arrayProducts[$key]['actionBuy'] = '<a href="' . SITE . '/catalog?inCartProductId=' . $product["id"] . '" class="addToCart product-buy" data-item-id="' . $product["id"] . '">' . MG::getSetting('buttonBuyName') . '</a>'; $arrayProducts[$key]['actionCompare'] = '<a href="' . SITE . '/compare?inCompareProductId=' . $product["id"] . '" class="addToCompare" data-item-id="' . $product["id"] . '">' . MG::getSetting('buttonCompareName') . '</a>'; $arrayProducts[$key]['actionView'] = '<a href="' . SITE . '/' . (isset($product["category_url"]) ? $product["category_url"] : 'catalog') . '/' . $product["product_url"] . '" class="product-info">' . MG::getSetting('buttonMoreName') . '</a>'; $arrayProducts[$key]['link'] = SITE . '/' . (isset($product["category_url"]) ? $product["category_url"] : 'catalog/') . $product["product_url"]; if (empty($arrayProducts[$key]['currency_iso'])) { $arrayProducts[$key]['currency_iso'] = $currencyShopIso; } $arrayProducts[$key]['real_old_price'] = $arrayProducts[$key]['old_price']; $arrayProducts[$key]['old_price'] *= $currencyRate[$arrayProducts[$key]['currency_iso']]; $arrayProducts[$key]['real_price'] = $arrayProducts[$key]['price']; $arrayProducts[$key]['price'] = MG::priceCourse($arrayProducts[$key]['price_course']); $imagesConctructions = $prod->imagesConctruction($arrayProducts[$key]['image_url'], $arrayProducts[$key]['image_title'], $arrayProducts[$key]['image_alt']); $arrayProducts[$key]['images_product'] = $imagesConctructions['images_product']; $arrayProducts[$key]['images_title'] = $imagesConctructions['images_title']; $arrayProducts[$key]['images_alt'] = $imagesConctructions['images_alt']; $arrayProducts[$key]['image_url'] = $imagesConctructions['image_url']; $arrayProducts[$key]['image_title'] = $imagesConctructions['image_title']; $arrayProducts[$key]['image_alt'] = $imagesConctructions['image_alt']; $imagesUrl = explode("|", $arrayProducts[$key]['image_url']); $arrayProducts[$key]["image_url"] = ""; if (!empty($imagesUrl[0])) { $arrayProducts[$key]["image_url"] = $imagesUrl[0]; } } $model = new Models_Product(); $arrayVariants = $model->getBlocksVariantsToCatalog(array_keys($idsProduct), true); foreach (array_keys($idsProduct) as $id) { $arrayProducts[$idsProduct[$id]]['variants'] = $arrayVariants[$id]; } // Собираем все ID продуктов в один запрос. if ($prodSet = trim(DB::quote(implode(',', array_keys($idsProduct))), "'")) { // Формируем список id продуктов, к которым нужно найти пользовательские характеристики. $where = ' IN (' . $prodSet . ') '; } else { $where = ' IN (0) '; } //Определяем id категории, в которой находимся $catCode = URL::getLastSection(); $sql = ' SELECT pup.property_id, pup.value, pup.product_id, prop.*, pup.type_view, pup.product_margin FROM `' . PREFIX . 'product_user_property` as pup LEFT JOIN `' . PREFIX . 'property` as prop ON pup.property_id = prop.id '; if ($catSet = trim(DB::quote(implode(',', $categoryIds)), "'")) { $categoryIds = array_unique($categoryIds); $sql .= ' LEFT JOIN `' . PREFIX . 'category_user_property` as cup ON cup.property_id = prop.id '; $whereCat = ' AND cup.category_id IN (' . $catSet . ') '; } $sql .= 'WHERE pup.`product_id` ' . $where . $whereCat; $sql .= 'ORDER BY `sort` DESC'; $res = DB::query($sql); while ($userFields = DB::fetchAssoc($res)) { // viewDAta($userFields['property_id']); // viewDAta($arrayProducts[$key]['propertyIdsForCat']); // Обновляет данные позначениям характеристик, только для тех хар. которые назначены для категории текущего товара. // Это не работает в фильтрах и сравнениях. // if(in_array($userFields['property_id'],$arrayProducts[$key]['propertyIdsForCat'])){ // дописываем в массив пользовательских характеристик, // все переопределенные для каждого тоавара, оставляя при // этом не измененные характеристики по умолчанию $arrayProducts[$idsProduct[$userFields['product_id']]]['thisUserFields'][$userFields['property_id']] = $userFields; // добавляем польз характеристики ко всем вариантам продукта if (!empty($idsVariantProduct[$userFields['product_id']])) { foreach ($idsVariantProduct[$userFields['product_id']] as $keyPages) { $arrayProducts[$keyPages]['thisUserFields'][$userFields['property_id']] = $userFields; } } // } } return $arrayProducts; }
public function __construct() { $aUri = URL::getSections(); $settings = MG::get('settings'); // Если нажата кнопка купить. $_REQUEST['category_id'] = URL::getQueryParametr('category_id'); if (!empty($_REQUEST['inCartProductId'])) { $cart = new Models_Cart(); $property = $cart->createProperty($_POST); $cart->addToCart($_REQUEST['inCartProductId'], $_REQUEST['amount_input'], $property); SmalCart::setCartData(); MG::redirect('/cart'); } $countСatalogProduct = $settings['countСatalogProduct']; // Показать первую страницу выбранного раздела. $page = 1; // Запрашиваемая страница. if (isset($_REQUEST['p'])) { $page = $_REQUEST['p']; } $sortType = 'desc'; $countGoods = $settings['countСatalogProduct']; $isStock = 0; // Обработка GET параметров if (isset($_GET['count'])) { switch ($_GET['count']) { case 8: $countGoods = 8; break; case 12: $countGoods = 12; break; case 16: $countGoods = 16; break; default: $countGoods = 8; break; } } if (isset($_GET['sort'])) { switch ($_GET['sort']) { case 'priceDesc': $sortType = 'desc'; break; case 'priceAsc': $sortType = 'asc'; break; case 'comments': $sortType = 'comments'; break; case 'popular': $sortType = 'popular'; break; default: $sortType = 'desc'; break; } } if (isset($_GET['stock'])) { if ($_GET['stock'] == 1) { $isStock = 1; } else { $isStock = 0; } } $model = new Models_Catalog(); $isMainCat = TRUE; $subCat = MG::get('category')->getCategoryList($_REQUEST['category_id']); if (empty($subCat)) { $isMainCat = FALSE; } // Если происходит поиск по ключевым словам. $keyword = URL::getQueryParametr('search'); if (!empty($keyword)) { $items = $model->getListProductByKeyWord($keyword, false, false, false, $sortType, $isStock, $countGoods); $searchData = array('keyword' => $keyword, 'count' => $items['numRows']); } else { if ($isMainCat) { $model->categoryId = MG::get('category')->getCategoryList($_REQUEST['category_id']); $model->categoryId[] = $_REQUEST['category_id']; $subCatList = $model->getChildCat(); if (!empty($subCatList)) { $productList = $model->getMainCatProduct($subCatList); $catList = $model->getMainCatInfo($subCatList); $i = 0; foreach ($catList as $cat) { foreach ($productList as $prd) { if ($prd['cat_id'] == $cat['id']) { $imagesUrl = explode("|", $prd['image_url']); if (!empty($imagesUrl[0])) { $prd['image_url'] = $imagesUrl[0]; } $catList[$i]['items'][] = $prd; } } $i++; } } } else { // Получаем список вложенных категорий, для вывода всех продуктов, на страницах текущей категории. $model->categoryId = MG::get('category')->getCategoryList($_REQUEST['category_id']); // В конец списка, добавляем корневую текущую категорию. $model->categoryId[] = $_REQUEST['category_id']; $items = $model->getList($countGoods, false, true, $sortType, $isStock); } } $settings = MG::get('settings'); if (!$isMainCat) { foreach ($items['catalogItems'] as $item) { $productIds[] = $item['id']; } $product = new Models_Product(); $blocksVariants = $product->getBlocksVariantsToCatalog($productIds); foreach ($items['catalogItems'] as $k => $item) { $items['catalogItems'][$k]["recommend"] = 0; $items['catalogItems'][$k]["new"] = 0; $imagesUrl = explode("|", $item['image_url']); $items['catalogItems'][$k]["image_url"] = ""; if (!empty($imagesUrl[0])) { $items['catalogItems'][$k]["image_url"] = $imagesUrl[0]; } $items['catalogItems'][$k]['title'] = MG::modalEditor('catalog', $item['title'], 'edit', $item["id"]); // Формируем варианты товара. if ($item['variant_exist']) { // Легкая форма без характеристик. $liteFormData = $product->createPropertyForm($param = array('id' => $item['id'], 'maxCount' => $item['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => array(), 'noneAmount' => true, 'titleBtn' => "В корзину", 'blockVariants' => $blocksVariants[$item['id']])); $items['catalogItems'][$k]['liteFormData'] = $liteFormData['html']; } } } $categoryDesc = MG::get('category')->getDesctiption($_REQUEST['category_id']); if ($_REQUEST['category_id']) { $categoryDesc = MG::inlineEditor(PREFIX . 'category', "html_content", $_REQUEST['category_id'], $categoryDesc); } if ($isMainCat) { $data = array('titeCategory' => $model->currentCategory['title'], 'cat_desc' => $categoryDesc, 'meta_title' => !empty($model->currentCategory['meta_title']) ? $model->currentCategory['meta_title'] : $model->currentCategory['title'], 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "товары,продукты,изделия", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "В каталоге нашего магазина есть все.", 'is_main_cat' => $isMainCat, 'category_info' => $catList, 'currency' => MG::getSetting('currency'), 'id_category' => $model->getCurrentId(), 'searchData' => empty($searchData) ? '' : $searchData); } else { $data = array('items' => $items['catalogItems'], 'titeCategory' => $model->currentCategory['title'], 'cat_desc' => $categoryDesc, 'pager' => $items['pager'], 'searchData' => empty($searchData) ? '' : $searchData, 'meta_title' => !empty($model->currentCategory['meta_title']) ? $model->currentCategory['meta_title'] : $model->currentCategory['title'], 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "товары,продукты,изделия", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "В каталоге нашего магазина есть все.", 'currency' => $settings['currency'], 'actionButton' => MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView', 'is_main_cat' => $isMainCat, 'id_category' => $model->getCurrentId()); } if ($keyword) { $data['meta_title'] = 'Поиск по фразе: ' . $keyword; } $this->data = $data; if ($aUri[1] == 'catalog' && empty($aUri[2]) && empty($_GET['search'])) { MG::redirect('/'); } }