마지막으로로드 된 모든 XML 레이아웃을 인쇄하고 magento 2 레이아웃이 어떻게 작동하는지 알 수 있습니다. 또한 사용자 정의 모듈 레이아웃이로드되었는지 여부를 확인하는 데 도움이됩니다. 아이디어는 다음과 같습니다
1 / 우리는 새로운 디렉토리를 만듭니다 Sample/Dev
. Sample/Dev/registration.php
모듈 디렉토리에 대해 Magento 2로 선언하도록 만듭니다 .
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Sample_Dev',
__DIR__
);
2 / Create Sample/Dev/etc/module.xml
: Magento 2에게 모듈의 설치 버전에 대해 알리기 위해
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="module.xsd">
<module name="Sample_Dev" setup_version="1.0.0" schema_version="1.0.0" release_version="1.0.1">
</module>
</config>
3 / 만들기 Sample/Dev/etc/frontend/events.xml
. 이 파일에서는 “layout_generate_blocks_after” 이벤트를 듣습니다.
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="layout_generate_blocks_after">
<observer name="thienphucvx_layout_generate_blocks_after" instance="Sample\Dev\Model\Layout" />
</event>
</config>
4 / Sample/Dev/Model/Layout.php
아래와 같이 컨텐츠로 작성
<?php
namespace Sample\Dev\Model;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
class Layout implements ObserverInterface
{
protected $_logger;
public function __construct ( \Psr\Log\LoggerInterface $logger
) {
$this->_logger = $logger;
}
public function execute(\Magento\Framework\Event\Observer $observer)
{
$xml = $observer->getEvent()->getLayout()->getXmlString();
/*$this->_logger->debug($xml);*//*If you use it, check ouput string xml in var/debug.log*/
$writer = new \Zend\Log\Writer\Stream(BP . '/var/log/layout_block.xml');
$logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info($xml);
return $this;
}
}
5 / 새 모듈 설정. 홈 웹 사이트 디렉토리에 있습니다. CMD 명령 행을 입력하십시오.
– PHP bin / magento 모듈 : Sample_Dev 활성화
– PHP bin / magento 설정 : 업그레이드
6 / xml 파일을 보려는 페이지 (예 : 홈 페이지)를 새로 고치고 handle xml 파일을에서 확인하십시오 var/log/layout_block.xml
.