Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

nahodny vyber produktu
 
zLOST
Member
 
Total Posts:  31
Joined:  2008-04-10
 

Zdravim,
nevite nekdo jak dostat z magenta napr. tri nahodny produkty?

$productsMage::getResourceModel('catalogsearch/advanced_collection')
        ->
addAttributeToSelect('name')
        ->
addAttributeToSelect('price')
        ->
addAttributeToSelect('image');

 if(
sizeof($products)>0){
  
foreach($products as $product){
   
echo "<div class='productItem'>\n";
   echo 
" <a href='".$product->getProductUrl()."'><img src='".$this->helper('catalog/image')->init($product'image')->resize(139)."' alt='".$this->htmlEscape($product->getName())."'/></a><br/><br/>\n";
   echo 
" <a href='".$product->getProductUrl()."' title='".$this->htmlEscape($product->getName())."'>".$product->getName()."</a>\n";
   echo 
"</div>\n";
  
}
 }

zatim jsem se dohrabal k tomuhle, pricemz teda jeste zvladnu pomoci addAttributeToFilter() probrat ty vysledky. Ale uz jsem nikde nenasel jak dostat rovnou urcitej pocet vysledku a jeste je mit “order by rand()”.

diky

zLOST

 
Magento Community Magento Community
Magento Community
Magento Community
 
Martin
Guru
 
Avatar
Total Posts:  445
Joined:  2007-08-31
Brno | London | Los Angeles
 

Já si k tomu napsal tenhle kus kódu, kterej jsem pak uložil jako nahodne.phtml do adresáře __MAGENTO_ROOT__/app/design/frontend/__TEMA__/default/template/catalog/

<?php 
$kategorie 
Mage::getModel('catalog/category')->load($this->getCategoryId());
$_productCollection $this->getLoadedProductCollection();
$zobrazovany_pocet $this->getNumProducts();
if (
sizeof($_productCollection) < $zobrazovany_pocet{
    $zobrazovany_pocet 
sizeof($_productCollection);
}
$produkty 
= array();
foreach (
$_productCollection as $_product{
    $produkty[] 
$_product;
}
$nahodne 
= array();
if (
sizeof($_productCollection) > 1{
    $nahodne 
array_rand($produkty$zobrazovany_pocet);
else {
    $nahodne 
= array('0');
}
?>
<?php 
if(!$_productCollection->getSize()):?>
<div class="note-msg">
    
<?=$this->__('There are no products matching the selection.')?>
</div>
<?php else:?>

<div class="category-head">
    <
h2><?=$this->__('Doporučujeme')?></h2>
</
div>
<?php for ($i=0$i $zobrazovany_pocet$i++): ?>

<div class="upoutavka">
    <
class="obr-zbozi" href="<?=$produkty[$nahodne[$i]]->getProductUrl()?>"><img src="<?=$this->helper('catalog/image')->init($produkty[$nahodne[$i]], 'small_image')->resize(75, 75);?>" width="75px" height="75px" alt="<?=$this->htmlEscape($produkty[$nahodne[$i]]->getName())?>" /></a>
    <
h3><a href="<?=$produkty[$nahodne[$i]]->getProductUrl()?>"><?=$this->htmlEscape($produkty[$nahodne[$i]]->getName())?></a></h3>
    <
p><?=nl2br($produkty[$nahodne[$i]]->getShortDescription()) ?></p>
    <
table>
        <
tbody>
            <
tr>
                <
td class="vlevo"><class="podrobnosti" href="<?=$produkty[$nahodne[$i]]->getProductUrl()?>"><?=$this->__('Podrobnosti')?></a></td>
                <
td class="vpravo"><class="pridat" href="<?=$this->getAddToCartUrl($produkty[$nahodne[$i]])?>"><?=$this->__('PÅ™idat do košíku')?></a></td>
            </
tr>
        </
tbody>
    </
table>
</
div>

<?php endfor;?>
<?php 
endif;?> 

<class="dalsi"><a href="<?=$kategorie->getUrl()?>" title="<?=$this->__('Další produkty ...')?>"><?=$this->__('Další produkty ...')?></a></p>

Tam kde chci zobrazit náhodný produkty zadám:

{{block type="catalog/product_list" category_id="2" num_products="2" template="catalog/nahodne.phtml"}}

s tím, že category_id určuje kategorii, ze které chceš ty produkty načítat a num_products určuje počet, kolik jich chceš zobrazit ...

 
Magento Community Magento Community
Magento Community
Magento Community
 
zLOST
Member
 
Total Posts:  31
Joined:  2008-04-10
 

Dik, uz jsem na ten thread v anglickym foru narazil.

ale stejne mi prijde divny, ze se to musi resit tim, ze se nejdriv vezmou vsechny produkty a z nich se na frontendu vybere par nahodnejch. I kdyz teda magento je brutalne na steroidech a kasle na nejaky systemovy prostredky. Ale vem si, ze by nekdo chtel takovejch bloku na strance vic a mel v db >10k polozek smile

v ten moment docela lituju ten webserver..

o objektech v phpku zatim vim sice velky kulovy, ale myslim, ze je neco spatne, kdyz na homepage udelam var_dump($this) a apache me posle k sipku s tim, ze mu nestaci ani 128M…

ja to nechci mit limitovany kategorii, takze jsem to nechal jako core/template (s tim to +- funguje) a to phtml vypada takhle:

$productsMage::getResourceModel('catalogsearch/advanced_collection')->addAttributeToSelect('name')->addAttributeToSelect('price')->addAttributeToSelect('image');

 
$num_to_show=$this->getNumProducts();

 
$pr=array();

 foreach(
$products as $i=>$p$pr[$i]=$p;

 
shuffle($pr);

 
$products=array_slice($pr,0,$num_to_show);

 if(
sizeof($products)>0){
  
foreach($products as $i=>$product){
   
echo "<div class='productItem'>\n";
   echo 
" <a href='".$product->getProductUrl()."'><img src='".$this->helper('catalog/image')->init($product'image')->resize(139)."' alt='".$this->htmlEscape($product->getName())."'/></a><br/><br/>\n";
   echo 
" <a href='".$product->getProductUrl()."' title='".$this->htmlEscape($product->getName())."'>".$product->getName()."</a>\n";
   echo 
"</div>\n";
  
}
 }

drobnej problemek je ovsem ten, ze mi tam pak nechodi getNumProducts() a nevim jak te template z xml rict kolik produktu ma jako ukazat..

zLOST

 
Magento Community Magento Community
Magento Community
Magento Community
 
zLOST
Member
 
Total Posts:  31
Joined:  2008-04-10
 

tak se mi to povedlo pomoci tohodle kousku:

$alias=$this->getBlockAlias();

 switch (
$alias){
  
case "dva_doporucene":
    
$num_to_show=2;
    break;
  default:
    
$num_to_show=3;
    break;
 
}

a v page.xml mam tydle bloky:

<block type="catalog/navigation" as="dva_doporucene" template="catalog/doporucene.phtml"/>
<
block type="catalog/navigation" as="tri_doporucene" template="catalog/doporucene.phtml"/>

zLOST

 
Magento Community Magento Community
Magento Community
Magento Community
 
Martin
Guru
 
Avatar
Total Posts:  445
Joined:  2007-08-31
Brno | London | Los Angeles
 

Já se taky teprve objektový programování učím, to co jsem prozatím dal dohromady je taková z nouze ctnost - s několika produktama to maká celkem svižně wink Ale mrknu na ten Tvůj postup, vypadá to sympaticky.

Jinak jsem teď narazil na takovou malou zákeřnost - napsal jsem si modul pro reklamační formulář, nainstaloval a odladil na lokálu a když jsem to hodil na net, tak se to nikde nechtělo objevit. Vztekal jsem se jako čert, zkoušel kde co, až jsem přišel na to, že pes je zakopanej v cachování - na lokále kvůli ladění vypnutá, na netu samozřejmě zapnutá. Takže při vlastnoruční instalaci modulu je třeba refreshnout cache, jinak se ten modul nenainstaluje a vy si budete lámat hlavu, co sakra s tím wink

 
Magento Community Magento Community
Magento Community
Magento Community
 
zLOST
Member
 
Total Posts:  31
Joined:  2008-04-10
 

Ono je to cely o tom, ze treba u me se jedna spis o hackovani default templaty, nez vymysleni neceho novyho. psani vlastnich funco do existujicich bloku se chci vyhnout, protoze bych o to pak treba nerad prisel pri pristim updatu magenta (coz mi pripomina, ze bych asi mel prejmenovat tu pouzitou templatu na neco jinyho nez default. Protoze prijit o to, tak si muzu rovnou hupnout pod vlak smile

existuje uz nekde nejaka dokumentace k definovanejm blokum a funkcim, ktery se v nich daj pouzit? uz me napadlo si napsat nejakej bashovej skriptik, kterej by to phpko prolezl a neco strucnyho vyplivnul, ale to bude mit k dokumentaci stejne daleko jako ja k Paris Hilton…

zLOST

btw: prijde mi divny, ze takovej zaklad, jako “limit $int” a “order by $whatever” se nedaj pouzit vsude..

 
Magento Community Magento Community
Magento Community
Magento Community
 
Martin
Guru
 
Avatar
Total Posts:  445
Joined:  2007-08-31
Brno | London | Los Angeles
 

No já si dělám kompletně novou šablonu a k tomu i nový bloky a nový funkce ...

Není žádnej důvod, abys o svůj kód při updatu přišel, pokud systémovej kód hážeš do:

__MAGENTO_ROOT__/app/code/local/

a soubory Å¡ablony pak do

__MAGENTO_ROOT__/app/design/frontend/__TVOJE_SABLONA__/
__MAGENTO_ROOT__/skin/frontend/__TVOJE_SABLONA__/

Zatím jsem nikde žádnou dokumentaci neobjevil, ale není zase tak těžký při procházení zdrojáku přijít na to, co která funkce a jak dělá ... jen to vezme trošku času wink

S těma základama to bude nejspíš tak, že se použít dají, jen trochu jinak - viz např. “order by $whatever” v souboru __MAGENTO_ROOT__/app/code/core/Mage/Catalog/Block/Product/List/Random.php:

$collection->getSelect()->order('rand()');

Ještě jsem s tím nezkoušel nijak pracovat, ale podle vypadá to tak, že je to ono ...

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top