Magento:如何在. php文件中调用动态小部件块ID


Magento: How to call dynamic widget block ID in a .phtml file

好的,这就是我要做的,我已经阅读了大量的链接和帖子,但似乎我要做的是有点不同。

我在我的主页上有几个静态块,1个广告旋转器,1个滑块显示在特色产品类别中定义的产品,最后一个类别目前指向一个静态类别,但它的功能与特色相同。

我的任务是随机化最后一个类别,我能够通过编写一个自定义的.phtml文件来实现这一点,并使用mt_rand循环一些已经创建的静态块。

然而,这更进一步,我想做的是有一个单一的静态块,并有类别ID随机,这里是一个例子:

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

现在使用这个概念,我要做的是尝试创建另一个。php文件,并让静态块调用我自定义的。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'"}}";
?>

现在,这个例子实际完成了工作,我可以加载一个数组的任何我想要的类别,只是让它随机循环或大部分。

我真正的问题是打印这个信息到屏幕上没有我一直希望的效果,它所做的只是打印文本,而每次刷新屏幕确实给了我一个新的随机元素的数组ID明智,它只是文本到屏幕上。

如果有人可以帮助我解决这个问题,并能够将文本翻译成工作的小部件标签,那将是非常棒的,因为我花了很长时间研究,每次都发现死胡同。

提前感谢,

干杯!

您需要在视图中使用稍微不同的语法。一些伪例子

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();