我想在订单列表视图中添加新按钮,但我不知道该怎么做:
我希望新升级不会删除它。
编辑:这个新按钮只会打开新的浏览器窗口,因此它完全独立于PrestaShop功能。但我想把它放在这个工具栏中。
感谢您的帮助!
答案 0 :(得分:2)
你可以用覆盖来做到这一点。在AdminOrdersController.php
文件夹中创建名为overrides/controllers/admin/
的文件,并添加以下内容:
<?php
class AdminOrdersController extends AdminOrdersControllerCore
{
public function initPageHeaderToolbar()
{
parent::initPageHeaderToolbar(); // this will assign native icons
// This is where you add you custom icon
$this->page_header_toolbar_btn['my_custom_icon'] = array(
'href' => self::$currentIndex.'&mycustomaction&token='.$this->token,
'desc' => $this->l('My custom action', null, null, false),
'icon' => 'process-icon-save'
);
}
public function initProcess()
{
parent::initProcess();
if (Tools::getIsset('mycustomaction')) {
if ($this->tabAccess['view'] === '1') {
$this->display = 'mycustomaction';
$this->action = 'mycustomaction';
}
else
$this->errors[] = Tools::displayError('You do not have permission to edit this.');
}
}
public function initContent()
{
parent::initContent();
if ($this->display == 'mycustomaction')
$this->content.= $this->renderMyCustomAction();
}
public function renderMyCustomAction()
{
// this is where you render your custom page.
}
}
请注意,这是一个快速模拟。它应该工作,但是:)
<强>更新强>
如果您只想让图标打开新页面,只保留initPageHeaderToolbar
方法并提供正确的href
属性,则可以删除initProcess
,initContent
和renderMyCustomAction
方法。我将把它们保留在我的原始回复中,以防其他人认为它有用。