Дополнительное поле для товара в VirtueMart (Joomla)

Комментарии к записи Дополнительное поле для товара в VirtueMart (Joomla) отключены

Создание дополнительного текстового поля у товара в VirtueMart 1.1.4.

Что мы имеем:

Яндекс Практикум
  • старая версия джумлы - 1.5.26
  • Virtuemart 1.1.4 - тоже не самый свежий 🙂

Что нужно заказчику: дополнительное поле в карточке товара, с возможностью добавления текста и изображений.

Редактировать будем базу данных и следующие файлы:
/administrator/components/com_virtuemart/html/product.product_form.php
/administrator/components/com_virtuemart/classes/ps_product.php
/administrator/com_virtuemart/html/shop_browse_queries.php
/administrator/com_virtuemart/html/shop.browse.php
/components/com_virtuemart/themes/default/templates/product_details/flypage.tpl.php

Итак начнем. Сделаем предварительный бэкап файлов и базы.

GeekBrains

1. Добавим в таблицу "ваш_префикс_vm_product" ячейку с новым полем, например "product_banner", со значениями: тип "TEXT" и сравнение "utf8_general_ci".

Фото: Дополнительное поле для товара в VirtueMart (Joomla)

2. Работаем с файлом product.product_form.php. Добавляем код, приведенный ниже в выбранное Вами место.

<div>Баннеры к товару:</div>

<?php editorArea( 'editor1', htmlspecialchars( $db->sf("product_banner"), ENT_QUOTES ), 'product_banner', '100%', '300', '55', '25' ) ?>

Документ нужно сохранить в кодировке UTF-8.

3. В 2-х местах правим файл ps_product.php, добавляя следующую строку:

'product_banner' <vmRequest::getVar('product_banner', '', 'default', '', VMREQUEST_ALLOWHTML),

после строк

$fields = array ('vendor_id' => $vendor_id),

4. Вносим изменения в файл shop_browse_queries.php, в районе 38 строки после `product_url` добавляем через запятую `product_banner`

$products[$i]['product_banner'] = $db_browse->f("product_banner");

Так это поле будет выглядеть в админке

Фото: Дополнительное поле для товара в VirtueMart (Joomla)

5. В файл shop.browse.php в районе 500 строки вставляем:

$products[$i]['product_banner'] = $db_browse->f("product_banner");

6. Теперь добавим отображение нашего нового поля в шаблон, для этого в файл flypage.tpl.php (или другой файл, в зависимости от используемого Вами шаблона) добавим:

<?php echo $product_banner ?>