Recht einfach realisierbar...
Einfach in die Tabelle 'jos_vm_product' eine weitere Spalte mit bsp. dem Namen 'ean' einfügen mit folgendem Befehl:
ALTER TABLE `jos_vm_product` ADD `ean` VARCHAR(13) NOT NULL AFTER `product_id`;
Fügt in besagte Tabelle eine Spalte mit Namen 'ean' und einer Länge von 13 Zeichen nach der Spalte mit dem Namen 'product_id' ein, wobei der Wert nicht Null sein darf. Falls du auch Produkte anlegen möchtest, denen du noch keine EAN zuweisen magst, lass das 'NOT NULL' weg.
In der Datei administrator\components\com_virtuemart\html\produ ct.product_list.php
gibt es einen Codeabschnitt etwa so:
PHP-Code:
// Check to see if this is a search or a browse by category
// Default is to show all products
if (!empty($category_id) && empty( $product_parent_id)) {
$list = "SELECT #__{vm}_category.category_name,#__{vm}_product.product_id,#__{vm}_product.product_name,
Dort einfach hinzufügen: '#__{vm}_product.ean' <-- Damit stellst du sicher, dass er (wenn du deine Produkte im Backend anzeigen lässt) auch die EANs aus der Datenbank mit ausliest.
In der selben Datei gibt es eine weitere Codestelle:
PHP-Code:
// these are the columns in the table
$columns = Array( '#' => '',
"<input type=\"checkbox\" name=\"toggle\" value=\"\" onclick=\"checkAll(".$num_rows.")\" />" => "",
$VM_LANG->_('PHPSHOP_PRODUCT_LIST_SKU') => "width=\"15%\"",
$VM_LANG->_('PHPSHOP_PRODUCT_LIST_NAME') => "width=\"10%\"",
Dort diese Zeile einfügen: '$VM_LANG->_('PHPSHOP_PRODUCT_EAN') => "width=\"5%\"",' <-- Erschafft im Backend die Spalte für die EANs
Weiter unten eine weitere Codestelle in dieser Datei:
PHP-Code:
// The product sku
$listObj->addCell( $db->f("product_sku") );
// The link to the product form / to the child products
if( $vmLayout == 'standard') {
$tmpcell = vmCommonHTML::hyperLink( $link, $text, '', 'Edit: '.$text );
} else {
$tmpcell = vmCommonHTML::hyperLink($link, $text, '', 'Edit: '.$text, 'onclick="parent.addSimplePanel( \''.$db->getEscaped($db->f("product_name")).'\', \''.$link.'\' );return false;"');
}
if( $ps_product->parent_has_children( $db->f("product_id") ) ) {
$tmpcell .= " <a href=\"";
$tmpcell .= $sess->url($_SERVER['PHP_SELF'] . "?page=$modulename.product_list&product_parent_id=" . $db->f("product_id"));
$tmpcell .= "\">[ ".$VM_LANG->_('PHPSHOP_PRODUCT_FORM_ITEM_INFO_LBL'). " ]</a>";
}
$listObj->addCell( $tmpcell );
Dort diese Zeile einfügen: '$listObj->addCell( $db->f("ean") );' <-- Holt sich für die Tabelle im Backend die EANs zu den Produkte und fügt sie in die Spalte ein.
In der Datei: administrator\components\com_virtuemart\language\c omon\german.php und germani.php
Diese Zeile einfügen: 'PHPSHOP_PRODUCT_EAN' => 'EAN', <-- mit Komma, falls du sie irgendwo rein haust, ohne Komma, falls du sie ans Ende der Liste schreibst, dann aber nicht vergessen noch das Komma in der Zeile davor zu setzen
Bestimmt im Übrigen den Titel deiner Tabellenspalte.
Jetzt willst du natürlich die EAN auch im Backend ändern, bzw. erstmal für die Produkte eintragen können.
Dazu die Datei öffnen: administrator\components\com_virtuemart\html\produ ct.product_form.php
Da ist eine Codestelle zu finden:
PHP-Code:
<tr class="row0">
<td width="21%"><div style="text-align:right;font-weight:bold;">
<?php echo $VM_LANG->_('PHPSHOP_PRODUCT_FORM_NAME') ?>:</div>
</td>
<td width="79%">
<input type="text" class="inputbox" name="product_name" value="<?php echo shopMakeHtmlSafe( $db->sf("product_name")); ?>" size="32" maxlength="255" />
</td>
</tr>
Danach einfügen:
PHP-Code:
<tr class="row1">
<td width="29%" ><div style="text-align:right;font-weight:bold;">
<?php echo $VM_LANG->_('PHPSHOP_PRODUCT_EAN') ?>:</div>
</td>
<td width="71%" >
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<input type="text" value="<?php $db->sp("ean"); ?>" class="inputbox" name="ean" size="20" maxlength="13" />
<input type="hidden" name="product_price_id" value="<?php echo @$price["product_price_id"] ?>" />
</td>
</tr>
</table>
</td>
</tr>
Und zu guter letzt in der Datei: administrator\components\com_virtuemart\classes\ps _product.php
erste Codestelle in der 'function add':
PHP-Code:
// Insert into DB
$fields = array (
Da die Zeile einfügen: 'ean' => vmGet($d,'ean'),
und weiter unten in der 'function update':
PHP-Code:
// Insert into DB
$fields = array (
Da die Zeile einfügen: 'ean' => vmGet($d,'ean'),
Sollte es gewesen sein
Lesezeichen