Автор Тема: Новое поле у товара и характеристи товара  (Прочитано 733 раз)

16 Сентября 2014, 12:18:06
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Добрый день.

Опять вернулся к этому вопросу. Подскажите, если я добавлю новое поле для товара, например 'color', и с помощью таблицы импорта залью товары уже с этим новым полем, изменится ли это поле в характеристиках товара, если я эту характеристику создам перед импортом и назначу ей существующие значения?
16 Сентября 2014, 12:52:25
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1012
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В характеристиках ничего не измениться. Вы же создатите новое поле, которое не зависит от атрибутов и характеристик.
16 Сентября 2014, 15:52:33
Ответ #2
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
А можно ли сделать так, чтобы данные из нового созданного  поля в таблице импорта записались в эти характеристики, такое возможно?
16 Сентября 2014, 15:57:06
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1280
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Нет. Не логично такое. Если вам нужна новая характеристика, то зачем создавать дополнительное поле?
16 Сентября 2014, 16:06:44
Ответ #4
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Просто для большого количества товаров менять(создавать) их характеристики займет очень много времени. Можно изменять характеристики товаров пакетно?
16 Сентября 2014, 16:11:07
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1012
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Писали же уже, модули есть для массового изменени orliuqe, dma.
16 Сентября 2014, 16:13:07
Ответ #6
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
16 Сентября 2014, 23:03:28
Ответ #7
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Здравствуйте.

Делаю добавление поля в таблицу импорта по этапам которые указаны здесь
http://prestashop-forum.ru/index.php/topic,2835.msg14964.html#msg14964 и застрял на  пункте №3 и №5 .

№3
Может вопрос покажется вам простым(я учусь). Подскажите пожалуйста, что нужно указывать в значения переменных (там где знаки вопроса)?
Как указать в значении переменной ее сохранение в контроллер(если например это поле 'color')?

if(isset($this->product->myvar) && $this->product->myvar)
 {
       // делаем что-то с новым полем
       $myvar = ?;  ???
             
       else
       {
              // если нет значения, то делаем ...
              $myvar = ?; ???
       }

№5 - Для показа нового поля в админке

в методе renderForm
fields_to_copy = array(...,$myvarв методе initFormInformations
// global informations
array_push(..., 'myvar'
Подскажите, что нужно указывать вместо '...'  ?

17 Сентября 2014, 10:16:32
Ответ #8
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
Ничего не нужно вставлять. "..." - это данные которые уже есть в файле и к ним нужно добавить новую переменную.
17 Сентября 2014, 10:36:07
Ответ #9
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Я наверное что-то не до конца понимаю. Так что именно должно быть вместо '...', я должен что-то там указать? Откуда взять эти значения для указания вместо '...', в каком файле?
17 Сентября 2014, 11:22:21
Ответ #10
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
Цитировать
Ничего не нужно вставлять. "..." - это данные которые уже есть в файле
В теме "Prestashop FAQ - как добавить новое поле к товару" все написано.
1. Добавить новое поле в таблицу ps_product_lang
2. Добавить новое поле в класс Product.php
3. Добавить проверку и сохранение нового поля в контроллер ProductController.php
4. Добавить новое поле в шаблон product.tpl.
5. Добавить новое поле в AdminProductsController.php

Цитировать
№5 - Для показа нового поля в админке
Что не понятно?
Открыли файл  AdminProductsController.php нашли функцию renderForm
/**
 * renderForm contains all necessary initialization needed for all tabs
 *
 * @return void
 */
public function renderForm()
{
и добавили свою переменную
$this->tpl_form_vars['myvar'] = $myvar;можно после
$this->tpl_form_vars['id_product'] = $id_product;
17 Сентября 2014, 13:13:27
Ответ #11
  • Старожил
  • ****
  • Сообщений: 299
  • Репутация: +0/-0
  • Новичек
    • Просмотр профиля
Спасибо за совет, уже пробую.
27 Апреля 2015, 22:46:15
Ответ #12
  • Новичок
  • *
  • Сообщений: 23
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте. Я нашёл эту нужную для меня тему и не пойму шаг №3. Объясните пожалуйста и мне. Вот мой код:
if(isset($this->product->sostav) && $this->product->sostav)
       {
              $sostav = ...;  - что нужно здесь указать?
       else
       {
              $sostav = ...; - что нужно здесь указать?
       }
Если это данные которые уже есть в файле и к ним нужно добавить новую переменную то где они?   :'(

Вот нашёл такой код, он похож чем-то:
if (isset($this->category->id) && $this->category->id)
$return_link = Tools::safeOutput($this->context->link->getCategoryLink($this->category));
else
$return_link = 'javascript: history.back();';
Пол дня уже смотрю на эту хрень и не могу понять. Спасибо за помощь.
28 Апреля 2015, 09:15:58
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 1280
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Если вы ничего не делаете с данными (кроме сохранения и показа), то шаг 3 можно пропустить.
В этом шаге идут какие-нибудь действия перед сохранением в бд.
28 Апреля 2015, 13:53:47
Ответ #14
  • Новичок
  • *
  • Сообщений: 23
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
 :) так это же другое дело. Теперь ЯСНО. Спасибо. Но шаг №5 обязателен если я просто сохраняю и показываю данные?