2011-09-23 4 views
0

저는 초보자이지만 자제하고 가능한 한 빨리 배우려고합니다. 내가 겪고 있었 :magento, 기본 제품을 이해하는 데 도움이됩니다. 템플릿 코드

파일이 : 응용 프로그램이/디자인/프론트 엔드가 /베이스/기본/템플릿/카탈로그/제품/list.phtml가 포함

<?php $_productCollection=$this->getLoadedProductCollection() ?> <?php if(!$_productCollection->count()): ?> <div class="note-msg"> 
    <?php echo $this->__("There are no products matching the selection.") ?> </div> 
<?php else: ?> 

getLoadedProductCollection 방법은 다음에서 찾을 수 있다고 http://alanstorm.com/layouts_blocks_and_templates을 템플릿의 블록, Mage_Catalog_Block_Product_List ... 그리고 거기에서 :

파일 : 응용 프로그램/코드/코어/마법사/카탈로그/블록/제품/List.php

... 
public function getLoadedProductCollection() 
{ 
    return $this->_getProductCollection(); 
} 
... 

그 후, 앞서 언급 한 페이지는 다음과 같이 씁니다. 블록의 _getProductCollection은 모델을 인스턴스화하고 데이터를 읽고 결과를 템플릿에 반환합니다.

저는 여기를 잃었습니다.

if (is_null($this->_productCollection)) 

1) _productCollection가 보호 변수 $ _productCollection을 뜻 : _getProductCollection()이 라인을 가지고?

if (is_null($this->_productCollection)) { 
      $layer = $this->getLayer(); 

2) $ layer = $ this-> getLayer() plz에 대한 설명은 무엇입니까? 그 후

내가 얻을 :

if ($this->getShowRootCategory()) { 
       $this->setCategoryId(Mage::app()->getStore()->getRootCategoryId()); 
      } 

3) 어디 방법 getShowRootCategory은()?

$this->setCategoryId(Mage::app()->getStore()->getRootCategoryId()); 

5) 내 질문이 많은 것에 너무 쉽게 들릴 수도 : 나 라인의 장단점을 이해하는 데 도움이 어떤 방식

4). 그러나 모든 온라인 리소스를 참조하여 이러한 모든 것들과 다른 것들을 Magento의 초보자로서 배울 수 있습니까?

행운이

답변

1

이 다음이 전달 if (is_null($this->_productCollection))이 방법은 개체 컨텍스트에서 자신의 변수를 캐시로하고, 방법이 동일한 개체에 대한 또는 동일한 개체에서 여러 번 호출하는 경우 OOP 코드에 공통적 인 캐싱 기술이다 캐시 된 변수를 데이터베이스에서 다시 묻는 대신 다시 읽습니다.

당신은 다른 질문에 대답 할 수 있습니다. 코드베이스를 살펴 보거나 소스 코드에서 궁금해하는 방법을 찾을 수 있습니다.때로는 방법은 마법의 방법 (세트 수)이며 사용이

grep ' getRootCategoryId' app/code/ -rsn 
app/code/core/Mage/Core/Model/Store/Group.php:275: public function getRootCategoryId() 
app/code/core/Mage/Core/Model/Store.php:850: public function getRootCategoryId() 

뒤에 방법을 정의하고, 아주 기본적인 그렙 패턴을 찾을 수 없습니다 것은 다음과 같습니다

  • 사용 [space]methodname( 찾을 수 그들이 사용 >methodname(
  • 코드베이스에 정의 된 방법과이 방법이 더 정의가없는 이유를 궁금해하는 경우 마법 방법이 설정되는 곳 찾기 위해 사용 >setMethodName(
  • 코드베이스에서 호출되는 경우 찾을 수 코드베이스의 getSomeVariable()에 대해서
+0

#Anton, ".. 또는 소스 코드에서 궁금한 방법을 찾으십시오." 나는 나의 질문을 물었다. 3 그 이유는 .. – coder

+1

@coder와 내 grep 예제는 파일, 라인, 메소드 또는 당신이 여기에서 이해하지 못했던 부분을 보여줍니까? –

0

1) 예.

2) Mage_Catalog_Block_Product_List::getLayer() 카탈로그 레이어 모델 (Mage_Catalog_Model_Layer)이 반환됩니다. 아래 코드에서 사용됩니다.

3) 거의 모든 마젠타 클래스가 Varien_Object 클래스를 확장하는 마법 방법입니다. 이 articleVarien_Object에 대한 자세한 내용을 읽어보십시오.

4) 죄송합니다.이 질문에 대한 이해가되지 않습니다.

5) 이러한 질문을 피하려면 먼저 official development guide을 읽고 이해 한 후에는 Alan Storm's articles (약간 구식 인 btw)을 읽어야합니다.

관련 문제