Passing variables to a child html block in Magento
Did you know you can pass variables via setData() to blocks in exactly the same way you do with other objects.
You have a template block which you are including on multiple parts of your Magento site and you want to use it on your new pages.. The catch? It’s expecting a variable to be in scope.
For example you may have something like this
// loop through all products foreach ($this->getProductCollection as $_product) { // display this products thumbnail image echo $this->getChildHtml("products.thumbnail"); } // end for
It doesn’t seem sensible to just change the template file to reload (lets say) a Product Model which you already have instantiated the parent block.
What you can do however is use the setData method on the block object to pass your product instance.
$this->getChild("products.thumbnail")->setData("product", $_product); echo $this->getChildHtml("products.thumbnail");
Inside your template file you could do something similar to
// get the product
$_product = $this->getProduct();
Gareth