Схема добавления нового поля (общая для всех, не только для товара)
1. Добавить новое поле в таблицу
ALTER TABLE `ps_product_lang`ADD COLUMN `myvar` VARCHAR(255) NULL DEFAULT NULL
2. Добавить новое поле в класс.
Для товара, в файл /classes/Product.php добавляем
public $myvar;
public static $definition = array(
'table' => 'product',
'primary' => 'id_product',
'multilang' => true,
'multilang_shop' => true,
'fields' => array(
// Classic fields
// после всех переменных
...........
'myvar' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
3. Добавить проверку и сохранение нового поля в контроллер.
Для товара, в файл /controllers/front/ProductController.php
public function initContent()
{
parent::initContent();
if (!$this->errors)
{
........
// в конце
if(isset($this->product->myvar) && $this->product->myvar)
{
// делаем что-то с новым полем
$myvar = ...;
else
{
// если нет значения, то делаем ...
$myvar = ...;
}
.....
$this->context->smarty->assign('new_champ', $myvar);
4. Добавить новое поле в шаблон.
Для товара, в файл /themes/ваша тема/product.tpl там где нужно показать новое значение
{$new_champ}
5. Для показа нового поля в админке
В файле AdminProductsController.php в методе copyFromPost
$object->myvar = Tools::getValue('myvar');
в методе renderForm
fields_to_copy = array(...,$myvar
для prestashop 1.6
tpl_form_vars['myvar'] = $myvar;
в методе initFormInformations
// global informations
array_push(..., 'myvar'
В файле admin/themes/default/template/controllers/products/informations.tpl там где нужно показать новое значение
{$myvar}
Результат во вложении.