Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


evxos

Recommended Posts

Добрый день. Я новичок, стараюсь самостоятельно разобраться, но сейчас в тупике.
 
Нужно добавить поле описания для дополнительных изображений товара во вкладке "изображения".
 
Что я сделал. В 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.