В практической части описания virtuemarta опишу те моменты для воплощения которых пришлось менять код самого компонента.

В сопутствующие товары добавляем артикул и пр

Открыть файлы

  administratorcomponentscom_virtuemartclassesps_product.php
 componentscom_virtuemartthemesdefaulttemplatescommonproductsnapshot.tpl.php

В первом в строку добавляем нужные переменные

function show_snapshot($product_sku,  $show_price=true,
 $show_addtocart=true, $show_product_name = true ) 
{echo $this->product_snapshot( $product_sku,  $show_price,
 $show_addtocart, $show_product_name );

 

В моем случае были

$show_product_width=true,
 $show_product_length=true, 
$show_product_lwh_uom=true,
//к стандартным переменным были прибавлены приставки show_

 

И получаем следующий код

function show_snapshot
($product_sku, $show_product_width=true, $show_product_length=true, 
$show_product_lwh_uom=true, $show_price=true, $show_addtocart=true,
$show_product_name = true )
{echo $this->product_snapshot( $product_sku, $show_product_width, $show_product_length,
$show_product_lwh_uom, $show_price, $show_addtocart, $show_product_name );

 

Далее в строку добавляем по аналогии с первым примером

function product_snapshot
( $product_sku, $show_product_width=true, $show_product_length=true, 
$show_product_lwh_uom=true, $show_price=true, $show_addtocart=true,
$show_product_name = true ) 

 

Далее

$q = "SELECT product_id, product_name, product_width, product_length, 
product_lwh_uom,  product_parent_id, product_thumb_image 
FROM #__{vm}_product WHERE product_sku='$product_sku'";

 

Далее в функцию добавляем

$tpl->set( 'product_sku', $db->f("product_sku") );
$tpl->set( 'product_sku', $product_sku );
		
$tpl->set( 'product_width', $db->f("product_width") );
$tpl->set( 'show_product_width', $show_product_width );
			
$tpl->set( 'product_length', $db->f("product_length") );
$tpl->set( 'show_product_length', $show_product_length );
		
$tpl->set( 'product_lwh_uom', $db->f("product_lwh_uom") );
$tpl->set( 'show_product_lwh_uom', $show_product_lwh_uom );

 

В файл 2 выводим переменные

<?php echo $product_width; ?>
<?php echo $product_sku; ?>
<?php echo $product_length ?> <?php echo $product_lwh_uom  ?>

 

Как изменить количество сопутствующих товаров

в

  administrator/component/virtuemart/html/shop.product_details.php в строке 85 
 $q .= "AND FIND_IN_SET(#__{vm}_product.product_id,
 REPLACE(related_products, '|', ',' )) LIMIT 0, 4";
// меняем 4 на нужное количество

 

Сопутствующие товары в несколько строк (по 4 в строке).

Для этого необходимо заменить код файла components/com_virtuemart/themes/default/Template/common/relatedProducts.tpl.php на

<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' ); ?>
<hr/>
<h3><?php echo $VM_LANG->_('PHPSHOP_RELATED_PRODUCTS_HEADING') ?></h3>
<table width="100%" align="center">
       <tr>
   <?php
$td_counter = 1;
   while( $products->next_record() ) {
 ?>
<td valign="top">
       <?php echo $ps_product->product_snapshot( $products->f('product_sku') ) ?>
       <br /></td>
<?php
$td_counter++;
if ($td_counter==5) {
echo "</tr><tr>";
}// if
}// while
?>
</tr>
</table>

 

Результат будет таким
Тимур спасибо за код.

Как убрать нули после запятой для габаритов

Что бы убрать нули после запятой из габаритов нужно в БД jos_vm_product в нужных таблицах сменить с decimal на int и длины значения сделать целым числом

Количество столбцов в списке категории

Открыть файл

componentscom_virtuemartthemesdefaulttemplatescommoncategoryChildlist.tpl.php 

в функции

if( !isset( $categories_per_row )) {
	$categories_per_row = 4;
}
//$categories_per_row = 1; - отвечает за количество колонок

 

Продолжение следует )