Немножко являюсь чайником, однако, получилось сделать то, что задумывал (j1.5.12, vm1.1.3). Надеюсь, пригодится мне подобным.
В оформляемом мною магазине главенствующим элементом идентификации товара является внутренний код, а, непосредственно, артикул - лишь дополнение, хоть и обязательное. Я не стал мудрить с дополнительными полями - не хочется переделывать еще и CSV-импорт-экспорт, поэтому для внутреннего кода уделил место артикула, а артикул поместил в поле "Дополнительные IDs", которое соответствует полю "child_option_ids" базы данных (jos_vm_product -> child_option_ids).
Далее, дополнил шесть файлов:
browse_listtable.tpl.php (components/com_virtuemart/themes/default/templates/browse/includes)
flypage.tpl.php (components/com_virtuemart/themes/default/templates/product_details)
ps_product.php (administrator/components/com_virtuemart/classes)
russian.php (administrator/components/com_virtuemart/languages/common)
shop.browse.php (administrator/components/com_virtuemart/html)
shop_browse_queries.php (administrator/components/com_virtuemart/html)
1.browse_listtable.tpl.php
после
if (count ($products)) { $tableheader[] = $VM_LANG->_('PHPSHOP_CART_NAME');
вставил
$tableheader[] = $VM_LANG->_('PHPSHOP_ART');
и после
$data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'.$product['product_name'].'</a>';
вставил
$data[$row][] = $product['child_option_ids'];
2.flypage.tpl.php
после
<h1><?php echo $product_sku ?><?php echo '.' ?> <?php echo $product_name ?> <?php echo $edit_link ?></h1>
вставил
<br/><i><?php echo 'Артикул: ' ?><?php echo $child_option_ids ?></i>
3.ps_product.php
вместо строки 303
'child_option_ids' => vmGet($d,'included_product_id'),
вставил
'child_option_ids' => vmGet($d,'child_option_ids'),
вместо стр. 502
'child_option_ids' => vmGet($d,'included_product_id'),
вставил
'child_option_ids' => vmGet($d,'child_option_ids'),
после стр. 2617
$featured_products[$i]['product_url'] = $db->f("product_url");
вставил
$featured_products[$i]['child_option_ids'] = $db->f("child_option_ids");
4.russian.php
после стр.
вставил
5.shop.browse.php
после стр. 936
$products[$i]['manufacturer_link'] = $manufacturer_link;
добавил
$products[$i]['child_option_ids'] = $db_browse->f("child_option_ids");
6.shop_browse_queries.php
в строке 71
$fieldnames = "`product_name`,`products_per_row`,`category_browsepage`,`category_flypage`,`#__{vm}_category`.`category_id`,
`#__{vm}_product`.`product_id`,`product_full_image`,`product_thumb_image`,`product_s_desc`,`product_parent_id`,`product_publish`,`child_option_ids`,`product_in_stock`,`product_sku`, `product_url`,
`product_weight`,`product_weight_uom`,`product_length`,`product_width`,`product_height`,`product_lwh_uom`,`product_in_stock`,`product_available_date`,`product_availability`,`#__{vm}_product`.`mdate`, `#__{vm}_product`.`cdate`";
можно увидеть `child_option_ids` - вот это и добавил
далее, после стр. 191
$sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
добавил
$sq .= "\n `#__{vm}_product`.`child_option_ids` LIKE '%$searchstring%' OR ";
после стр. 259
$sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
вставил
$sq .= "\n `#__{vm}_product`.`child_option_ids` LIKE '%$searchstring%' OR ";
после стр. 321
$sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
вставил
$sq .= "\n `#__{vm}_product`.`child_option_ids` LIKE '%$searchstring%' OR ";
Что наделал - понимаю не всё, но имею артикул в табличном списке товаров, подробном описании товара и поиск по артикулу, что меня очень обрадовало. К тому же, пользуюсь стандартным CSV improved, используя поле product_s_desc в качестве артикула.
А еще надеюсь на помощь гуру, которые подскажут, чего делать было не обязательно.