2011-10-25 34 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

相关问题