我在后端创建了一个新菜单,并添加了一些孩子。其中一个名为“管理页面”的子项必须检索与以“CMS_”开头且不应具有价格列的属性集对应的所有产品。
到目前为止我已经这样做了:
app / code / community / Mycompany / Content / etc / config.xml
<?xml version="1.0"?>
<config>
<modules>
<Mycompany_Content>
<version>0.1.0</version>
</Mycompany_Content>
</modules>
<adminhtml>
<menu>
<newmenu translate="title">
<title>Content</title>
<sort_order>31</sort_order>
<action>adminhtml/newmenu/</action>
<children>
<newchildmenu translate="title">
<title>Manage Pages</title>
<action>adminhtml/newmenu/</action>
</newchildmenu>
<newchildmenu1 translate="title">
<title>Manage Attributes</title>
<action>adminhtml/catalog_product_attribute</action>
</newchildmenu1>
<newchildmenu2 translate="title">
<title>Manage Categories</title>
<action>adminhtml/catalog_category/</action>
</newchildmenu2>
</children>
</newmenu>
</menu>
</adminhtml>
</config>
app / etc / modules / Mycompany_Content.xml
<?xml version="1.0"?>
<config>
<modules>
<Mycompany_Content>
<active>true</active>
<codePool>community</codePool>
</Mycompany_Content>
</modules>
</config>
再一次,这就是我想要的: - 当我按下“管理页面”时,我希望被发送到“管理产品”页面,该页面按照一组特定的属性进行过滤 - 名称以“CMS_”开头且没有价格列的属性集。
我该怎么做?
提前致谢! HT
好的,也许我可以尝试解决问题。
如何在后端创建“管理产品”页面的副本,该页面是在特定属性集上过滤的?
答案 0 :(得分:2)
正如艾伦正确地指出,这个网站不是为了让他们为他们工作,但如果你愿意帮助自己,那么社区可以提供线索。为此,这是学习如何做的一般方法。
从查看现有的管理产品开始,URL显示路径以“/ admin / catalog_product / index /”开头。网址使用route/controller/action格式,因此我们可以推断出责任人为Mage_Adminhtml_Catalog_ProductController
且方法为indexAction
。
(“admin”路由到“Adminhtml”,“catalog_product”成为“Catalog”文件夹和“ProductController”文件)
方法indexAction
包含对loadLayout()
和renderLayout()
的调用,这是对正在使用布局文件的肯定信号。我们的下一个线索是“app / design / adminhtml / default / layout / catalog.xml”。
catalog.xml的第一部分是<adminhtml_catalog_product_index>
,幸运地与之前的路径匹配。在它的“内容”中,它会创建一个类型为“adminhtml / catalog_product”的块,这将解析为Mage_Adminhtml_Block_Catalog_Product
。
在检查时,它具有_prepareLayout()
方法,就像在输出页面之前调用它的所有块一样。此方法添加“添加产品”按钮和“adminhtml / catalog_product_grid”中的块。
您可以通过查看页面看到网格与admin中所有其他网格的格式相同。课程Mage_Adminhtml_Block_Catalog_Product_Grid
扩展Mage_Adminhtml_Block_Widget_Grid
,它完成了制作网格的所有艰苦工作。只需要做一些小的改动就可以使它发挥作用。
此处的重要方法是_prepareCollection()
和_prepareColumns()
。还有_prepareMassaction()
定义了网格右上方显示的操作下拉框。
几乎所有管理页面都以与此相同的方式工作。要制作自己的,你需要;
Mage_Adminhtml_Block_Widget_Grid
以制作自己的阻止。_prepareColumns()
和_prepareCollection()
方法,您可以在该方法中进行数据库访问,并根据您的要求过滤结果。 可以找到另一个相关指南here。事实上,请查看Magento wiki和knowledgebase以获取更多信息。以上不是一套完整的说明,此后还有很多东西需要学习。