Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 /**
  * @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;
 }