我一直在自定义模块中处理magento Blocks。一切都工作正常控制器没问题,其余的工作正常。我面临的问题是我的块没有按预期显示。不会显示我的阻止或阻止消息,而是显示“热门标记”块。这是我的模块Experiment / Test / etc / config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<experiment_test>
<vresion>0.0.1</vresion>
</experiment_test>
</modules>
<frontend>
<global>
<blocks>
<experiment>
<class>Experiment_Test_Block</class>
</experiment>
</blocks>
</global>
<routers>
<experiment>
<use>standard</use>
<args>
<module>Experiment_Test</module>
<frontName>experiment</frontName>
</args>
</experiment>
<layout>
<updates>
<experiment>
<file>experiment.xml</file>
</experiment>
</updates>
</layout>
</routers>
</frontend>
</config>
我的模块配置文件是app / etc / modules / Experiment_Test.xml:
<?xml version="1.0"?>
<config>
<modules>
<Experiment_Test>
<active>true</active>
<codePool>local</codePool>
</Experiment_Test>
</modules>
</config>
这是我的Experiment / Test / controllers / IndexController.php:
<?php
class Experiment_Test_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction() {
$this->loadLayout();
$this->renderLayout();
}
}
?>
这是我的块位置:Experiment / Test / Block / ExpBlock.php:
<?php
class Experiment_Test_Block_Expblock extends Mage_Core_Block_Template {
public function methodblock(){
return 'Information About my Block!!';
}
}
?>
这是我的布局文件放在design / frontend / mytheme / default / layout / experiment.xml中:
<?xml version="1.0"?>
<layout version="0.0.1">
<default>
<reference name="content"></reference>
</default>
<experiment_index_index>
<reference name="content">
<block type="test/expblock" name="afficher_expbloc" template="experiment/afficher.phtml" />
</reference>
</experiment_index_index>
</layout>
这是我的模板文件放在design / frontend / mytheme / default / template / experiment / afficher.phtml中:
<?php echo $this->methodblock(); ?>
但输出显示在另一个块中,即来自popular_tags块和前端/ base / default / template / tag / popular.phtml
请告诉我错误的地方。
答案 0 :(得分:1)
布局文件中的块定义错误
<block type="test/expblock" name="afficher_expbloc" template="experiment/afficher.phtml" />
这是错误的。而不是这个,你需要使用这个
<block type="experiment/expblock" name="afficher_expbloc" template="experiment/afficher.phtml" />
experiment
是您通过config.xml
文件设置的块唯一标识符名称。为了指向您的Experiment_Test_Block_Expblock
,您需要在布局文件中使用类型experiment/expblock
作为自定义块。
答案 1 :(得分:0)
您的代码中存在很多问题:
第一个config.xml
experiment_test
应为Experiment_Test
<强>从强>
<modules>
<experiment_test>
<vresion>0.0.1</vresion>
</experiment_test>
</modules>
到
<modules>
<Experiment_Test>
<vresion>0.0.1</vresion>
</Experiment_Test>
</modules>
文件名ExpBlock.php
应为Expblock.php
并改变:
<block type="test/expblock" name="afficher_expbloc" template="experiment/afficher.phtml" />
到
<block type="tag/popular" name="tags_popular" template="tag/popular.phtml"/>
答案 2 :(得分:0)
我在深入搞清楚之后找到了自己的解决方案,那就是我在config.xml文件中声明了一些标签错误(Experiment / Test / etc / config.xml) - 所以我想分享所以它会对于具有相同情况的人有所帮助:这是我更正的config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<experiment_test>
<vresion>0.0.1</vresion>
</experiment_test>
</modules>
<frontend>
<routers>
<experiment>
<use>standard</use>
<args>
<module>Experiment_Test</module>
<frontName>experiment</frontName>
</args>
</experiment>
</routers>
<layout>
<updates>
<experiment>
<file>experiment.xml</file>
</experiment>
</updates>
</layout>
</frontend>
<global>
<blocks>
<experiment>
<class>Experiment_Test_Block</class>
</experiment>
</blocks>
</global>
</config>
我的布局文件中也存在问题,由@programmer_rkt
回答