XML 페이지 구조를 var/log/
폴더 의 로그 파일에 쓰는 작은 모듈을 모았습니다 .
app / code / CustomerParadigm / PageXml / etc / module.xml
<?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="CustomerParadigm_PageXml" setup_version="1.0.0" schema_version="1.0.0">
<sequence>
<module name="Magento_Catalog"/>
<module name="Magento_Theme"/>
</sequence>
</module>
</config>
app / code / CustomerParadigm / PageXml / etc / events.xml
<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="customerparadigm_layout_generate_blocks_after" instance="CustomerParadigm\PageXml\Model\Layout" />
</event>
</config>
app / code / CustomerParadigm / PageXml / registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'CustomerParadigm_PageXml',
__DIR__
);
앱 / 코드 /CustomerParadigm/PageXml/Model/Layout.php
<?php
namespace CustomerParadigm\PageXml\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) {
$log_file = BP . '/var/log/page_layout.xml';
if (file_exists($log_file)) {
unlink($log_file);
}
$xml = $observer->getEvent()->getLayout()->getXmlString();
/*$this->_logger->debug($xml);*/
$writer = new \Zend\Log\Writer\Stream($log_file);
$logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info($xml);
return $this;
}
}
여기에 너무 놀라운 일이 없으며 개선해야 할 여지가 충분하다고 확신합니다 (내장 로거로 작업하는 것이 그 중 하나입니다).하지만 사이트를 개발할 때 나를 위해 일을 처리합니다.
catalog.topnav
입니다. 기본 모듈 테마의 default.xml에서 찾을 수 있습니다.