2011-10-21 4 views
0

홈 페이지에 임의의 제품을 표시하는 사용자 지정 모듈 (확실한 지침에서 복사 붙여 넣기)을 만들려고합니다. 나는 Hello World에서 시작했다. 그것은 좋았다. 하지만 홈 페이지에 제품 표시에 대한 추가 코드를 추가하면 다음과 같은 오류가 나타납니다.치명적인 오류 : getName() 멤버 함수 호출 magento

Fatal error: Call to a member function getName() on a non-object in /opt/lampp/htdocs/magento/app/code/local/Magentotutorial/Definitivehello/Block/Randomproducts.php on line 12

여기에 무슨 잘못된 사람이 말해 줄 수 /app/code/local/Magentotutorial/Definitivehello/Block/Randomproducts.php

<?php 
class Magentotutorial_Definitivehello_Block_Randomproducts 
    extends Mage_Core_Block_Template 
{ 
    protected function _toHtml() 
    { 
     $randProdModel = Mage::getModel('Magentotutorial_Definitivehello/Randomproducts'); 
     $randProducts = $randProdModel->getRandomProducts(); 
     $html = "<ul>"; 
     foreach ($randProducts as $product) { 
      $name = $product->getName(); 
      $price = number_format($product->getPrice(), 2); 
      $imageLink = $this->helper('catalog/image')->init($product, 'thumbnail')->resize(100,100); 
      $productLink = $this->helper('catalog/product')->getProductUrl($product); 
      $html .= "<p><a href='$productLink'><img src='$imageLink' alt='$name'/></a><br/> $name <br/> $price </p>"; 
     } 
     $html .= "<ul>"; 
     return $html; 
    } 
} 

내 코드를 간다. 감사합니다

여기 GetRandomProducts 내 코드()

<?php 
class Magentotutorial_Definitivehello_Model_Randomproducts 
    extends Mage_Core_Model_Abstract 
{ 
    public function getRandomProducts($maxCount = 3) 
    { 
     $randProducts = array(); 
     $allProducts = array(); 
     $productCollection = Mage::getModel('catalog/product') 
      ->getCollection() 
      ->addAttributeToSelect('*') 
      ->getItems(); 

     foreach ($productCollection as $id => $data) { 
      //print_r($data); exit; 
      $allProducts[] = $data; 
     } 

     $productIds = array_keys($allProducts); 
     $totalProductIds = count($productIds); 
     for ($i=0; $i<$maxCount; $i++) { 
      $randIndex = rand(0,$totalProductIds); 
      $randProductId = $productIds[$randIndex]; 
      $randProducts[] = $allProducts[$randProductId]; 
     } 
     return $randProducts; 
    } 
} 
+2

크리스탈 공은 깨진 : 여기

는 getRandomProduct 방법의 더 간단 구현입니다. 코드 업로드. –

답변

1

Magentotutorial_Definitivehello/Randomproducts 모델의 getRandomProducts 같은 제품 컬렉션을 반환하지 않습니다 보이는 방법을 이동합니다.

UPD :

<?php 
public function getRandomProducts($maxCount = 3) 
{ 
    $productCollection = Mage::getModel('catalog/product') 
     ->getCollection() 
     ->addAttributeToSelect('*'); 

    $productCollection->getSelect()->order('RAND()')->limit($maxCount); 

    return $productCollection; 
} 
+0

네, 네 말이 맞아.하지만 때로는 제대로 작동하지 않을 때도 있고, 때로는 안다는 것도 알지도 몰라. 가끔 getRandomProducts()가 제품 콜렉션을 리턴하고 때로는 아닐 때가있다. – ScoRpion

+0

당신은 모델 Magentotutorial_Definitivehello/Randomproducts와 getRandomProducts 메쏘드 뒤에 코드를 보여 주겠습니까? –

+0

@ Deglin getRandomProducts()에 대한 코드를 추가했습니다. 제발 봐 주시겠습니까 .. – ScoRpion

관련 문제