/** * Makes the list view for the current categorys * * @return string the content for the list view */ public function makeListView() { if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/Classes/Controller/ListController.php']['preRenderListView'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/Classes/Controller/ListController.php']['preRenderListView'] as $classRef) { $hookObjectsArr[] = GeneralUtility::getUserObj($classRef); } } /** * Category LIST */ $categoryOutput = ''; $this->template = $this->templateCode; if ($this->category->hasSubcategories()) { /** * Category * * @var $oneCategory Tx_Commerce_Domain_Model_Category */ foreach ($this->category->getChildCategories() as $oneCategory) { $oneCategory->loadData(); $this->currentCategory =& $oneCategory; if ($this->conf['hideEmptyCategories'] == 1) { // First check TS setting (ceap) // afterwards do the recursive call (expensive) if (!$oneCategory->hasProductsInSubCategories() || $this->conf['useStockHandling'] && !$oneCategory->hasProductsWithStock()) { // This category is empty, so // skip this iteration and do next continue; } } $linkArray = array(); $linkArray['catUid'] = $oneCategory->getUid(); $linkArray['showUid'] = ''; if ($this->useRootlineInformationToUrl == 1) { $linkArray['path'] = $this->getPathCat($oneCategory); $linkArray['mDepth'] = $this->mDepth; } else { $linkArray['mDepth'] = ''; $linkArray['path'] = ''; } if ($this->basketHashValue) { $linkArray['basketHashValue'] = $this->basketHashValue; } /** * Build TS for Linking the Catergory Images */ $localTs = $this->conf['categoryListView.']['categories.']; if ($this->conf['overridePid']) { $typoLinkConf['parameter'] = $this->conf['overridePid']; } else { $typoLinkConf['parameter'] = $this->pid; } $typoLinkConf['useCacheHash'] = 1; $typoLinkConf['additionalParams'] = $this->argSeparator . $this->prefixId . '[catUid]=' . $oneCategory->getUid(); $productArray = $oneCategory->getProducts(); if (1 == $this->conf['displayProductIfOneProduct'] && 1 == count($productArray)) { $typoLinkConf['additionalParams'] .= $this->argSeparator . $this->prefixId . '[showUid]=' . $productArray[0]; } else { $typoLinkConf['additionalParams'] .= $this->argSeparator . $this->prefixId . '[showUid]='; } if ($this->useRootlineInformationToUrl == 1) { $typoLinkConf['additionalParams'] .= $this->argSeparator . $this->prefixId . '[path]=' . $this->getPathCat($oneCategory); $typoLinkConf['additionalParams'] .= $this->argSeparator . $this->prefixId . '[mDepth]=' . $this->mDepth; } if ($this->basketHashValue) { $typoLinkConf['additionalParams'] .= $this->argSeparator . $this->prefixId . '[basketHashValue]=' . $this->basketHashValue; } $localTs['fields.']['images.']['stdWrap.']['typolink.'] = $typoLinkConf; $localTs['fields.']['teaserimages.']['stdWrap.']['typolink.'] = $typoLinkConf; $localTs = $this->addTypoLinkToTypoScript($localTs, $typoLinkConf); $tmpCategory = $this->renderCategory($oneCategory, '###CATEGORY_LIST_ITEM###', $localTs, 'ITEM'); /** * Build the link * * @depricated * Please use TYPOLINK instead */ $linkContent = $this->cObj->getSubpart($tmpCategory, '###CATEGORY_ITEM_DETAILLINK###'); if ($linkContent) { $link = $this->pi_linkTP_keepPIvars($linkContent, $linkArray, TRUE, 0, $this->conf['overridePid']); } else { $link = ''; } $tmpCategory = $this->cObj->substituteSubpart($tmpCategory, '###CATEGORY_ITEM_DETAILLINK###', $link); if ($this->conf['groupProductsByCategory'] && !$this->conf['hideProductsInList'] && !$this->conf['hideProductsInSubcategories']) { $categoryProducts = $oneCategory->getProducts(); if ($this->conf['useStockHandling'] == 1) { $categoryProducts = Tx_Commerce_Utility_GeneralUtility::removeNoStockProducts($categoryProducts, $this->conf['products.']['showWithNoStock']); } $categoryProducts = array_slice($categoryProducts, 0, $this->conf['numberProductsInSubCategory']); $productList = $this->renderProductsForList($categoryProducts, $this->conf['templateMarker.']['categoryProductList.'], $this->conf['templateMarker.']['categoryProductListIterations']); /** * Insert the Productlist */ $tmpCategory = $this->cObj->substituteMarker($tmpCategory, '###CATEGORY_ITEM_PRODUCTLIST###', $productList); } else { $tmpCategory = $this->cObj->substituteMarker($tmpCategory, '###CATEGORY_ITEM_PRODUCTLIST###', ''); } $categoryOutput .= $tmpCategory; } } $categoryListSubpart = $this->cObj->getSubpart($this->template, '###CATEGORY_LIST###'); $markerArray['CATEGORY_SUB_LIST'] = $this->cObj->substituteSubpart($categoryListSubpart, '###CATEGORY_LIST_ITEM###', $categoryOutput); $startPoint = $this->piVars['pointer'] ? $this->internal['results_at_a_time'] * $this->piVars['pointer'] : 0; // Display TopProducts??? // for this, make a few basicSettings for pageBrowser $internalStartPoint = $startPoint; $internalResults = $this->internal['results_at_a_time']; // set Empty default $markerArray['SUBPART_CATEGORY_ITEMS_LISTVIEW_TOP'] = ''; if (!$this->conf['groupProductsByCategory'] && $this->conf['displayTopProducts'] && $this->conf['numberOfTopproducts']) { $this->top_products = array_slice($this->category_products, $startPoint, $this->conf['numberOfTopproducts']); $internalStartPoint = $startPoint + $this->conf['numberOfTopproducts']; $internalResults = $this->internal['results_at_a_time'] - $this->conf['numberOfTopproducts']; $markerArray['SUBPART_CATEGORY_ITEMS_LISTVIEW_TOP'] = $this->renderProductsForList($this->top_products, $this->conf['templateMarker.']['categoryProductListTop.'], $this->conf['templateMarker.']['categoryProductListTopIterations'], $this->conf['topProductTSMarker']); } // ########### product list ###################### if (is_array($this->category_products)) { $this->category_products = array_slice($this->category_products, $internalStartPoint, $internalResults); } if (!$this->conf['hideProductsInList']) { if (isset($this->piVars['showUid'])) { $this->piVars['showUid'] = ''; } // Write the current page to The session to have a back to last product link $GLOBALS['TSFE']->fe_user->setKey('ses', 'tx_commerce_lastproducturl', $this->pi_linkTP_keepPIvars_url(array(), 1)); $markerArray['SUBPART_CATEGORY_ITEMS_LISTVIEW'] = $this->renderProductsForList($this->category_products, $this->conf['templateMarker.']['categoryProductList.'], $this->conf['templateMarker.']['categoryProductListIterations']); } $templateMarker = '###' . strtoupper($this->conf['templateMarker.']['categoryView']) . '###'; $markerArrayCat = $this->generateMarkerArray($this->category->returnAssocArray(), $this->conf['singleView.']['categories.'], 'category_', 'tx_commerce_categories'); $markerArray = array_merge($markerArrayCat, $markerArray); if ($this->conf['showPageBrowser'] == 1 && is_array($this->conf['pageBrowser.']['wraps.'])) { $this->internal['pagefloat'] = (int) $this->piVars['pointer']; $this->internal['dontLinkActivePage'] = $this->conf['pageBrowser.']['dontLinkActivePage']; $this->internal['showFirstLast'] = $this->conf['pageBrowser.']['showFirstLast']; $this->internal['showRange'] = $this->conf['pageBrowser.']['showRange']; $hscText = !($this->conf['pageBrowser.']['hscText'] != 1); $markerArray['CATEGORY_BROWSEBOX'] = $this->pi_list_browseresults($this->conf['pageBrowser.']['showItemCount'], $this->conf['pageBrowser.']['tableParams.'], $this->conf['pageBrowser.']['wraps.'], 'pointer', $hscText); } else { $markerArray['CATEGORY_BROWSEBOX'] = ''; } if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/lib/class.tx_commerce_pibase.php']['listview'])) { GeneralUtility::deprecationLog(' hook $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXTCONF\'][\'commerce/lib/class.tx_commerce_pibase.php\'][\'listview\'] is deprecated since commerce 1.0.0, it will be removed in commerce 1.4.0, please use instead $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXTCONF\'][\'commerce/Classes/Controller/BaseController.php\'][\'listView\'] '); foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/lib/class.tx_commerce_pibase.php']['listview'] as $classRef) { $hookObj =& GeneralUtility::getUserObj($classRef); if (method_exists($hookObj, 'additionalMarker')) { $markerArray = $hookObj->additionalMarker($markerArray, $this); } } } if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/Classes/Controller/BaseController.php']['listView'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/Classes/Controller/BaseController.php']['listView'] as $classRef) { $hookObj = GeneralUtility::getUserObj($classRef); if (method_exists($hookObj, 'additionalMarker')) { $markerArray = $hookObj->additionalMarker($markerArray, $this); } } } $markerArray = $this->addFormMarker($markerArray); $template = $this->cObj->getSubpart($this->templateCode, $templateMarker); $content = $this->cObj->substituteMarkerArray($template, $markerArray, '###|###', 1); $content = $this->cObj->substituteMarkerArray($content, $this->languageMarker); return $content; }