在Prestashop 1.7

时间:2017-10-13 10:16:22

标签: php prestashop prestashop-1.7

我已经为Prestashop 1.7创建了一个模块,以便在Admin Product页面中添加一个新字段。 由于缺乏适当的文档,我想问一下添加自定义字段的正确方法,一个选择。 我想保存并更新产品保存。

我使用下面的代码添加包含表单的tpl

public function hookDisplayAdminProductsExtra($ params){     $这 - > smarty的;

$available_items = $this->getAvailableBadges();
$id_product  = Tools::getValue('id_product');

$this->context->smarty->assign('items_number', $available_items);
return $this->display(__FILE__, '/views/templates/admin/admin_products.tpl');

}

问题是我不知道如何覆盖Product.php类以获得我的$字段以及如何为tpl创建表单元素。

我想创建的表单我就是那样

<select name="" id="">
           {foreach from=$items_number item=option}
               <option value="{$option}">
                   {$option}
               </option>
           {/foreach}
        </select>

很抱歉缺少信息,但我发现创建模块的新方法非常混乱。提前致谢

1 个答案:

答案 0 :(得分:0)

要覆盖Product类:

在override / classes /

中创建文件“ Product.php”

并添加以下内容:

//override the class
class Product extends ProductCore {
    //add your attribute
    public $field_name;

    //override the construct function
    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, \Context $context = null) {

        //add your custom field to the array $definitions['fields']
        self::$definition['fields']['field_name'] = [
            'type' => self::TYPE_STRING,
            'lang' => true, //if you have multiple languages on your site
            'required' => false,
            'size' => 255
        ];
    }
}

然后,在数据库中添加一个新条目;如果lang设置为false,则在ps_product中添加“ field_name”;如果lang设置为true,则在ps_product_lang中添加一个新条目。

您有不同的类型:“ TYPE_STRING”,“ TYPE_HTML”,“ TYPE_BOOL”,“ TYPE_INT”,...我不知道详尽的列表。 根据您选择的类型,您必须在数据库中创建正确的列类型(“ VARCHAR”,“ TEXT”,....)

可以在论坛(stackoverflow,https://www.prestashop.com/forums/)中找到一些好的文档,也可以在类似这样的博客中找到:https://www.h-hennes.fr/blog/