2013-10-09 55 views
0

我有以下代碼:獲取隨機SKU貨號

$sku = $id; 
$_product=Mage::getModel('catalog/product')->loadByAttribute('sku',$sku); //Get Product by ID (ASIN) 
$qtyStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty(); //if in stock 
$_prodcats = $_product->getCategoryIds(); 

它通過specfing的SKU編號,我希望能夠得到隨機SKU的產品編號,並用它使

$sku = random product number from database 

回答

3

我用下面的腳本從集合中生成一個隨機sku。您也可以使用它來滿足您的要求。

//Geting a random sku from collection 

$collection = Mage::getModel('catalog/product')->getCollection(); 
$collection->getSelect()->order(new Zend_Db_Expr('RAND()')); 
$randomSku = $collection->setPage(1, 1)->getFirstItem()->getSKU(); 

在你的情況你的代碼應該看起來像.......

$collection = Mage::getModel('catalog/product')->getCollection(); 
$collection->getSelect()->order(new Zend_Db_Expr('RAND()')); 
$_product = $collection->setPage(1, 1)->getFirstItem()->load(); 

$qtyStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty(); //if in stock 
$_prodcats = $_product->getCategoryIds(); 
+0

對於我非常需要的隨機Sku編號,你是最好的謝謝! – Jacknson

0

類似的東西應該工作正常;)

$collection = Mage::getResourceModel(‘catalog/product_collection’); 
Mage::getModel(‘catalog/layer’)->prepareProductCollection($collection); 
$collection->getSelect()->order(‘rand()’); 
$collection->addStoreFilter(); 
$collection->setPage(1, 1); 
$_product = $collection->getFirstItem(); 
+0

謝謝庫巴這正是我需要的是有可能得到了所選擇的是隨機產品的SKU ?以供以後使用:) – Jacknson

+0

或甚至更好的代碼從數據庫中獲得一個隨機的SKU編號將幫助我更多! – Jacknson

+0

$ sku = $ collection-> getFirstItem() - > getSku(); 爲了獲得更好的性能,您可以獲得所有產品ID的表單集合並從數組中獲得隨機索引。但是當你在數據庫中有很多產品時它是有意義的:) –

0

下面的代碼,我在項目中使用及其對我工作的罰款:

<?php 

    // get Random prdocut list 
    $collection = Mage::getResourceModel(‘catalog/product_collection’); 
    Mage::getModel(‘catalog/layer’)->prepareProductCollection($collection); 
    $collection->getSelect()->order(‘rand()’); 
    $collection->addStoreFilter(); 
    $numProducts = $this->getNumProducts() ? $this->getNumProducts() : 2; 
    $collection->setPage(1, $numProducts); 

    foreach($collection as $product){ 

    echo $product->getName(); 

    } 
?>