1. какое может быть более автоматизированное решение для версии VM, поддержка которой давно прекращена? Или речь о VM3? тогда я пас, все написанное ниже не актуально
2. неясно, default.php по какому конкретно пути в структуре сайта взят?
3. код "вырван из контекста", в нем указано имя позиции, выдуманной автором того поста. стандартные $field->layout_pos имеют другие имена
вот так попробуй
<?php if (!empty($product->customfields)) { ?>
<div class="product-fields">
<?php foreach ($product->customfields as $field) {
if ($field->is_hidden)
continue;
if ($field->layout_pos == 'normal') { ?>
<div style="display:inline-block;" class="product-field product-field-type-<?php echo $field->field_type ?>">
<span class="product-fields-title" ><?php echo JText::_($field->custom_title); ?></span>
<span class="product-field-display"><?php echo $field->display; ?></span>
<span class="product-field-desc"><?php echo $field->custom_field_desc; ?></span>
</div>
<?php }
} ?>
</div>
<?php }
else { // решаем проблему вывода пользовательских полей у перекрестно-рекомендуемых товаров - прямой запрос в БД - "костыль"
$query = 'SELECT A.`custom_value` , A.`virtuemart_custom_id` , A.`ordering` , B.`custom_title`, B.`field_type` FROM `#__virtuemart_product_customfields` AS A
LEFT JOIN `#__virtuemart_customs` AS B ON A.`virtuemart_custom_id` = B.`virtuemart_custom_id`
Where A.`virtuemart_product_id` = ' . $product->virtuemart_product_id . ' and B.`layout_pos`="normal"
ORDER by A.`ordering`';
$db = JFactory::getDBO();
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ($results as $result) {
if(!empty($result->custom_value)) { ?>
<div style="display:inline-block;" class="product-field product-field-type-<?php echo $result->field_type ?>">
<span class="product-fields-title" ><?php echo JText::_($result->custom_title)?></span>
<span class="product-field-display"><?php echo $result->custom_value ?></span>
</div>
<?php }
}
}
?>