Saya perlu menambahkan blok CMS melalui skrip install / upgrade. Saya sudah menemukan cara menambahkan halaman CMS "normal" seperti yang terlihat dalam skrip di bawah ini. Tetapi karena saya tidak dapat menemukan cara untuk menambahkan blok CMS dalam kode Magento 2, di Google atau di sini, saya cukup macet.
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();
}
}
Saya mengerti bahwa saya tidak memerlukan semua nilai yang didefinisikan dalam $testPage
array, jadi saya menghapusnya sebagai berikut:
$testPage = [
'title' => 'Test block title',
'identifier' => 'test-block',
'stores' => [0],
'is_active' => 1
'content' => 'Test block content'
];
Adakah yang tahu apa yang perlu saya ubah untuk menjadikan halaman pengujian ini menjadi blok uji?
Catatan: Saya mendasarkan skrip saya pada skrip data instal di modul Magento 2 CMS yang terletak di vendor/magento/module-cms/Setup/InstallData.php
.