добавете поле в страницата за редактиране на продукта на prestashop admin

Добавих поле "mystock" в продуктовата таблица на базата данни на prestashop. Сега искам да покажа/редактирам това поле в страницата за редактиране на продукта. Също така се актуализира, когато продуктът се актуализира.


person user1493023    schedule 18.03.2013    source източник


Отговори (5)


Този процес изисква известна работа на стъпки. По-долу съм ги изброил.

1) Отворете класове/Product.php. Поставете public $mystock; в списъка със свойства на класа, който можете да видите след стартирането на класа.

2) Надолу във файла намерете public static $definition = array(, това ще бъде дълъг масив. Намерете 'fields' => array() в него и там ще видите всички полета на базата данни, поставени с валидиране, типове данни и т.н. Поставете вашия mystock там в този масив като друг елемент и поставете правилните валидации и типове данни, както са поставени за други полета.

3) Сега отворете adminFolder/themes/default/template/controllers/products/informations.tpl и поставете вашето поле с правилното име и id на подходящото място. Моля, обърнете внимание, че името/идентификационният номер на полето трябва да е същото като името на db полето и това, което добавихме в класа Products.php.

Това е, надявам се, че разбирате процеса и ще го накарате да работи.

Благодаря ти

person Altaf Hussain    schedule 19.03.2013
comment
Здравей altafhussain, благодаря за отговора и е полезен за мен, сега съм изправен пред нов проблем. когато отида на редактиране на продукт, той ми дава грешка. Този удобен за поле URL адрес се изисква поне на английски (английски) и не показва бутон за запазване, помогнете ми - person user1493023; 19.03.2013
comment
Искам да ви кажа, че добавих продукти директно в таблицата - person user1493023; 19.03.2013
comment
Пренаписване на връзка или други задължителни полета са необходими само за езика по подразбиране на сайта. Мисля, че сте добавили продукти, но не сте добавили подробности за продукта като пренаписване на връзка в таблицата product_lang, или ако сте ги добавили, значи не сте ги добавили за езика по подразбиране като английски. Проверете това, моля - person Altaf Hussain; 20.03.2013

това работи за мен на 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) от отговора на altafhussain

не забравяйте да добавите вашето поле към DB, за числово поле:
ALTER TABLE ps_product ADD mystock INT NOT NULL;

person Bell418    schedule 27.05.2013
comment
този отговор е по-добър, имате по-добри шансове актуализацията на prestashop да не наруши функционалността ви - person tXK; 21.07.2013
comment
ТОВА НЕ РАБОТИ, ако е в класовете за заместване на модула! Направих разследвания за това и определено е грешно :( ps v1.5.6.1 - person Smash; 18.01.2014

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

НЯМА нужда да редактирате шаблони, основни файлове или да добавяте заместващи файлове.

person YangombiUmpakati    schedule 22.10.2013

Благодаря 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;

Използвам ps 1.6.0.6

person user1624951    schedule 10.09.2015

Най-доброто комплексно решение в четири стъпки е:

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 и поставете вашето поле с правилното име и id на подходящото място.

3) изтрийте файла cache/class_index.php

4) добавете вашето поле към DB, за числово поле:

ALTER TABLE ps_product ADD mystock INT NOT NULL;

[Благодаря на Bell418 за 1) и 4) и на Алтаф Хюсеин за 2)]

person Onireon    schedule 07.04.2016