2012-03-19 53 views
3

有一些代碼,因爲這:如何做magento的條件?

<div class="test"> 
     <div class="upsell-tags"> 
    <?php echo $this->getChildHtml('product_additional_data') ?> 
    <?php echo $this->getChildHtml('upsell_products') ?> 
     </div> 
    </div> 

我想<div class="test">前添加一個if條件。我該怎麼做?謝謝。 當我添加下面的代碼,它顯示我一個錯誤。爲什麼?

<?php if(isset($this->getChildHtml('upsell_products'))):?>..... 


    <?php endif;?> 

回答

3

從PHP文檔:

警告

isset()函數只適用於變量,否則傳遞任何將導致解析錯誤。爲了檢查是否設置了常量,使用defined()函數。

您傳遞的函數的返回值不是有效的用法。你需要做類似

$upsell = $this->getChildHtml('upsell_products'); 
if($upsell) { 
    // ... 
} 
2

如果你看看magento代碼,函數getChildHtml返回一個字符串。

/** 
* Retrieve child block HTML 
* 
* @param string $name 
* @param boolean $useCache 
* @param boolean $sorted 
* @return string 
*/ 
public function getChildHtml($name = '', $useCache = true, $sorted = false) 

如果你看起來更多一點,看起來該函數返回一個空字符串,如果沒有什麼要呈現。所以我只是顯示返回的HTML沒有任何條件。如果你真的需要知道是否有什麼東西,我會這樣做:if($ this-> getChildHtml($ name)!='')