Я добавил поле «mystock» в таблицу продуктов базы данных prestashop. Теперь я хочу отобразить/отредактировать это поле на странице редактирования продукта. Это также будет обновление, когда продукт будет обновляться.
добавить поле на страницу редактирования продукта в администраторе prestashop
Ответы (5)
Этот процесс требует некоторой работы по шагам. Ниже я их перечислил.
1) Откройте классы/Product.php. Поместите public $mystock в список свойств класса, который вы увидите после запуска класса.
2) Внизу файла найдите public static $definition = array( , это будет длинный массив. Найдите в нем 'fields' => array(, а там вы увидите все поля базы данных, размещенные с проверкой, типами данных и т. д. Поместите свой mystock в этот массив в качестве другого элемента и поместите правильные проверки и типы данных, как для других полей.
3) Теперь откройте adminFolder/themes/default/template/controllers/products/informations.tpl и поместите свое поле с правильным именем и идентификатором в соответствующее место. Обратите внимание, что имя поля/идентификатор должны совпадать с именем поля базы данных и тем, которое мы добавили в классе Products.php.
Вот и все, надеюсь, вы понимаете процесс и заставите его работать.
Спасибо
у меня это работает на prestashop 1.5.4
добавьте файл Product.php в \override\classes, содержащий:
<?php
Product::$definition['fields']['mystock'] = array('type' => ObjectModel::TYPE_INT, 'validate' => 'isUnsignedInt');
class Product extends ProductCore
{
public $mystock;
}
... предположим, вам нужно поле для ввода числа.
затем 3) ответа альтафхуссейна
не забудьте добавить свое поле в БД, для числового поля:
ALTER TABLE ps_product
ADD mystock
INT NOT NULL;
ps v1.5.6.1
- person Smash; 18.01.2014
Я наткнулся на эту статью и построил свой компонент на ее основе, и это кажется самым чистым решением: http://nemops.com/prestashop-products-new-tabs-fields/ в основном описывает, как сделать модуль, который добавляет многоязычное поле в пользовательскую панель на странице редактирования товара..
НЕ нужно редактировать шаблоны, основные файлы или добавлять файлы переопределения.
Спасибо, Альтафхуссейн. Вы должны добавить свое поле в таблицы «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) добавьте файл Product.php в \override\classes, содержащий:
<?php
Product::$definition['fields']['mystock'] = array('type' => ObjectModel::TYPE_INT, 'validate' => 'isUnsignedInt');
class Product extends ProductCore
{
public $mystock;
}
2) откройте adminFolder/themes/default/template/controllers/products/informations.tpl и поместите свое поле с правильным именем и идентификатором в соответствующее место.
3) удалить файл cache/class_index.php
4) добавьте свое поле в БД, для числового поля:
ALTER TABLE ps_product ADD mystock INT NOT NULL;
[Спасибо Bell418 за 1) и 4) и Альтафу Хуссейну за 2)]