COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

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 внесены соответствующие изменения описанные выше.

 

Добрые люди, помогите решить задачу.

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

Если делать мультиязычное, то отдельную таблицу создавать и соединять по id изображения. Делайте по примеру характеристик.

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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