Добавить новое поле для товара в virtuemart
Эта инструкция давно уже лежит у меня txt файле.И через файл не очень удобно просматривать пункты, тем более пока его найдешь.
А на сайте куда удобнее. И вполне возможно пригодиться не только мне.
1. В базе mysql добавить нужное поле. Например, нам нужен размер товара.
Добавляем поле `product_size` в таблицу `jos_vm_product` с помощью phpmyadmin.
В зависимости от того, как мы будем заполнять эти данные выбираем тип поля. Если в поле будут только цифры, то лучше выбрать int.
2. В файле добавить нужную форму:
/administrator/components/com_virtuemart/html/product.product_form.php
Например, мы хотим в первой вкладке после краткого описания вставить наше новое поле. Для этого находим: в файле `product_s_desc`. Видим что он находится в строке таблицы. После вставляем:
<tr><td>Размер:</td><td><input type="text" name="product_size"> </td> </tr>
3. Открываем файл:
/administrator/com_virtuemart/clases/ps_product.php
Здесь нас интересуют две функции. Первая — добавление нового товара. Ищем участок кода, содержащий `function add`. Недалеко от начала функции, после следующего участка кода находим:
// Insert into DB:
$fields = array ( 'vendor_id' => $vendor_id,
...
В зависимости от вида наших данных копируем нужную строку, и вписываем свои данные:
Например, наше поле совпадает с числовым, поэтому можем скопировать:
'product_lwh_uom' => vmGet($d,'product_lwh_uom'),
и вместо product_lwh_uom вставляю product_size:
'product_size' => vmGet($d,'product_size'),
Если добавляем чекбокс, то надо еще добавить проверку. Находим код:
$d["product_publish"] = empty($d["product_publish"]) ? "N" : "Y";
И рядом добавляем точно такое же, только с нашим полем из БД.
Кстати, для вставки такого поля, нужно использовать:
'поле_из_бд' => $d['поле_из_бд']
Далее находим функцию изменения существующего товара "function update".
Там делаем тоже самое, что и в функции добавления.
4. Теперь нам надо вывести на сайт, данные которые мы добавляем. В файле:
/administrator/com_virtuemart/html/shop_browse_queries.php
После// These are the names of all fields we fetch data from
Добавляем нужные поля из базы данных. Например:$fieldnames = "`product_name`,`products_per_row`, `product_desc_2`, `product_size` ...
После того, как мы вытаскиваем нужные поля из БД, нам надо данные прописать в переменную для шаблона товара. В файле:
/administrator/com_virtuemart/html/shop.browse.php
После:$products[$i]['product_details'] = $product_details;
Например:$products[$i]['product_size'] = $db_browse->f("product_size");
5. Дальше в шаблонах мы прописываем, например:
<?php echo product_size; ?>