Preciso adicionar um bloco CMS por meio de um script de instalação / atualização. Eu já descobri como adicionar páginas CMS "normais", como visto no script abaixo. Mas como não consigo encontrar nenhuma maneira de adicionar blocos CMS no código do Magento 2, no Google ou aqui, estou bastante atolado.
namespace [Vendor]\[Module]\Setup;
use Magento\Cms\Model\Page;
use Magento\Cms\Model\PageFactory;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\UpgradeDataInterface;
class UpgradeData implements UpgradeDataInterface
{
/**
* Page factory.
*
* @var PageFactory
*/
private $pageFactory;
/**
* Init.
*
* @param PageFactory $pageFactory
*/
public function __construct(PageFactory $pageFactory)
{
$this->pageFactory = $pageFactory;
}
/**
* Upgrade.
*
* @param ModuleDataSetupInterface $setup
* @param ModuleContextInterface $context
*/
public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
if (version_compare($context->getVersion(), '0.0.1') < 0) {
$testPage = [
'title' => 'Test page title',
'identifier' => 'test-page',
'stores' => [0],
'is_active' => 1,
'content_heading' => 'Test page heading',
'content' => 'Test page content',
'page_layout' => '1column'
];
$this->pageFactory->create()->setData($testPage)->save();
}
$setup->endSetup();
}
}
Entendo que não preciso de todos os valores definidos na $testPage
matriz, então reduzi-o para o seguinte:
$testPage = [
'title' => 'Test block title',
'identifier' => 'test-block',
'stores' => [0],
'is_active' => 1
'content' => 'Test block content'
];
Alguém sabe o que eu preciso alterar para transformar essa página de teste em um bloco de teste?
Nota: Baseei meu script no script de instalação de dados no módulo Magento 2 CMS localizado em vendor/magento/module-cms/Setup/InstallData.php
.