A taki sobie pluginek na bazie sliderProducts by OpenSolution. Aby działał poprawnie, konieczne jest wcześniejsze zainstalowanie dodatku "productsVotes", bo plugin ma w założeniu puszczać w slider zadaną ilość produktów, które mają najwyższe "gwiazdkowe" noty.
Aby zainstalować, bierzemy plugin sliderProducts ze strony OpenSolution i instalujemy go prawie w całości według przykazań. 2 wyjątki: funkcję listProductsSlider() z oryginalnego pluginu zamieniamy na tę:
/** * List voted products for slider * @return string */ public function listVotedProductsSlider(){ global $lang,$config; $oFile=Files::getInstance(); $content=null; if(isset($this->aProducts)){ foreach($this->aProducts as $iKey=>$aValue){ // tworzymy array z ID produktu i średnią głosów $aVotedProducts[$iKey]=isset($aValue['iAvarageVotes'])?$aValue['iAvarageVotes']/$aValue['iVotesCount']:0; } arsort($aVotedProducts); // sortujemy od najwyższej średniej głosów z zachowaniem ID produktu $aVotedProducts=array_slice($aVotedProducts,0,3,true); // bierzemy 3 górne produkty (lub ile tam chcemy - wtedy odpowiednio zmienić "3" na inną liczbę) $i=0; $sBasketPage=(!empty($config['basket_page'])&&isset($oPage->aPages[$config['basket_page']]))?$oPage->aPages[$config['basket_page']]['sLinkName']:null; foreach($aVotedProducts as $iProduct=>$fValue){ // dla tych 3 wybranych produktów tworzymy boxy do slidera $aData=$this->aProducts[$iProduct]; $content.='<div class="l'.(($i%2)?0:1).'">'.$oFile->getDefaultImage($aData['iProduct'],2,true,$aData['sLinkName']).'<h2><a href="'.$aData['sLinkName'].'">'.$aData['sName'].'</a></h2>'; if(!empty($aData['sDescriptionShort'])){ $aData['sDescriptionShort']=changeTxt($aData['sDescriptionShort'],'nlNds'); $content.='<div class="description">'.$aData['sDescriptionShort'].'</div>'; } if(is_numeric($aData['mPrice'])){ $content.='<div class="price"><em>'.$lang['Price'].':</em><strong>'.displayPrice($aData['mPrice']).'</strong><span>'.$config['currency_symbol'].'</span></div>'; if(isset($sBasketPage)){ $content.='<div class="basket"><a href="'.$sBasketPage.'&iProductAdd='.$aData['iProduct'].'&iQuantity=1" rel="nofollow" title="'.$lang['Basket_add'].': '.$aData['sName'].'">'.$lang['Basket_add'].'</a></div>'; } } else{ $content.='<div class="noPrice"><strong>'.$aData['mPrice'].'</strong></div>'; } $content.='</div>'; $i++; } } if(isset($content)){ return '<div id="productsSlider"><a title="" href="#" class="prev"></a><div class="slides">'.$content.'</div><a title="" href="#" class="next"></a></div>'; } } // end function listVotedProductsSlider
oraz zamieniamy: echo $oProduct->listProductsSlider( ); // products in slider na: echo $oProduct->listVotedProductsSlider( ); // products in slider
Jak się komuś chce zrobić ładną instrukcję na wzór OS, to proszę bardzo.