1、创建Magento 2模块

首先,我们需要创建一个Magento 2模块。我们可以通过以下命令来创建一个基本的模块骨架:

php bin/magento module:create --namespace=YourNamespace --module-name=YourModule


这将在 app/code/YourNamespace/YourModule 目录下创建一个基本的模块骨架。

2、定义模块的路由
接下来,我们需要定义一个路由,以便在前端显示产品信息。我们可以通过在我们的模块目录下创建一个路由文件来实现:

在 app/code/YourNamespace/YourModule/etc/frontend/routes.xml 文件中加入以下代码:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="standard">
<route id="yourmodule" frontName="yourmodule">
<module name="YourNamespace_YourModule"/>
</route>
</router>
</config>


3、创建控制器
现在我们需要创建一个控制器,用于处理路由并返回产品信息。我们可以在 app/code/YourNamespace/YourModule/Controller/Index 文件夹下创建一个名为Index的控制器,并添加以下代码:

<?php
namespace YourNamespace\YourModule\Controller\Index;

use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;

class Index extends Action
{
protected $resultPageFactory;

public function __construct(Context $context, PageFactory $resultPageFactory)
{
parent::__construct($context);
$this->resultPageFactory = $resultPageFactory;
}

public function execute()
{
$resultPage = $this->resultPageFactory->create();
$resultPage->getConfig()->getTitle()->set(__('Product Information'));

return $resultPage;
}
}


4、创建布局文件
我们还需要创建一个布局文件,用于定义前端页面的内容。我们可以在 app/code/YourNamespace/YourModule/view/frontend/layout 文件夹下创建一个名为yourmodule_index_index.xml的文件,并添加以下代码:


<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<block class="Magento\Catalog\Block\Product\View"
name="yourmodule.product.info"
template="YourNamespace_YourModule::product_info.phtml"/>
</referenceContainer>
</body>
</page>

5、创建模板文件
最后,我们需要创建一个模板文件,用于显示产品信息。我们可以在 app/code/YourNamespace/YourModule/view/frontend/templates 文件夹下创建一个名为product_info.phtml的文件,并添加以下代码:

<h1><?php echo $block->getProduct()->getName(); ?></h1>
<p><?php echo $block->getProduct()->getDescription(); ?></p>

6、清除缓存