2011-08-22 4 views
2

안녕하세요, 최근 카탈로그/제품/view.phtml에서 최근에 본 제품 수를 찾아야하는 경우가 있습니다. 최근에 본 'product_viewed.phtml'파일에서 최근에 본 내용을 보려면Magento : phtml에서 모델/블록 액세스

$_products = $this->getRecentlyViewedProducts() 

을 호출하십시오. catalog/product/view.phtml 파일에서이 메소드에 액세스하려면 어떻게해야합니까?

이 방법이 어디 있는지 알 수 없습니다. 나는 그것을 찾으려고했지만 그것을 존재하지 않는 것 같습니다. Netbeans에서 클릭하여 작성한 후 클릭하여 선언에 도달하면

class Mage_Reports_Block_Product_Viewed extends Mage_Reports_Block_Product_Abstract 

실제로 클래스 자체에 적용됩니다. 이 클래스에는 _toHtml(), getCount() 및 getPageSize() 메서드 만 있습니다.

최근에 본 제품이 있는지 여부를 알아야합니다.

도움이 되었습니까?

빌리

답변

3

, 당신은 통지합니다 :

'getItemsCollection'메소드는 추상 클래스에 정의되어
$this->setRecentlyViewedProducts($this->getItemsCollection()); 

그건 ... 그리고 당신은 알 모델을 만드는 것이 추상 클래스를 기반으로 $ _indexName은 (서브 클래 싱 된) 블록에 정의됩니다. 그냥 컬렉션을 원하는 경우

, 당신은 아마 멀리 얻을 수 있습니다 : 당신이 컬렉션에 원하는대로 다음

$_products = Mage::getModel('reports/product_index_viewed')->getCollection(); 

그리고 추가 :

$_products 
    ->addAttributeToSelect('*') 
    ->setAddedAtOrder(); 
    // optionally add other methods similar to Mage_Reports_Block_Product_Abstract::getItemsCollection 

또 다른 방법보다 적합 할 수있는 것 원래 블록을 만들 수 있습니다 :

$productViewedBlock = $this->getLayout()->createBlock('reports/product_viewed'); 

당신이 원하는 :

$_collection = $productViewedBlock->getItemsCollection(); 
$_count = $productViewedBlock->getCount(); 
+0

대단히 감사합니다. 이것은 많은 도움이 될 것입니다. – iamjonesy

1

getRecentlyViewedProducts 함수 (app/code/core/Mage/Reports/Block/Product/Abstract.php_getRecentProductsCollection 함수를 사용하여 구축) app/code/core/Mage/Reports/Block/Product/Viewed.phpsetRecentlyViewedProducts에 설정 한 데이터를 취득 마법 게터이다.

이것은 재생하기를 원치 않는 복잡한 작업입니다. 그것의 더 나은, IMO는 자신의 블록을 만들기 위해 extends Mage_Catalog_Block_Product_Abstract 같은 기능에 대한 액세스를 제공하고 작업중인 페이지에 새 블록을 드롭합니다. 당신이 'Mage_Reports_Block_Product_Viewed'에 보면

관련 문제