我想在 magento admin 的产品网格页面中的“添加产品”按钮旁边添加一个导入按钮和一个文件浏览按钮。
当用户选择一个文件并单击 Import 按钮时,我会将文件上传到 var/import,打开一个新选项卡并运行导入配置文件。
如何将表单(导入按钮 + 文件浏览字段)添加到网格顶部?
谢谢
使用 XML 布局为产品网格容器块设置自定义模板,并在其中添加自定义表单块。您需要为此扩展adminhtml_catalog_product_index
布局句柄:
<adminhtml_catalog_product_index>
<reference name="product_list">
<!-- Set your custom template -->
<action method="setTemplate"><template>path/to/your_template.phtml</template></action>
<!-- Add your custom block -->
<block name="import_form" as="import_form" type="your_module/form_block_name"></block>
</reference>
</adminhtml_catalog_product_index>
然后你需要定义你的块和模板。您的自定义块应该扩展自Mage_Adminhtml_Block_Widget_Form
,模板应该是一个副本,adminhtml/default/default/template/catalog/product.phtml
但要进行修改以显示您的自定义块,如下例所示:
<div class="content-header">
<table cellspacing="0">
<tr>
<td style="width:50%;"><h3 class="icon-head head-products"><?php echo Mage::helper('catalog')->__('Manage Products') ?></h3></td>
<td class="a-right">
<?php echo $this->getButtonsHtml() ?>
</td>
</tr>
</table>
</div>
<!-- Start of Displaying of your custom import form -->
<?php echo $this->getChildHtml('import_form');?>
<!-- End of Displaying of your custom import form -->
<?php if( !$this->isSingleStoreMode() ): ?>
<?php echo $this->getChildHtml('store_switcher');?>
<?php endif;?>
<div>
<?php echo $this->getGridHtml() ?>
</div>
嗨,这是正确的使用Mage_Adminhtml_Block_Widget_Container::addButton()
方法&这里是语法
$data = array(
'label' => 'Import Zipcode Data',
'onclick' => "setLocation('".$this->getUrl('*/*/import')."')"
);
$this->addButton ('import_zip_code', $data, 0, 100, 'header', 'header');
当然,您可以拥有任何您想要的按钮标签和 ID。setLocation
允许您在单击此按钮时设置您想去的目标。
你可以用它Mage_Adminhtml_Block_Widget_Container::addButton()
来做到这一点。在 magento 的代码中搜索对该函数的调用以查看它应该如何使用,创建您自己的容器块,使用布局文件将产品的 magento 容器块替换为它,然后您就完成了。