2011-10-25 67 views
4

好吧,這是我想要做的,我已經閱讀了大量的鏈接和帖子,但似乎我的目標是做一個有點不同。Magento:如何調用一個.phtml文件中的動態部件塊ID

我在我的主頁上有幾個靜態塊,1個廣告輪播,1個滑塊,顯示在特色產品類別中定義的產品,最後是另一個類別,它目前指向一個靜態類別,但它的功能與特色。

我的任務是隨機化最後一個類別,我可以通過編寫一個自定義的.phtml文件來實現這一點,並通過使用mt_rand循環使用一些已經創建的靜態塊。

然而,這又進了更深一步,我所希望做的是有一個單一的靜態塊,並有類別ID是隨機的,這裏有一個例子:

{{block type="catalog/product_list" category_id="392" template="catalog/product/home-list.phtml"}} 

現在使用這個概念,是什麼我試圖做的是試圖創建另一個文件的一個.phtml,並且有靜態塊叫我的自定義html的是這種東西:現在

<?php 
$input = array(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150); 
$rand_keys = array_rand($input, 2); 
echo "{{block type=\"catalog/product_list\" category_id=\"{$input[$rand_keys[0]]}\" template=\"catalog/product/home-list.phtml\"}}"; 
?> 

,這個例子實際做工作,我可以加載一個我想要的類別明智的數組,然後通過randoml循環y或大部分。

我的真正問題在於將這些信息打印到屏幕上並沒有產生我一直期待的效果,它所做的只是簡單地打印文本,而每次刷新屏幕都會給我一個新的數組ID中的隨機元素明智,其正好顯示在屏幕上。

如果任何人可以幫助我解決問題,並能夠將文本轉換爲工作小部件標記,那將是非常棒的,因爲我花了很長時間研究並發現每一次都是死路一條。

在此先感謝,

乾杯!

回答

5

您需要稍微不同的語法才能在視圖中使用。一些僞例子

echo $this->getLayout()->createBlock('catalog/product_list')->setTemplate('catalog/product/home-list.phtml')->setCategoryId('392')->toHtml(); 

,或者如果該塊已經在現有的佈局,你可以通過名字得到它:

echo $this->getLayout()->getBlock('blockname')->setTemplate('catalog/product/home-list.phtml')->setCategoryId('392')->toHtml(); 
+0

完美!這正是我所需要的,它也允許我刪除一個額外的phtml,我試圖循環通過,因爲上面允許我調用模板文件。 – sfla99

相關問題