Dziś kolejny, drugi już ciekawy artykuł Jacka. Niekiedy Virtuemart używamy jako katalog. I tu pojawić się może pewna potrzeba… Dodatkowe pola w formularzu produktu np. rodzaj/typ, numer katalogowy, autor, format – cokolwiek. Można kombinować przez dodawanie kategorii, producentów, ale zastosowanie poniższego hack’a z pewnością ułatwi sprawę.
1. Poprzez phpMyAdmin utwórz nowe pole w bazie danych w tabeli jos_vm_product. Nazwijmy to pole dodatkowe_pole. To przykładowa nazwa, więc jeśli użyjesz innej zamień wszędzie w poniższych kodach.
2. Przejdź do folderu instalacji Joomla! /administrator/components/com_virtuemart/html/ plik product.product.form.php
Plik ten odpowiada za wyświetlanie formularza dodawania produktu w zapleczu.
Jeśli nowe pole ma pojawić się po SKU to:
PO:
WPISZ:
<tr> <td width=”21%” > <div style=”text-align:right;font-weight:bold;”><?php echo $VM_LANG->_(’PHPSHOP_PRODUCT_FORM_DODATKOWE_POLE’) ?>:</div> </td> <td width=”79%”> <input type=”text” name=”dodatkowe_pole” value=”<?php $db->sp(„dodatkowe_pole”); ?>” size=”32″ maxlength=”64″ /> </td> </tr>3. Kolejny krok umożliwiający dodanie wpisu z nowego pola do bazy. Tym razem przechodzimy do: /administrator/components/com_virtuemart/classes/ plik ps_product.php
PO:
// Insert into DB $fields = array ( 'vendor_id’ => $vendor_id, 'product_parent_id’ => vmRequest::getInt(’product_parent_id’), 'product_sku’ => vmGet($d,’product_sku’),
WPISZ:
'dodatkowe_pole’ => vmGet($d,’dodatkowe_pole’),
W tym samym pliku poszukaj „Function to update product $d[’product_id’] in the product table” i wykonaj tą samą czynność:
PO:
// Insert into DB $fields = array ( 'vendor_id’ => $vendor_id, 'product_parent_id’ => vmRequest::getInt(’product_parent_id’), 'product_sku’ => vmGet($d,’product_sku’),
WPISZ:
'dodatkowe_pole’ => vmGet($d,’dodatkowe_pole’),
4. W pliku językowym /administrator/components/com_virtuemart/languages/common/polish.php
PO:
'PHPSHOP_PRODUCT_FORM_SKU’ => 'SKU’,
WPISZ:
'PHPSHOP_PRODUCT_FORM_DODATKOWE_POLE’ => 'D’,
5. Teraz w szablonie produktu,
czyli: /components/com_virtuemart/themes/default/templates/product_details/ w zależności jaki mamy przypisany wpisujemy np.
6. Jeśli chcesz zablokować możliwość powielenia się zawartości pola zastosuj to:
/administrator/components/com_virtuemart/classes/ plik ps_product.php
PO:
WPISZ:
$ Q = „SELECT product_id, product_thumb_image, product_full_image z # __ {vm} _product WHERE my_code =” „; $ Q .= $ d [„my_code”]. „'”; $ Db-> setQuery ($ q); $ db-> query (); if ($ db-> next_record ()&&($ db-> f („product_id”)! = $ d [„product_id”])) { $ VmLogger-> err („Produkt z kodem” $ d [’my_code’].. „Już istnieje.”); $ Valid = false; }============================================
Autorem tekstu jest : Jacek Sawicki.
Projektant, grafik, jednoosobowa agencja reklamowa,
specjalista od szablonów Joomla! i Virtuemart. www.inter-page.pl
============================================
wartościowy instruktarz, tylko jak wyświetlić to na liście produktów w kategorii?
Dobre pytanie, zna ktoś odpowiedź ?
tu mamy rozwiązanie:
1. In shop_browse_queries.php, add your 2 fields to the line that start with: $fieldnames =
2. In shop.browse.php, find this line:
$product_s_desc = $db_browse->f(„product_s_desc”);
Duplicate that line twice, and in the first line, replace product_s_desc TWICE with field1, and then in the second line, twice with field2
3. Still in shop.browse.php, find this line:
$products[$i][’product_s_desc’] = $product_s_desc;
Duplicate that line twice, and in the first line, replace product_s_desc TWICE with field1, and then in the second line, twice with field2
Teraz poprosimy o taki tutorial dla dodatkowego pola w Kategorii, z możliwością wyświetlania na stronach kategorii np: pod nazwą lub zdjęciem
Świetny poradnik, w dobry i przystępny sposób, poza samym rozwiązaniem problemu, pokazuje też, jak działać i jak sobie radzić z różnymi codziennymi problemami z Joomlą.
Pozdrawiam twórców