If I have the following code in a CMS page to call a template:

{{block class="Magento\Framework\View\Element\Template" name="gifts" template="Magento_Theme::html/gifts.phtml" product_id="68"}}'

How would I then retrieve the product ID in the phtml file?

I've tried:

$product = $this->getData('product_id');

But it returns empty, what is the correct way to retrieve this variable in Magento 2?

1 Answer 1


It's because you're using Magento 1 syntax via $this. In Magento 2 you should use $block

You can get the data by calling:

$product = $block->getData('product_id');


$product = $block->getProductId();
  • Thanks for the quick answer, is there anything else I need to do, as both are empty.
    – Aravona
    Nov 3, 2016 at 10:46
  • @Aravona no that's definitely the only thing you need to do. Flush the cache and remove var/generation Nov 3, 2016 at 10:49
  • Caching isn't turned on, as this is a development version of the website. Is there anything I need to do to initiate $block?
    – Aravona
    Nov 3, 2016 at 10:50
  • you need not to define block because Magento replace $this with $block , So now you can use $block in template file. Nov 3, 2016 at 11:31
  • Finally got it working.... now it's just the rest of the code that's broken! :)
    – Aravona
    Nov 3, 2016 at 12:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.