2012-07-16 19 views
19

Düzenimdeki farklı sayfalarda görüntülenen bir kenar çubuğu bloğum var.Magento - şu anki ürünü alın

Bu satırda bir ürün listem var ve bir ürün sayfasında bulunduğumda geçerli ürünü seçmek istiyorum.

$current_product = Mage::registry('current_product'); 

akım ürünü almak için, ama bu ürün sayfası yüklenirken ediyorum sadece ilk kez çalışır:

ben kullanıyorum. Farklı bir ürün seçtiğimde yukarıdaki kod aynı değeri (ilk ürün) döndürür.

Bunun olduğunu varsayıyorum çünkü Magento önbelleğini kullanıyorum. Doğru değeri elde etmek için ne yapabilirim?

$currentCategory = Mage::registry('current_category'); 

kenar çubuğu bloğu Burada eklediğiniz bir navigasyon şablon:

aynı şey kullanırken olan .. \ app \ tasarım \ önyüzü \ varsayılan \ Mytheme \ şablon \ katalog \ navigasyon \ page_left.phtml.

Bu XML ile düzeni eklemeden ediyorum:

<block type="catalog/navigation" name="left.navigation.block" as="left.navigation.block" template="catalog/navigation/page_left.phtml"/> 
+0

Bloğunuzun sınıfı nedir? Hangi Magento blok sınıfından miras kalıyor? – blmage

+0

Lütfen soruma eklediğim ek bilgilere bakın: – Shani1351

cevap

5

(örn geçerli ürüne bağlı hale getirmek için), sen kurtulabilirsiniz onun düzeni tanımında bu kullanarak blok için cache:

:
-3

aşağıdaki koddan mevcut ürün kimliği ve ürün ayrıntıları alabilirsiniz. Eğer kendi önbellek bilgileri ayarlayabilirsiniz hangi Mage_Catalog_Block_Navigation devralan kendi blok sınıfını kullanmak isteyen değilseniz

$_proId = $this->getProduct()->getId(); 
$_product= Mage::getModel('catalog/product')->load($_proId); 
+0

$ this-> getProduct() kenar çubuğu şablonunda olduğumda hiçbir şey dönmüyor – Shani1351

+0

Ayrıca ürün nesnesi de $ this.> getProduct çağrılırken yüklenir(), ürün yüklemeyi tekrar aramada bir anlam yok. – Bery

+0

ürününüzü buraya yüklemek için gerekli değildir. – drsndodiya

23

<block type="catalog/navigation" name="left.navigation.block" as="left.navigation.block" template="catalog/navigation/page_left.phtml"> 
    <action method="unsetData"><key>cache_lifetime</key></action> 
</block> 
nasıl

kodunun altına deneyin şimdiki ürün kimliği anda yüklü almak için ürün kimliği almak için

$product_id = $this->getProduct()->getId(); 

$ this erişimi yok olduğunda, Magento kayıt kullanabilirsiniz:

$product_id = Mage::registry('current_product')->getId(); 
2
$_proId = $this->getProduct()->getId(); 
$_product= Mage::getModel('catalog/product')->load($_proId); 

Bu aslında yaptığı iş. Yukarıda oylandı, ancak benim için çalıştı. getProduct()'u kullandığınızda ürünün gerçekten yüklendiğini anlıyorum, ancak sadece ürünün kısmi bilgisini alıyordum. Kimliği almak ve ürünü tekrar yüklemek tüm bilgileri geri getirdi.

Magento'nun bir sürümüne özgü olabilir, ancak aptalca görünüyor olsa da çalışır.

İlgili konular