将自定义图标添加到 Prestashop 中的订单列表视图

Add custom icon to orders' list view in Prestashop

我想在订单的列表视图中添加新按钮,但我不知道该怎么做:

我想以新升级不会删除它的方式来做。

编辑:这个新按钮只会打开新浏览器 window,因此它完全独立于 PrestaShop 功能。但是我想把它放在这个工具栏行中。

感谢您的帮助!

您可以使用覆盖来做到这一点。在 overrides/controllers/admin/ 文件夹中创建一个名为 AdminOrdersController.php 的文件,并添加以下内容:

<?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,[=16] =] 和 renderMyCustomAction 方法。我会把它们留在我原来的回复中,以防其他人觉得它有用。