Место для вас

Добавление нового поля в админку virtuemart 1.1.x

Когда перед разработчиком стоит серьезный проект, то изменений и правки в Virtuemart не избежать. И так как стандартных средств расширения VirtueMart нет (я не имею ввиду модули и компоненты), то нужно "копать". И одно из многих, с чем придется столкнуться, так это добавить поле в админку, так как стандартных полей маловато.

И такс... Приступим...

Открываем базу данных сайта и находим таблицу jos_vm_product. Заходим в нее и выбираем вкладку Структура. Спускаемся в самый низ, находим Добавить 1 поле и нажимаем Ок. Теперь заполняем поля:
Поле: dhl_ship_price // тут используйте любое название. Я использую dhl_ship_price, так как взял пример из своего проекта, где нужно было добавить поле для стоимости DHL доставки.
Длина значения: 7
Тип: VARCHAR;
Null: NOT NULL.
Остальные поля можно оставить пустыми и сохраняем.

После создания поля в таблице ее нужно привязать к админке сайта.
Для этого открываем файл: administrator/com_virtuemart/html/product.product_form.php. Тут находим приблизительно 200 строку. Примерно тут начинается таблица, в которой находятся поля при добавлении нового товара. Находим то место, куда нужно вставить код и вставляем его:


<tr>
<td width="29%"><div style="text-align:right;font-weight:bold;">DHL shipping:</div></td>
<td width="71%">
<input type="text" value="<?php echo $db->sp("dhl_ship_price"); ?>" name="dhl_ship_price" size="10" maxlength="10' />
</td>
</tr>

Сохраняем изменения и смотрим в админке, что получилось. Если все тип-топ, то вы должны увидеть новое поле.

Теперь нужно связать созданное поле с нашей базой данных. Для этого идем в administrator/components/com_virtuemart/classes/ps_product.php и находим тут строки:


// Insert into DB
$fields = array ( 'vendor_id' => $vendor_id, 'product_sku' => vmGet($d,'product_sku'),

и вставляем тут:


 'dhl_ship_price' => vmGet($d,'dhl_ship_price'),

!!! Эти строки ( // Insert into DB ) встречаются в этом файле 2 раза!!! Первый раз для добавления нового товара в базу данных. Второй раз для его изменения.

Так что находим второе // Insert into DB


$fields = array ( 'vendor_id' => $vendor_id, 'product_sku' => vmGet($d,'product_sku'),

и вставляем тут:


 'dhl_ship_price' => vmGet($d,'dhl_ship_price'),

Теперь заходим в админку и попробуем что-то добавить в созданное поле . Если все было сделанно правильно и все данные нормально сохраняются и редактируются, то значит поле успешно связывается с нашей базой данных.

Далее нужно отобразить информацию из этого поля на странице продукта.


Место для вас

Добавить коментарий

кликните на картинку,
чтоб обновить код

Что за сайт

Этот сайт представляет унифицированную базу, где инфа собрана в единое целое, а не разбросанна по многочисленным сайтам, записям на листах бумаги или головам людей; а так же доступна круглосуточно не зависимо от кого-либо или чего-либо.

Будь в курсе

Интересненько

Вверх