我是Magento的新人。我正在尝试为Magento Admin面板开发自定义模块。我的代码如下
位置:app / etc / modules
Digitab_Brandlogo.xml
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<Digitab_Brandlogo>
<active>true</active>
<codePool>local</codePool>
</Digitab_Brandlogo>
</modules>
</config>
位置:app / code / local / Digitab / Brandlogo / Block / Adminhtml
logo.php
<?php
class Digitab_Brandlogo_Block_Adminhtml_slider extends Mage_Adminhtml_Block_Widget_Grid_Container
{
public function __construct()
{
$this->_controller = 'adminhtml_brandlogo';
$this->_blockGroup = 'brandlogo';
$this->_headerText = Mage::helper('brandlogo')->__('Brand Logo Manager');
$this->_addButtonLabel = Mage::helper('brandlogo')->__('Add Brand');
parent::__construct();
}
}
位置:app / code / local / Digitab / Brandlogo / controllers / Adminhtml
IndexController.php
<?php
class Digitab_Brandlogo_Adminhtml_BrandlogoController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
}
位置:app / code / local / Digitab / Brandlogo / etc
config.xml中
<?xml version="1.0"?>
<config>
<modules>
<digitab_brandlogo>
<version>1.0.0</version>
</digitab_brandlogo>
</modules>
<global>
<models />
<blocks />
<resources />
<extraconfig />
<helpers>
<digitab_brandlogo>
<class>Digitab_Brandlogo_Helper</class>
</digitab_brandlogo>
</helpers>
</global>
<admin>
<routers>
<digitab_brandlogo>
<use>admin</use>
<args>
<module>Digitab_brandlogo</module>
<frontName>brandlogo</frontName>
</args>
</digitab_brandlogo>
</routers>
</admin>
<adminhtml>
<layout>
<updates>
<brandlogo>
<file>brandlogo.xml</file>
</brandlogo>
</updates>
</layout>
</adminhtml>
</config>
位置:app / code / local / Digitab / Brandlogo / etc
adminhtml.xml
<?xml version="1.0"?>
<config>
<menu>
<digitab translate="title" module="digitab_brandlogo">
<title>Digitab</title>
<sort_order>110</sort_order>
<children>
<brandlogo>
<title>Brand Logo</title>
<sort_order>1</sort_order>
<action>brandlogo/adminhtml_brandlogo</action>
</brandlogo>
</children>
</digitab>
</menu>
</config>
位置:app / code / local / Digitab / Brandlogo / Helper
Data.php
<?php
class Digitab_Brandlogo_Helper_Data extends Mage_Core_Helper_Abstract
{
}
位置:app / design / adminhtml / default / default / layout
brandlogo.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<brandlogo_adminhtml_brandlogo_index>
<reference name="content">
<block type="brandlogo/adminhtml_brandlogo" name="brandlogo" template="test.phtml"/>
</reference>
</brandlogo_adminhtml_brandlogo_index>
</layout>
位置:应用程序/设计/ adminhtml /默认/默认/模板
test.phtml
ABCD
我得到的输出如下
如何显示模板?谁能在这方面帮助我?感谢
更新
我修改了我的文件,如下所示,但它无效。
位置:app / etc / modules
Digitab_Brandlogo.xml
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<Digitab_Brandlogo>
<active>true</active>
<codePool>local</codePool>
</Digitab_Brandlogo>
</modules>
</config>
位置:app / code / local / Digitab / Brandlogo / Block / Adminhtml
Brandlogo.php
<?php
class Digitab_Brandlogo_Block_Adminhtml_Brandlogo extends Mage_Adminhtml_Block_Widget_Grid_Container
{
public function __construct()
{
$this->_controller = 'adminhtml_brandlogo';
$this->_blockGroup = 'brandlogo';
$this->_headerText = Mage::helper('brandlogo')->__('Brand Logo Manager');
$this->_addButtonLabel = Mage::helper('brandlogo')->__('Add Brand');
parent::__construct();
}
}
位置:app / code / local / Digitab / Brandlogo / controllers / Adminhtml
BrandlogoController
<?php
class Digitab_Brandlogo_Adminhtml_BrandlogoController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
}
位置:app / code / local / Digitab / Brandlogo / etc
config.xml中
<?xml version="1.0"?>
<config>
<modules>
<digitab_brandlogo>
<version>1.0.0</version>
</digitab_brandlogo>
</modules>
<global>
<models />
<blocks>
<brandlogo>
<class>Digitab_Brandlogo_Block</class>
</brandlogo>
</blocks>
<resources />
<extraconfig />
<helpers>
<digitab_brandlogo>
<class>Digitab_Brandlogo_Helper</class>
</digitab_brandlogo>
</helpers>
</global>
<admin>
<routers>
<digitab_brandlogo>
<use>admin</use>
<args>
<module>Digitab_brandlogo</module>
<frontName>brandlogo</frontName>
</args>
</digitab_brandlogo>
</routers>
</admin>
<adminhtml>
<layout>
<updates>
<brandlogo>
<file>brandlogo.xml</file>
</brandlogo>
</updates>
</layout>
</adminhtml>
</config>
位置:app / code / local / Digitab / Brandlogo / etc
adminhtml.xml
<?xml version="1.0"?>
<config>
<menu>
<digitab translate="title" module="digitab_brandlogo">
<title>Digitab</title>
<sort_order>110</sort_order>
<children>
<brandlogo>
<title>Brand Logo</title>
<sort_order>1</sort_order>
<action>brandlogo/adminhtml_brandlogo</action>
</brandlogo>
</children>
</digitab>
</menu>
</config>
位置:app / code / local / Digitab / Brandlogo / Helper
Data.php
<?php
class Digitab_Brandlogo_Helper_Data extends Mage_Core_Helper_Abstract
{
}
位置:app / design / adminhtml / default / default / layout
brandlogo.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<brandlogo_adminhtml_brandlogo_index>
<reference name="content">
<block type="brandlogo/adminhtml_brandlogo" name="brandlogo" template="test.phtml"/>
</reference>
</brandlogo_adminhtml_brandlogo_index>
</layout>
位置:应用程序/设计/ adminhtml /默认/默认/模板
test.phtml
ABCD
但它不起作用。现在,我可以在管理面板中看到一个空白页面。感谢
答案 0 :(得分:4)
这是一个完整的答案:
位置:app / etc / modules
Digitab_Brandlogo.xml
看起来不错。
位置:app / code / local / Digitab / Brandlogo / Block / Adminhtml
此文件夹需要包含以下文件&amp;文件夹:
应用程序/代码/本地/ Digitab / Brandlogo /砌块/ Adminhtml / Brandlogo / Grid.php
<?php
class Digitab_Brandlogo_Block_Adminhtml_Brandlogo_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
public function __construct()
{
parent::__construct();
$this->setId('digitab_brandlogo_grid');
$this->setDefaultSort('increment_id');
$this->setDefaultDir('DESC');
$this->setSaveParametersInSession(true);
$this->setUseAjax(true);
}
public function getGridUrl()
{
return $this->getUrl('*/*/grid', array('_current'=>true));
}
}
应用程序/代码/本地/ Digitab / Brandlogo /砌块/ Adminhtml / Brandlogo.php
<?php
class Digitab_Brandlogo_Block_Adminhtml_Brandlogo extends Mage_Adminhtml_Block_Widget_Grid_Container
{
public function __construct()
{
$this->_blockGroup = 'digitab_brandlogo';
$this->_controller = 'adminhtml_brandlogo';
$this->_headerText = Mage::helper('digitab_brandlogo')->__('Brand Logo Manager');
parent::__construct();
$this->_addButtonLabel = Mage::helper('digitab_brandlogo')->__('Add Brand');
}
}
位置:app / code / local / Digitab / Brandlogo / Helper / Data.php
<?php
class Digitab_Brandlogo_Helper_Data extends Mage_Core_Helper_Abstract {}
位置:app / code / local / Digitab / Brandlogo / controllers / Adminhtml / BrandlogoController.php
<?php
class Digitab_Brandlogo_Adminhtml_BrandlogoController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
}
主要问题在于您编写XML文件的方式。
位置:app / code / local / Digitab / Brandlogo / etc
1。 app / code / local / Digitab / Brandlogo / etc / config.xml 以下是config.xml
的代码必须如何。
<?xml version="1.0"?>
<config>
<modules>
<Digitab_Brandlogo>
<version>1.0.0</version>
</Digitab_Brandlogo>
</modules>
<global>
<models />
<blocks>
<digitab_brandlogo>
<class>Digitab_Brandlogo_Block</class>
</digitab_brandlogo>
</blocks>
<resources />
<extraconfig />
<helpers>
<digitab_brandlogo>
<class>Digitab_Brandlogo_Helper</class>
</digitab_brandlogo>
</helpers>
</global>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<digitab_brandlogo before="Mage_Adminhtml">Digitab_Brandlogo_Adminhtml</digitab_brandlogo>
</modules>
</args>
</adminhtml>
</routers>
</admin>
<adminhtml>
<layout>
<updates>
<brandlogo>
<file>brandlogo.xml</file>
</brandlogo>
</updates>
</layout>
</adminhtml>
</config>
2。 app / code / local / Digitab / Brandlogo / etc / adminhtml.xml 以下是config.xml
的代码必须如何。
<?xml version="1.0"?>
<config>
<menu>
<digitab translate="title" module="digitab_brandlogo">
<title>Digitab</title>
<sort_order>110</sort_order>
<children>
<brandlogo>
<title>Brand Logo</title>
<sort_order>1</sort_order>
<action>adminhtml/brandlogo/index</action>
</brandlogo>
</children>
</digitab>
</menu>
</config>
位置:app / design / frontend / adminhtml / default / default / layout / brandlogo.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<adminhtml_brandlogo_index>
<reference name="content">
<block type="digitab_brandlogo/adminhtml_brandlogo" name="brandlogo" template="test.phtml"/>
</reference>
</adminhtml_brandlogo_index>
</layout>
位置:app / design / frontend / adminhtml / default / default / template / test.phtml
看起来很好。
我已在本地计算机上检查过此代码。在此处找到屏幕截图:
请告诉我这是否适合您。
注意::在我的答案中遵循确切的命名公约和文件夹名称以及此处提及的代码
快乐编码......
答案 1 :(得分:3)
这里有一些问题,我将逐步浏览每个文件。
<强> Digitab_Brandlogo.xml 强>
一切都很好。
<强> logo.php 强>
唯一不对的是你的文件名与你的类名(logo!= slider)不同。只需将文件名更改为类名,反之亦然,您应该对此文件有所了解。另外,将类和文件名的第一个字母设为大写。
<强> IndexController.php 强>
与logo.php相同的是,您已经将该文件命名为与该类不同,但是您要将这个文件名更改为类名,因为您已经在很多其他文件中使用了它。文件名应为BrandlogoController.php
<强> config.xml中强>
因为您定义了一个块,所以您希望在全局范围内定义块。
替换
<blocks />
用这个:
<blocks>
<digitab_brandlogo>
<class>Digitab_Brandlogo_Block</class>
</digitab_brandlogo>
</blocks>
然后,在您的路由器下,您希望确保Brandlogo像这样大写:
<digitab_brandlogo>
<use>admin</use>
<args>
<module>Digitab_Brandlogo</module>
<frontName>brandlogo</frontName>
</args>
</digitab_brandlogo>
<强> adminhtml.xml 强>
您的动作就是您想要在控制器中击中的动作。这个(在管理员控制器上)的设置是adminhtml / module_controller_action(如果你停止操作它默认为索引),所以在这种情况下你希望它是这样的:
<action>adminhtml/brandlogo_brandlogo</action>
<强> Data.php 强>
一切都很好。
<强> brandlogo.xml 强>
您的代码需要格式为adminhtml_module_controller_action,所以我们将其更改为以下内容:
<adminhtml_brandlogo_brandlogo_index>
然后在这一行:
<block type="brandlogo/adminhtml_brandlogo" name="brandlogo" template="test.phtml"/>
您正在尝试使用虚构的块类型。还记得早些时候我们将块命名为Logo或Slider吗?这在这里发挥作用,因为它应该是您用于“类型”的文件路径。所以它看起来应该是以下之一:
如果您选择了滑块
<block type="brandlogo/adminhtml_slider" name="brandlogo" template="test.phtml"/>
如果您选择徽标
<block type="brandlogo/adminhtml_logo" name="brandlogo" template="test.phtml"/>
<强> test.phtml 强>
一切都很好。
希望这有帮助!