Автор Тема: Добавить поля в списке товаров в заказе  (Прочитано 88 раз)

09 Июня 2016, 14:54:51
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добавлял в список товаров новое поле, и кроме id\product_name\price и т.д. добавил поле описания, тут мне помогли вот так это выглядит
"В контроллере /controllers/admin/AdminProductsController.php нужно добавить колонку для описания"
$this->fields_list['description_short'] = array(
            'title' => $this->l('Description'),
            'callback' => 'getDescriptionClear'
        );
....
public static function getDescriptionClear($description_short)
{
  return strip_tags($description_short);
}
И нужно тоже самое сделать со списком заказанных товаров, т.е. если пройти по вкладке заказы и выбрать там любой товар купленный клиентом, прокрутив страницу вниз будет список им купленных товаров и в этот список нужно добавить тот же код что и сверху, но я просто не знаю какой контроллер за это отвечает .
09 Июня 2016, 18:44:33
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1190
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В адресе страницы есть навзание контроллера. Для заказов это /controllers/admin/AdminOrdersController.php
10 Июня 2016, 09:58:58
Ответ #2
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В адресе страницы есть навзание контроллера. Для заказов это /controllers/admin/AdminOrdersController.php
Вот это отличная инфа, спасибо, а я все думал где бы найти норм структуру файлов престы
10 Июня 2016, 12:10:14
Ответ #3
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Получилось все сложнее чем ожидалось, в контроллере в начале определены поля для колонок всех заказов, а мне нужно внести изменения на странице самого заказа, а это вообще не понятно в каких кишках этого контроллера, более того опять нужно парится с созданием нового поля, чертово description_short! Оно же открытое поле в классе, почему его нельзя воткнуть? Уже сил нету, придется в бога уверовать.
10 Июня 2016, 12:18:58
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 20836
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Ну и что оно есть в классе. Нужно же еще что-то делать с этой переменной при редактировании. А это делается в контроллере AdminOrdersController в
методе ajaxProcessEditProductOnOrder.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
10 Июня 2016, 12:29:47
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
Вобщето вам уже давали ссылку на тему как добавлять поля.
http://prestashop-forum.ru/index.php/topic,2835.msg14964.html
Все подробно рассписано. Должны быть изменены
1. Таблица
2. Класс
3. Контроллер
4. Шаблон
Табл. + класс вы поменяли.
Осталось контроллер (PrestaMan уже написал какой) и шаблон /admin/themes/default/template/controllers/orders/helpers/view/view.tpl
10 Июня 2016, 12:31:07
Ответ #6
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ну и что оно есть в классе. Нужно же еще что-то делать с этой переменной при редактировании. А это делается в контроллере AdminOrdersController в
методе ajaxProcessEditProductOnOrder.
так суть в том что пытаешься что-то делать с этим поле оно выдает ошибку и вообще не хочет с ним работать, хоть 100 раз его определи, я сначала пытался в пдф воткнуть это, но не вышло потом решил сделать хотя бы, чтобы поле отображалось в заказе, но та же самая фигня, хотя например добавив поле в список товаров в "заказы" не было проблем вообще, а все дело в том, что я это добавил в AdminProductsController.php и он привязан как-то к классу Products.php в котором есть поле description_short, а добавив это поле в AdminOrdersController.php оно не работает, потому что оно как-то связано таким же образом с  классом OrderDetail.php в котором нет поля description_short, когда я это поле определил и добавил в бд оно появилось, но не заполняется $products.description_short. Тогда последний вопрос и я сдаюсь вот это  $this->product_description = $product['description_short']; я должен добавить в контроллер или в класс?
10 Июня 2016, 12:53:38
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
$products.description_shortэто неправльная запись.

$productsэто массив (s на конце), в нем отдельные $product, вот у них можно присвоить значение description_short.
10 Июня 2016, 13:00:05
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 20836
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Тогда последний вопрос и я сдаюсь вот это  $this->product_description = $product['description_short']; я должен добавить в контроллер или в класс?
В класс OrderDetailCore в начале определение переменной и описание ее для бд.

В метод класса
protected function create(...)
{
       $this->product_description = $product['description_short'];
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
10 Июня 2016, 13:39:31
Ответ #9
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Тогда последний вопрос и я сдаюсь вот это  $this->product_description = $product['description_short']; я должен добавить в контроллер или в класс?
В класс OrderDetailCore в начале определение переменной и описание ее для бд.

В метод класса
protected function create(...)
{
       $this->product_description = $product['description_short'];
Вроде работает, ну как работает, хотя бы пдф уже делает без ошибки, но поле это пустое, в бд пустое тоже, мб нужно обновить все поля каким-то запросом в бд. Или следующие заказы уже будут заполнять ее?