...
Fill fields in the modal and Save the page.
...
Settings:
Name | Note |
---|---|
New page identifier | Please provide new identifier (url key) for duplicated page. New identifier must be unique and cannot be used already by any other page. |
New page title | Please provide new title for duplicated page. Title does not have to be unique. |
Backend
Note |
---|
Backend documentation need to be added |
Clicking Duplicate from dropdown - controller for form to duplicate existing page
vendor/creativestyle/magesuite-cms-duplicate/Controller/Adminhtml/Duplicate/Form.php:38
Code Block |
---|
class Form extends \Magento\Backend\App\Action
{
public function execute()
{
.....
$block = $layout->createBlock(\MageSuite\CmsDuplicate\Block\Adminhtml\Duplicate\Form::class)
->toHtml();
.....
$resultRaw->setContents($block);
return $resultRaw;
}
} |
Template for form for new (duplicated) page
vendor/creativestyle/magesuite-cms-duplicate/view/adminhtml/templates/form.phtml
Code Block |
---|
<?php
/** @var \MageSuite\CmsDuplicate\Block\Adminhtml\Duplicate\Form $block */
$page = $block->getPage();
?>
<div id="duplicate-page-modal">
<form method="post"
id="duplicate-cms-page-form"
action="<?php echo $block->getUrl('cmspageduplicate/duplicate/duplicate') ?>">
...........
<?php $blocks = $block->getBlocksToDuplicate(); ?>
|
Getting page which we want to duplicate by page_id
vendor/creativestyle/magesuite-cms-duplicate/Block/Adminhtml/Duplicate/Form.php:47
Code Block |
---|
class Form extends \Magento\Backend\Block\Template
{
protected $_template = 'MageSuite_CmsDuplicate::form.phtml';
public function getPage()
{
if (!$this->cmsPage) {
$pageId = $this->getRequest()->get('page_id');
$this->cmsPage = $this->pageRepository->getById($pageId);
}
return $this->cmsPage;
}
public function getBlocksToDuplicate()
{
$page = $this->getPage();
$layoutXml = $page->getLayoutUpdateXml();
$components = $this->xmlToComponentConfigurationMapper->map($layoutXml);
$blocks = [];
foreach ($components as $component) {
.....
$blockData = $this->getBlockData($component);
$blocks[] = $blockData;
}
return $blocks;
}
} |
Frontend
No frontend to document.
...