[英]Custom Block Magento 2 isnt't working
我想在\\Magento\\Catalog\\Block\\Product\\View
添加一個新功能
我做了什么:
1. app/code/Company/Module
composer.json
{
"name": "Company/Module",
"description": "N/A",
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0"
},
"type": "magento2-module",
"version": "100.0.2",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Magento\\Cms\\": ""
}
}
}
為registration.php
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Company_Module',
__DIR__
);
2. app/code/Company/Module/Product/View
在這個文件里面:
<?php
namespace Company\Module\Block\Product;
class View extends \Magento\Catalog\Block\Product\View {
private function trySomething()
{
exit('test');return '123';
}
}
?>
3. app/code/Company/Module/etc
在這個文件夾里:
di.xml
內容:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Catalog\Block\Product\View" type="Company\Module\Block\Product\View" />
</config>
也在文件夾中:
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="Company_Module" setup_version="1.0.0">
</module>
</config>
我想在模板上調用該函數,包含在product_detail中,如下所示:
/**
* Product view template
*
* @var $block \Company\Module\Block\Product\View
*/
?>
<?php echo $block->trySomething(); ?>
This is just another test
在product_detail上正確顯示了文本“這只是另一個測試”,但不會調用該函數。
希望可以有人幫幫我。
我自己解決了,問題是塊和布局不在同一個模塊中。 我在app/code/local/Company/Module
下創建了一個view/frontend/layout
和view/frontend/templates
,這解決了我的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.