A späť k OpenCart-u: tentokrát si ukážeme ako si môžete pridať do produktu vlastné pole s ľubovolnou hodnotou.Prvým a najdôležitejším krokom je pridanie nášho poľa do OpenCart databázy. Toto môžme vykonať buď cez SQL admin alebo pomocou SQL príkazu. Ja som to urobil pomocou phpmyadmin na websupport hostingu. Stačilo si otvoriť phpmyadmin link, zvoliť tabuľku a nájsť položku product. Tu som pridal nový stĺpec s názvom nakupna_cena a s parametrami podobnými ako má stĺpec price. Týmto som úspešne dokončil SQL časť.
V druhej časti musíme vysvetliť OpenCart-u že chceme aby začal pracovať aj s naším novým poľom – nakupna_cena.
Takže, ako prvý si otvoríme súbor admin/controller/catalog/product.php, nájdeme si riadok s “$this->data[‘products’][] = array(“ a pridáme o riadok nižšie nasledovný reťazec: “‘nakupna_cena’ => $result[‘nakupna_cena’], “.
V tom istom súbore si daľej nájdeme riadok “$this->data[‘heading_title’] = $this->language->get(‘heading_title’);” a hneď pod pridáme náš riadok “$this->data[‘column_nakupna_cena’] = $this->language->get(‘column_nakupna_cena’);” . Pre vysvetlenie – column_nakupna_cena – je môj názov daného stĺpca. Môžete ho nazvať akokoľvek ale musí mať prefix “column_”.
Pokračujeme ďalej v tom istom súbore a nájdeme si riadok “protected function getForm() {“, pod ktorý vložíme nasledujúci reťazec: “$this->data[‘entry_nakupna_cena‘] = $this->language->get(‘entry_nakupna_cena‘);“. Pre vysvetlenie – entry_nakupna_cena – je môj názov daného poľa. Môžete si ho nazvať akokoľvek, ale musí mať prefix “entry_” podobne ako stĺpec.
Nakoniec si nájdeme riadok “$this->data[‘languages’] = $this->model_localisation_language->getLanguages();” a hneď pod pridáme reťazec:
“if (isset($this->request->post[‘nakupna_cena’])) {
$this->data[‘nakupna_cena‘] = $this->request->post[‘nakupna_cena‘];
} elseif (isset($product_info)) {
$this->data[‘nakupna_cena‘] = $product_info[‘nakupna_cena‘];
} else {
$this->data[‘nakupna_cena‘] = ”;
}”
Takže, súbor “admin/controller/catalog/product.php” je hotový, ideme ďalej. Otvoríme si súbor “admin/view/template/catalog/product_form.tpl” a nájdeme riadok “<div id=”tab-data”>“. Do tabuľky pod pridáme naše pole:
“<tr>
<td><?php echo $entry_nakupna_cena; ?></td>
<td><input type=”text” name=”nakupna_cena” value=”<?php echo $nakupna_cena; ?>” /></td>
</tr>”
Ako ďalší si otvoríme súbor “admin/language/english/catalog/product.php” a pridáme nasledovné pod “// Column” a pod “//Entry“:
// Column
$_[‘column_nakupna_cena’] = ‘Purchase Price’;
//Entry
$_[‘entry_nakupna_cena‘] = ‘Purchase Price:’;
Toto je treba urobiť pre každý jeden nainštalovaný jazyk v OpenCart.
Ako posledný si otvoríme súbor “admin/model/catalog/product.php” a upravíme addProduct a editProduct SQL príkazy:
Do addProduct SQL query pridáme: “nakupna_cena = ‘” . (float)$data[‘nakupna_cena’] . “‘“
celá query:
$this->db->query(“INSERT INTO ” . DB_PREFIX . “product SET model = ‘” . $this->db->escape($data[‘model’]) . “‘, sku = ‘” . $this->db->escape($data[‘sku’]) . “‘, upc = ‘” . $this->db->escape($data[‘upc’]) . “‘, ean = ‘” . $this->db->escape($data[‘ean’]) . “‘, jan = ‘” . $this->db->escape($data[‘jan’]) . “‘, isbn = ‘” . $this->db->escape($data[‘isbn’]) . “‘, mpn = ‘” . $this->db->escape($data[‘mpn’]) . “‘, location = ‘” . $this->db->escape($data[‘location’]) . “‘, quantity = ‘” . (int)$data[‘quantity’] . “‘, minimum = ‘” . (int)$data[‘minimum’] . “‘, subtract = ‘” . (int)$data[‘subtract’] . “‘, stock_status_id = ‘” . (int)$data[‘stock_status_id’] . “‘, date_available = ‘” . $this->db->escape($data[‘date_available’]) . “‘, manufacturer_id = ‘” . (int)$data[‘manufacturer_id’] . “‘, shipping = ‘” . (int)$data[‘shipping’] . “‘, price = ‘” . (float)$data[‘price’] . “‘, points = ‘” . (int)$data[‘points’] . “‘, weight = ‘” . (float)$data[‘weight’] . “‘, weight_class_id = ‘” . (int)$data[‘weight_class_id’] . “‘, length = ‘” . (float)$data[‘length’] . “‘, width = ‘” . (float)$data[‘width’] . “‘, height = ‘” . (float)$data[‘height’] . “‘, length_class_id = ‘” . (int)$data[‘length_class_id’] . “‘, status = ‘” . (int)$data[‘status’] . “‘, tax_class_id = ‘” . $this->db->escape($data[‘tax_class_id’]) . “‘, sort_order = ‘” . (int)$data[‘sort_order’] . “‘, nakupna_cena = ‘” . (float)$data[‘nakupna_cena’] . “‘, date_added = NOW()”);
Do editproduct SQL query pridáme: “nakupna_cena = ‘” . (float)$data[‘nakupna_cena’] . “‘”
celá query:
this->db->query(“UPDATE ” . DB_PREFIX . “product SET model = ‘” . $this->db->escape($data[‘model’]) . “‘, sku = ‘” . $this->db->escape($data[‘sku’]) . “‘, upc = ‘” . $this->db->escape($data[‘upc’]) . “‘, ean = ‘” . $this->db->escape($data[‘ean’]) . “‘, jan = ‘” . $this->db->escape($data[‘jan’]) . “‘, isbn = ‘” . $this->db->escape($data[‘isbn’]) . “‘, mpn = ‘” . $this->db->escape($data[‘mpn’]) . “‘, location = ‘” . $this->db->escape($data[‘location’]) . “‘, quantity = ‘” . (int)$data[‘quantity’] . “‘, minimum = ‘” . (int)$data[‘minimum’] . “‘, subtract = ‘” . (int)$data[‘subtract’] . “‘, stock_status_id = ‘” . (int)$data[‘stock_status_id’] . “‘, date_available = ‘” . $this->db->escape($data[‘date_available’]) . “‘, manufacturer_id = ‘” . (int)$data[‘manufacturer_id’] . “‘, shipping = ‘” . (int)$data[‘shipping’] . “‘, price = ‘” . (float)$data[‘price’] . “‘, points = ‘” . (int)$data[‘points’] . “‘, weight = ‘” . (float)$data[‘weight’] . “‘, weight_class_id = ‘” . (int)$data[‘weight_class_id’] . “‘, length = ‘” . (float)$data[‘length’] . “‘, width = ‘” . (float)$data[‘width’] . “‘, height = ‘” . (float)$data[‘height’] . “‘, length_class_id = ‘” . (int)$data[‘length_class_id’] . “‘, status = ‘” . (int)$data[‘status’] . “‘, tax_class_id = ‘” . $this->db->escape($data[‘tax_class_id’]) . “‘, sort_order = ‘” . (int)$data[‘sort_order’] . “‘, nakupna_cena = ‘” . (float)$data[‘nakupna_cena’] . “‘, date_modified = NOW() WHERE product_id = ‘” . (int)$product_id . “‘”);