好的,这就是我想要做的,我已经阅读了大量的链接和帖子,但似乎我的目标是有点不同。
我的主页上有一些静态块,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\"}}";
?>
现在,这个示例实际完成了这项工作,我可以加载一个我希望按类别划分的数组,并让它随机循环或大部分循环。
我的真正问题在于,将此信息打印到屏幕上并没有达到我一直希望的效果,它正在做的只是打印文本,而每次刷新屏幕确实给我一个新的随机数组ID明智的元素,它只是屏幕上的文本。
如果有人可以帮助我解决这个问题,并且能够将文本翻译成工作小部件标签,这将是非常棒的,因为我花了很长时间研究并且每次都找到死角。
提前致谢,
干杯!
答案 0 :(得分: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();