Magento - 将变量/参数传递给静态块

时间:2012-05-09 15:51:24

标签: php magento

我正在研究Magento CE 1.6.2,并希望显示特定类别的“新”产品。为此,我创建了一个这样的静态块,并传递了我想要的类别。

 {{block type="catalog/product_new" category_id="20" template="catalog/product/new.phtml"}} 

但是类别Id需要从我的代码中的一个.phtml文件中动态传递。有没有办法创建一个我可以在这个静态块中使用的变量。就像我的.phtml代码一样:

 $_categoryId = $this->getCurrentCategory()->getId(); //Store my category id

可以做一些事情,这样我就可以将这个变量传递给我的静态块,就像这样,

 {{block type="catalog/product_new" category_id="var $_categoryId" template="catalog/product/new.phtml"}} //Which is nothing but 20 so that it displays new products from only category 20

请帮忙!

编辑:我找到了一个类似的链接。我追随它但没有成功。 http://magentophp.blogspot.co.uk/2011/08/passing-paramters-to-magento-cms-static.html

任何人都可以帮我按照链接开始工作吗?

3 个答案:

答案 0 :(得分:2)

这可能不是您要求的,但可能指向正确的方向:

在phtml文件中,您可以这样做:

$category = "23";
$this->getChild('home.catalog.product.new')->setData('category_id', $category);

echo $this->getChildHtml('home.catalog.product.new', false);

注意最后'false'是告诉它不要缓存块。

您还需要将它包含在布局文件中,例如以下内容:

<block type="catalog/product_new" name="home.catalog.product.new" alias="product_new" template="catalog/product/new.phtml"/>

答案 1 :(得分:1)

您需要输入

     $this->getChild('testpage')->setData("test", "xyz")
     echo $this->getChildHtml('testpage');

然后你可以通过

来调用/访问它
    $this->test; 

答案 2 :(得分:0)

在CMS页面中使用, 我们可以将变量放入一个块中,如: -

{{block type="yourmodule/testblock" product_id=10 template="module/yourmodule/bestproduct.phtml"}}

订单对象的OR相同: -

{{block type="yourmodule/testblock" order=$order template="module/yourmodule/bestproduct.phtml"}}