Magento 2 – How to Set Meta Tag in Controller

magento-1magento2meta-tags

In magento1 we use this code to set meta description and meta keywords.

$this->getLayout()->getBlock('head')->setDescription('test description');
$this->getLayout()->getBlock('head')->setKeywords('test keywords'); 

I know this will do that in blocks

$this->pageConfig->setDescription('test description');
$this->pageConfig->setKeywords('test keywords'); 

What is controller code replacement in Magento2.

Best Answer

namespace Custom\Module\Controller\Index;

use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\Registry;
use Magento\Framework\View\Result\PageFactory;

class Index extends Action {

    protected $resultPageFactory;

    public function __construct(
    Context $context, PageFactory $resultPageFactory) {
        $this->resultPageFactory = $resultPageFactory;
        parent::__construct($context);
    }

    /**
     * @return \Magento\Framework\Controller\Result\Forward|\Magento\Framework\View\Result\Page
     */
    public function execute() {
        $resultPage = $this->resultPageFactory->create();
        $resultPage->getConfig()->getTitle()->set("Title");
        $resultPage->getConfig()->setDescription("Description");
        $resultPage->getConfig()->setKeywords("Key Words");

        return $resultPage;
    }
}
Related Topic