We sacrifice by not doing any other technology, so that you get the best of Magento.

We sacrifice by not doing any other technology, so that you get the best of Magento.

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

<?php 
/**
 * @author Magemonkey Team
 * @package Magemonkey_CmspageBanner
 */
MagentoFrameworkComponentComponentRegistrar::register(
 MagentoFrameworkComponentComponentRegistrar::MODULE,
 'Magemonkey_CmspageBanner',
 __DIR__
);

3, Add module.xml file in your module Magemonkey/CmspageBanner/etc

<?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

<?php
namespace MagemonkeyCmspageBannerSetup;

use MagentoFrameworkSetupInstallSchemaInterface;
use MagentoFrameworkSetupModuleContextInterface;
use MagentoFrameworkSetupSchemaSetupInterface;

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' => MagentoFrameworkDBDdlTable::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

<?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

<?php
namespace MagemonkeyCmspageBannerBlock;

use MagentoStoreModelScopeInterface;

class Banner extends MagentoFrameworkViewElementTemplate
{
 /**
 * @var MagentoCmsModelTemplateFilterProvider
 */
 protected $_filterProvider;

 /**
 * @var MagentoCmsModelPage
 */
 protected $_page;

 /**
 * Store manager
 *
 * @var MagentoStoreModelStoreManagerInterface
 */
 protected $_storeManager;

 /**
 * Page factory
 *
 * @var MagentoCmsModelPageFactory
 */
 protected $_pageFactory;

 /**
 * @var MagentoFrameworkViewPageConfig
 */
 protected $pageConfig;

 /**
 * Construct
 *
 * @param MagentoFrameworkViewElementTemplate $context
 * @param MagentoCmsModelPage $page
 * @param MagentoCmsModelTemplateFilterProvider $filterProvider
 * @param MagentoStoreModelStoreManagerInterface $storeManager
 * @param MagentoCmsModelPageFactory $pageFactory
 * @param MagentoFrameworkViewPageConfig $pageConfig
 * @param array $data
 */
 public function __construct(
 MagentoFrameworkViewElementTemplateContext $context,
 MagentoCmsModelPage $page,
 MagentoCmsModelTemplateFilterProvider $filterProvider,
 MagentoStoreModelStoreManagerInterface $storeManager,
 MagentoCmsModelPageFactory $pageFactory,
 MagentoFrameworkViewPageConfig $pageConfig,
 array $data = []
 ) {
 // used singleton (instead factory) because there exist dependencies on MagentoCmsHelperPage
 $this->_page = $page;
 $this->_filterProvider = $filterProvider;
 $this->_storeManager = $storeManager;
 $this->_pageFactory = $pageFactory;
 $this->pageConfig = $pageConfig;
 parent::__construct($context);
 }

 /**
 * Retrieve Page instance
 *
 * @return MagentoCmsModelPage
 */
 public function getPageData()
 {
 if (!$this->hasData('page')) {
 if ($this->getPageId()) {
 /** @var MagentoCmsModelPage $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:

<block class="MagemonkeyCmspageBannerBlockBanner" name="page.banner" template="Magemonkey_CmspageBanner::html/banner.phtml" after="-" />
field_5bfb909c5ccae

    Recent Articles
    Get a Free Quote

      Full Name

      Email Address

      Mobile Number

      Message

      Let’s initiate a discussion!!

      With Only Agency that provides a 24/7 emergency support.

        Full Name

        Email Address

        Mobile Number

        Message