prestashop后台自定义模块模板列表或覆盖模块

时间:2016-11-08 09:08:14

标签: templates module admin prestashop

由于ps文档相当简单,所以想知道是否有人解决了subj的问题。

有最后一个稳定的ps。 1.6.1.7做了很多模块......

需要帮助(自定义表[创建]:好的,自定义列表[排序,过滤]:OK):当我点击一行时(subq:添加" addRowAction()"生成同样......),想看到另一个控制器编辑/更新页面 - 特别是:controller = adminproduct& updateproduct ...给出了id_product,但也不知道如何传递:。

特别地:订购产品(自己的模块,自己的列表)的列表想要隐藏它自动提供的链接。我确信这很简单,但还没有找到解决方案......

最大的问题是:如何覆盖(必须复制到我的模块结构中?)列表助手,任何其他助手......或者需要编写一个完整的.tpl来获得上面的函数... < / p>

1 个答案:

答案 0 :(得分:0)

好吧,为我的q实施了丑陋的解决方案。 (带代码:)):

  

_construct()的一部分......:

    $this->fields_list = array();
    $this->fields_list['id_order'] = array(
        'title' => $this->l('Order ID'),
        'align' => 'center',
        'class' => 'fixed-width-xs',
        'type' => 'int'
    );
    $this->fields_list['product_reference'] = array(
        'title' => $this->l('Product reference'),
        'filter_key' => 'product_reference',
    );
    $this->fields_list['product_name'] = array(
        'title' => $this->l('Name'),
        'filter_key' => 'product_name'
    );
    $this->fields_list['product_quantity'] = array(
        'title' => $this->l('Pices'),
        'filter_key' => 'product_quantity'
    );
    $this->fields_list['total_price_tax_incl'] = array(
        'title' => $this->l('Full price incl. tax.'),
        'filter_key' => 'total_price_tax_incl',
        'type' => 'int'
    );

    $this->_join .= ' LEFT JOIN `' . _DB_PREFIX_ . 'orders` b ON ( a.`id_order` = b.`id_order` )';
    $this->_select .= ' b.`date_add`,';
    $this->fields_list['date_add'] = array(
        'title' => $this->l('Added'),
        'filter_key' => 'b!date_add',
    );

    $this->_join .= ' LEFT JOIN `' . _DB_PREFIX_ . 'vatera_kl_order` c ON (c.`id_order` = b.`id_order` )';
    $this->_select .= ' c.`status` AS vstatus, ';
    $this->fields_list['vstatus'] = array(
        'title' => $this->l('Vatera status'),
        'filter_key' => 'c!status'
    );

    $this->_group .= 'GROUP BY `id_order`';

    $this->_orderBy = 'id_order';
    $this->_orderWay = 'DESC';

    parent::__construct();//ddd($this);
  

一个私有函数,获取id_product(order_details中的product_id),以及重写的initContent()来执行丑陋的重定向......:

private function getPidFromODID($odid) {
    $q = 'SELECT `product_id` FROM `' . _DB_PREFIX_ . 'order_detail` WHERE `id_order_detail` = ' . $odid;
    $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(
        $q
        );
    return $result[0]['product_id'];
}

public function initContent()
{
    if ($this->display == 'edit') {
        $admin = explode(DIRECTORY_SEPARATOR,_PS_ADMIN_DIR_);
        $admin_folder = array_pop((array_slice($admin, -1)));
        Tools::redirect(
            _PS_BASE_URL_ . '/' . $admin_folder . '/' . $this->context->link->getAdminLink('AdminProducts') . '&id_product=' . (int)$this->getPidFromODID(Tools::getValue('id_order_detail')) . '&updateproduct');
    }
    else
        parent::initContent();
}

所以,最初的问题是问题......一个很好的方法,来覆盖列表行为......