Место для вас

Добавление нового поля в админку 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'),

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

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


Место для вас

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

Что за сайт

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

ФРЕНДЗОНА

Будь в курсе

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

Вверх