If you need to add custom field in cms pages then follow below steps:
1, You need to create a module for that so create module folders app/code/Magemonkey/CmspageBanner
2, Add registration.php file in your module Magemonkey/CmspageBanner
1 2 3 4 5 6 7 8 9 10 |
<?php /** * @author Magemonkey Team * @package Magemonkey_CmspageBanner */ \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Magemonkey_CmspageBanner', __DIR__ ); |
3, Add module.xml file in your module Magemonkey/CmspageBanner/etc
1 2 3 4 5 |
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd"> <module name="Magemonkey_CmspageBanner" setup_version="1.0.1"> </module> </config> |
4, Then create new schema file InstallSchema.php in Magemonkey/CmspageBanner/setup
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php namespace Magemonkey\CmspageBanner\Setup; use Magento\Framework\Setup\InstallSchemaInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\SchemaSetupInterface; class InstallSchema implements InstallSchemaInterface { /** * Add Secondary Custom Content */ public function install(SchemaSetupInterface $setup, ModuleContextInterface $context) { $installer = $setup; $installer->startSetup(); $setup->getConnection()->addColumn( $setup->getTable('cms_page'), 'banner_block', [ 'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 'length' => 255, 'nullable' => true, 'comment' => 'Banner Block Identifier' ] ); $installer->endSetup(); } } |
5, Then add your need to add a field in ui_component form file cms_page_form.xml in Magemonkey/CmspageBanner/vew/adminhtml/ui_component
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?xml version="1.0" encoding="UTF-8"?> <form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <fieldset name="general"> <field name="banner_block"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="dataType" xsi:type="string">text</item> <item name="label" xsi:type="string" translate="true">Banner Block Identifier</item> <item name="formElement" xsi:type="string">input</item> <item name="source" xsi:type="string">page</item> <item name="dataScope" xsi:type="string">banner_block</item> </item> </argument> </field> </fieldset> </form> |
6, Then you need to create one block file for the call that field in the frontend, Banner.php in Magemonkey/CmspageBanner/Block
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
<?php namespace Magemonkey\CmspageBanner\Block; use Magento\Store\Model\ScopeInterface; class Banner extends \Magento\Framework\View\Element\Template { /** * @var \Magento\Cms\Model\Template\FilterProvider */ protected $_filterProvider; /** * @var \Magento\Cms\Model\Page */ protected $_page; /** * Store manager * * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; /** * Page factory * * @var \Magento\Cms\Model\PageFactory */ protected $_pageFactory; /** * @var \Magento\Framework\View\Page\Config */ protected $pageConfig; /** * Construct * * @param \Magento\Framework\View\Element\Template $context * @param \Magento\Cms\Model\Page $page * @param \Magento\Cms\Model\Template\FilterProvider $filterProvider * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\Cms\Model\PageFactory $pageFactory * @param \Magento\Framework\View\Page\Config $pageConfig * @param array $data */ public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Cms\Model\Page $page, \Magento\Cms\Model\Template\FilterProvider $filterProvider, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Cms\Model\PageFactory $pageFactory, \Magento\Framework\View\Page\Config $pageConfig, array $data = [] ) { // used singleton (instead factory) because there exist dependencies on \Magento\Cms\Helper\Page $this->_page = $page; $this->_filterProvider = $filterProvider; $this->_storeManager = $storeManager; $this->_pageFactory = $pageFactory; $this->pageConfig = $pageConfig; parent::__construct($context); } /** * Retrieve Page instance * * @return \Magento\Cms\Model\Page */ public function getPageData() { if (!$this->hasData('page')) { if ($this->getPageId()) { /** @var \Magento\Cms\Model\Page $page */ $page = $this->_pageFactory->create(); $page->setStoreId($this->_storeManager->getStore()->getId())->load($this->getPageId(), 'identifier'); } else { $page = $this->_page; } $this->setData('page', $page); } return $this->getData('page'); } } |
After that you need to run setup:upgrade command
Then after you can call that block in your cms page Like:
1 |
<block class="Magemonkey\CmspageBanner\Block\Banner" name="page.banner" template="Magemonkey_CmspageBanner::html/banner.phtml" after="-" /> |
[crayon-63d98383d1522792915895/] Using above fucntion Images can be imported directly from...
Override view block using di.xml and add the below code...
You can check a list of called layout XML for...
Follow the below steps to install and set up PWA...
If you want to remove all leading zero's from order,...
Let our Magento expert connect to discuss your requirement.
We offer Magento
certified developers.
Our Magento clientele
is 500+.
We sign NDA for the
security of your projects.
We’ve performed 100+
Magento migration projects.
Free quotation
on your project.
Three months warranty on
code developed by us.