Magento>后端>新菜单项需要特定操作 - >我该怎么做?

时间:2010-10-15 22:25:39

标签: php xml layout magento admin

我在后端创建了一个新菜单,并添加了一些孩子。其中一个名为“管理页面”的子项必须检索与以“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


好的,也许我可以尝试解决问题。

如何在后端创建“管理产品”页面的副本,该页面是在特定属性集上过滤的?

1 个答案:

答案 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()定义了网格右上方显示的操作下拉框。

几乎所有管理页面都以与此相同的方式工作。要制作自己的,你需要;

  1. 为您的模块注册控制器。以下是overloading controllers
  2. 的指南
  3. 为控制器提供动作以呈现布局。
  4. 在“app / design / adminhtml / default / layout”目录中创建一个布局文件,并将其注册到“config.xml”中,以便它得到尊重。它必须有一个与您的路线,控制器和行动相匹配的部分。
  5. 添加块以显示网格小部件。该示例以编程方式创建,但也可以在布局文件中完成。
  6. 扩展Mage_Adminhtml_Block_Widget_Grid以制作自己的阻止。
  7. 添加_prepareColumns()_prepareCollection()方法,您可以在该方法中进行数据库访问,并根据您的要求过滤结果。
  8. 可以找到另一个相关指南here。事实上,请查看Magento wikiknowledgebase以获取更多信息。以上不是一套完整的说明,此后还有很多东西需要学习。