Шаг 1
Опишите Ваш блок в макете.
Обратите внимание, что если Ваше условие загрузки просто, то Вы можете реализовать его посредством ifconfig
.
Если же условие более сложное, то Вы можете реализовать его непосредственно в классе-блоке.
Dfe/Markdown/view/adminhtml/layout/default.xml
:
<?xml version='1.0'?>
<page
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:noNamespaceSchemaLocation='../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd'>
<body>
<referenceContainer name='root'>
<block
class='Dfe\Markdown\Block\Init'
name='Dfe_Markdown_Block_Init'
ifconfig='dfe_backend/markdown/enable'
/>
</referenceContainer>
</body>
</page>
Шаг 2
При инициализации класса-блока вызовите метод \Magento\Framework\View\Page\Config::addPageAsset()
для загрузки (добавления на страницу) JavaScript и CSS.
Если Ваше условие загрузки сложное, то здесь как раз подходящее место для его реализации на языке PHP:
Dfe/Markdown/Block/Init.php
:
<?php
namespace Dfe\Markdown\Block;
class Init extends \Magento\Backend\Block\AbstractBlock {
/**
* @override
* @see \Magento\Backend\Block\AbstractBlock::_construct()
* @return void
*/
protected function _construct() {
/** http://devdocs.magento.com/guides/v2.0/architecture/view/page-assets.html#m2devgde-page-assets-api */
/** @var \Magento\Framework\App\ObjectManager $om */
$om = \Magento\Framework\App\ObjectManager::getInstance();
/** @var \Magento\Framework\View\Page\Config $page */
$page = $om->get('Magento\Framework\View\Page\Config');
$page->addPageAsset('Dfe_Markdown::main.js');
$page->addPageAsset('Dfe_Markdown::main.css');
}
}
Шаг 3
Dfe/Markdown/view/adminhtml/web/main.js
:
require(['jquery'], function($) {$(function() {
console.log('HELLO, WORLD!');
});});