public function gridAction() { if ($this->_getParam("pimcore_editmode") == "true") { $this->editmode = true; $this->view->editmode = true; } /** * @var $filterDefinition \Pimcore\Model\Object\FilterDefinition */ $filterDefinition = $this->_getParam("filterdefinition"); if (!$filterDefinition instanceof \Pimcore\Model\Object\FilterDefinition) { $filterDefinition = \Pimcore\Model\Object\FilterDefinition::getById(intval($this->_getParam("filterdef"))); if (!$filterDefinition) { throw new Exception("Filter Definition not found!"); } } $this->view->filterDefinitionObject = $filterDefinition; $indexService = OnlineShop_Framework_Factory::getInstance()->getIndexService(); $productList = $indexService->getProductListForCurrentTenant(); $productList->setVariantMode(OnlineShop_Framework_IProductList::VARIANT_MODE_INCLUDE_PARENT_OBJECT); $filterService = OnlineShop_Framework_Factory::getInstance()->getFilterService($this->view); $orderByOptions = array(); $this->view->orderByOptions = $orderByOptions; OnlineShop_Framework_FilterService_Helper::setupProductList($filterDefinition, $productList, $this->_getAllParams(), $this->view, $filterService, $this->_getParam("fullpage")); $this->view->productList = $productList; $this->view->filterService = $filterService; //Getting seo text - if not specified in the template, then get them from the category if existent $grid_seo_headline = $this->view->input("grid_seo_headline")->getValue(); if (empty($grid_seo_headline)) { $category = OnlineShop_Framework_FilterService_Helper::getFirstFilteredCategory($this->view->filterDefinitionObject->getConditions()); if ($category) { $grid_seo_headline = $category->getSeoname(); } } $grid_seo_text = $this->view->wysiwyg("grid_seo_text")->getValue(); if (empty($grid_seo_text)) { $category = OnlineShop_Framework_FilterService_Helper::getFirstFilteredCategory($this->view->filterDefinitionObject->getConditions()); if ($category) { $grid_seo_text = $category->getSeotext(); } } $this->view->grid_seo_headline = $grid_seo_headline; $this->view->grid_seo_text = $grid_seo_text; }
/** * @param \Pimcore\Model\Object\FilterDefinition $filterDefinition * @param OnlineShop_Framework_IProductList $productList * @param $params * @param Zend_View $view * @param OnlineShop_Framework_FilterService $filterService * @param $loadFullPage * @param bool $excludeLimitOfFirstpage */ public static function setupProductList(\Pimcore\Model\Object\FilterDefinition $filterDefinition, OnlineShop_Framework_IProductList $productList, $params, Zend_View $view, OnlineShop_Framework_FilterService $filterService, $loadFullPage, $excludeLimitOfFirstpage = false) { $orderByOptions = array(); $orderKeysAsc = explode(",", $filterDefinition->getOrderByAsc()); if (!empty($orderKeysAsc)) { foreach ($orderKeysAsc as $orderByEntry) { if (!empty($orderByEntry)) { $orderByOptions[$orderByEntry]["asc"] = true; } } } $orderKeysDesc = explode(",", $filterDefinition->getOrderByDesc()); if (!empty($orderKeysDesc)) { foreach ($orderKeysDesc as $orderByEntry) { if (!empty($orderByEntry)) { $orderByOptions[$orderByEntry]["desc"] = true; } } } $offset = 0; $pageLimit = intval($params["perPage"]); if (!$pageLimit) { $pageLimit = $filterDefinition->getPageLimit(); } if (!$pageLimit) { $pageLimit = 50; } $limitOnFirstLoad = $filterDefinition->getLimitOnFirstLoad(); if (!$limitOnFirstLoad) { $limitOnFirstLoad = 6; } if ($params["page"]) { $view->currentPage = intval($params["page"]); $offset = $pageLimit * ($params["page"] - 1); } if ($filterDefinition->getAjaxReload()) { if ($loadFullPage && !$excludeLimitOfFirstpage) { $productList->setLimit($pageLimit); } else { if ($loadFullPage && $excludeLimitOfFirstpage) { $offset += $limitOnFirstLoad; $productList->setLimit($pageLimit - $limitOnFirstLoad); } else { $productList->setLimit($limitOnFirstLoad); } } } else { $productList->setLimit($pageLimit); } $productList->setOffset($offset); $view->pageLimit = $pageLimit; $orderBy = $params["orderBy"]; $orderBy = explode("#", $orderBy); $orderByField = $orderBy[0]; $orderByDirection = $orderBy[1]; if (array_key_exists($orderByField, $orderByOptions)) { $view->currentOrderBy = htmlentities($params["orderBy"]); $productList->setOrderKey($orderByField); $productList->setOrder($orderByDirection); } else { $orderByCollection = $filterDefinition->getDefaultOrderBy(); $orderByList = array(); if ($orderByCollection) { foreach ($orderByCollection as $orderBy) { $orderByList[] = array($orderBy->getField(), $orderBy->getDirection()); } } $productList->setOrderKey($orderByList); $productList->setOrder("ASC"); } if ($filterService) { $view->currentFilter = $filterService->initFilterService($filterDefinition, $productList, $params); } $view->orderByOptions = $orderByOptions; }