2013-03-18 3 views
0

У меня есть поле «mystock» в таблице продуктов базы данных prestashop. Теперь я хочу отобразить/отредактировать это, зарегистрированное на странице редактирования продукта. Он также будет обновляться, когда продукт будет обновляться.добавить поле в правление страницы продукта prestashop admin

ответ

4

Этот процесс требует некоторой работы по этапам. Ниже я их перечислил.

1) Открытые классы/Product.php. Место public $ mystock; в списке свойств класса, который вы можете увидеть после запуска класса.

2) Вниз файл, найти общественного статическую $ определения = массив (, это будет длинный массивом. Найти => массива «полей» ( в нем, и вы увидите всю базу данных поля, помещенные в валидацию, типы данных и т. д. Поместите свой танец в этом массиве в качестве другого элемента и поместите правильные проверки и типы данных, например, для других полей.

3) Теперь откройте adminFolder/themes/default/template/контроллеры/продукты/informations.tpl и поместите свое поле с правильным именем и идентификатором в соответствующем месте. Обратите внимание, что имя/идентификатор поля должны быть одинаковыми, как db fiel d имя и тот, который мы добавили в классе Products.php.

Thats it, Надеюсь, вы поймете этот процесс и заставит его работать.

Спасибо

+0

Hi altafhussain, спасибо за ответ, и это полезно для меня, теперь я столкнулся с новой проблемой. , когда я иду к редактированию продукта, дайте мне ошибку «Этот полевой URL-адрес требуется хотя бы на английском (английском)» и не показывать кнопку сохранения помогите мне – user1493023

+0

Я хочу сказать вам, что я непосредственно добавляю продукты в таблицу – user1493023

+0

Ссылка переписать или любые другие обязательные поля требуются только для языка сайта по умолчанию. Я думаю, что вы добавили продукты, но не добавили данные о продукте, такие как переписывание ссылок в таблице product_lang, или если вы их добавили, то вы не добавили их для стандартного langauge, такого как английский. Проверьте, пожалуйста, –

6

это работает для меня на PrestaShop 1.5.4

добавить файл product.php в \ переопределение \ классы, содержащие:

<?php 
    Product::$definition['fields']['mystock'] = array('type' => ObjectModel::TYPE_INT, 'validate' => 'isUnsignedInt'); 
    class Product extends ProductCore 
    { 
     public $mystock; 
    } 

... предположим, что вам нужно поле для ввода числа.

затем 3) ответа altafhussain в

не забудьте добавить поле к БД, для числового поля:
ALTER TABLE ADD ps_productmystock INT NOT NULL;

+1

этот ответ лучше, у вас есть лучшие шансы на обновление prestashop, чтобы не нарушить вашу функциональность. – tXK

+0

ЭТО НЕ РАБОТАЕТ, если оно находится в классах переопределения модулей! Я делал исследования для этого, и это определенно неправильно :('ps v1.5.6.1' – Smash

2

Я наткнулся на эту статью и построить свой компонент на его основе, и это, кажется чистым решение: http://nemops.com/prestashop-products-new-tabs-fields/ в основном описывает, как сделать модуль, который добавляет следующее поле в пользовательской панели на странице продукта для редактирования ..

НЕТ, нужно редактировать шаблоны, файлы ядра или добавлять файлы переопределения.

0

Спасибо, altafhussain. Вы должны добавить свое поле в таблицы «products_shop» и «products».

ALTER TABLE ps_product_shop ADD `mystock` int NOT NULL DEFAULT 0; 
ALTER TABLE ps_product ADD `mystock` int NOT NULL DEFAULT 0; 

Я использую пс 1.6.0.6

1

Лучшее комплексное решение в четырех шагов:

1) добавить файл product.php в \ переопределение \ классы, содержащие:

<?php 
Product::$definition['fields']['mystock'] = array('type' => ObjectModel::TYPE_INT, 'validate' => 'isUnsignedInt'); 
class Product extends ProductCore 
{ 
    public $mystock; 
} 

2) открыть adminFolder/themes/default/template/controller/products/information.tpl и поместите свое поле с правильным именем и идентификатором в соответствующем месте.

3) удалить файл кэша/class_index.php

4) добавить поле к БД, для числового поля:

ALTER TABLE ps_product ADD mystock INT NOT NULL; 

[Спасибо Bell418 за 1) и 4) и Альтаф Hussain for 2)]

Смежные вопросы