설치 / 업그레이드 스크립트를 통해 CMS 블록을 추가해야합니다. 아래 스크립트에서 볼 수 있듯이 "일반"CMS 페이지를 추가하는 방법을 이미 알고 있습니다. 그러나 Magento 2의 코드, Google 또는 여기에서 CMS 블록을 추가 할 수있는 방법을 찾을 수 없으므로 상당히 잼되어 있습니다.
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();
}
}
$testPage
배열에 정의 된 모든 값이 필요하지 않다는 것을 이해 하므로 다음과 같이 제거했습니다.
$testPage = [
'title' => 'Test block title',
'identifier' => 'test-block',
'stores' => [0],
'is_active' => 1
'content' => 'Test block content'
];
이 테스트 페이지를 테스트 블록으로 만들기 위해 내가 무엇을 변경해야하는지 아는 사람이 있습니까?
참고 : 스크립트는에있는 Magento 2 CMS 모듈의 설치 데이터 스크립트를 기반으로합니다 vendor/magento/module-cms/Setup/InstallData.php
.
이것은 "CMS 블록"이 아니라 "CMS 페이지"입니다 .. 오해의 소지가있는 제목입니다.
—
OZZIE