Bir yükleme / yükseltme komut dosyası aracılığıyla bir CMS bloğu eklemeniz gerekir. Ben zaten aşağıdaki komut dosyasında görüldüğü gibi "normal" CMS sayfaları eklemek için nasıl anladım. Ancak Magento 2'nin koduna, Google'da veya burada CMS blokları eklemenin bir yolunu bulamadığım için oldukça sıkıldım.
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();
}
}
Ben $testPage
dizide tanımlanan tüm değerlere ihtiyacım yok , bu yüzden aşağı sıyırdı:
$testPage = [
'title' => 'Test block title',
'identifier' => 'test-block',
'stores' => [0],
'is_active' => 1
'content' => 'Test block content'
];
Bu test sayfasını test bloğuna dönüştürmek için neyi değiştirmem gerektiğini bilen var mı?
Not: Komut dosyanızı, Magento 2 CMS modülündeki kurulum veri komut dosyasına dayandırdım vendor/magento/module-cms/Setup/InstallData.php
.