Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Opencart 3. Добавить новое поле в oc_ product_image


evxos
 Поделиться

Рекомендованные сообщения

Добрый день. Я новичок, стараюсь самостоятельно разобраться, но сейчас в тупике.
 
Нужно добавить поле описания для дополнительных изображений товара во вкладке "изображения".
 
Что я сделал. В admin\model\catalog\product.php строка 76 и 222 вставил (выделено):
  if (isset($data['product_image'])) {
      foreach ($data['product_image'] as $product_image) {
          $this->db->query("INSERT INTO " . DB_PREFIX . "product_image SET product_id = '" . (int)$product_id . "', image = '" . $this->db->escape($product_image['image']) . "', sort_order = '" . (int)$product_image['sort_order'] . "', language_id = '" . (int)$language_id . "', img_description = '" .  $this->db->escape($product_image['img_description']) . "'");
          }
    }

 

 
В admin\controller\catalog\product.php строка 1079:
$data['product_images'][] = array(
            'image' => $image,
            'thumb' => $this->model_tool_image->resize($thumb, 100, 100),
            'sort_order' => $product_image['sort_order'],
            'img_description' => $product_image['img_description']
         );

 

 
В admin\view\template\catalog\product_form.twig вставил поля с привязкой к языку (на сайте два языка)
<td class="text-right">{% for language in languages %}
                      <div class="input-group"><span class="input-group-addon"><img src="language/{{ language.code }}/{{ language.code }}.png" title="{{ language.name }}" /></span>
                        <textarea name="product_image[{{ image_row }}][{{ language.language_id }}][img_description]" rows="5" placeholder="{{ entry_img_description }}" class="form-control">{{ product_image[language.language_id] ? product_image[language.language_id].img_description }}</textarea>
                      </div>
                      {% endfor %}
                    </td>

 

 
В БД в таблице oc_product_image добавил поля img_description и language_id (id языка добавил в PRIMARY и аттрибуи "первичный" - использую OpenServer).
 
После сохранения изменений, обновил во вкладке модификаторы.
 
К части вывода полей на сайте не перешел, т.к. полезли ошибки при обновлении карточки товара:
Цитата

Notice: Undefined index: img_description in **\system\storage\modification\admin\model\catalog\product.php on line 250Notice: Undefined index: img_description in **\system\storage\modification\admin\model\catalog\product.php on line 250Warning: Cannot modify header information - headers already sent by (output started at **\admin\controller\startup\error.php:34) in **\system\library\response.php on line 36

 

 
Проверил данный файл, в указанном месте (строка 250) ничего нет, а в местах касающихся product_image внесены соответствующие изменения описанные выше.
 
Добрые люди, помогите решить задачу.
Ссылка на комментарий
Поделиться на других сайтах


1 час назад, AlexDW сказал:

 

Спасибо за ответ. Но у меня опенкарт 3, и необходимо добавить описание к дополнительным изображениям учитывая двуязычность. Может Вы могли бы подсказать что я мог упустить?  

Ссылка на комментарий
Поделиться на других сайтах


навскидку - в шаблоне у вас языковые данные в цикле обрабатываются, в модели его не видно

смотрите что вообще при сохранении передается и в каком виде

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.