- Автор темы
- #1
Всем известно, что изначально из вкладки Габариты/Вес выводилось только "Количества товара в упаковке".
Я решил исправить данный недостаток. В итоге получилось такое решение:
1. В файле ваш_сайт\templates\ваш_шаблон\html\com_virtuemart\productdetails\default.php необходимо удалить следующий кусок кода:
2. Далее, переходим в папку ваш_сайт\templates\ваш_шаблон\html\com_virtuemart\sublayouts и создаем там файл с названием productparams.php, копируем в него нижепредставленный код:
3. В файле ваш_сайт\templates\ваш_шаблон\html\com_virtuemart\productdetails\default.php в то место, где хотим вывести поля "Габариты\Вес" вставляем строку:
из плюсов данного решения:
1. Можно вывести в любом удобном месте карточки товара
2. Реализовано округление до сотых. Теперь не выводятся четыре нуля после точки.
3. Реализован перевод единиц измерения на русский язык. Корявенько, конечно, но ничего умнее не придумал. Тому, кто предложит способ сократить функцию - буду благодарен
4. Т.к. пункты 2 и 3 реализованы без вмешательства в код VM и БД, то при обновлении изменения не будут утеряны.
На выходе у меня получилось так:
Я решил исправить данный недостаток. В итоге получилось такое решение:
1. В файле ваш_сайт\templates\ваш_шаблон\html\com_virtuemart\productdetails\default.php необходимо удалить следующий кусок кода:
PHP:
// Product Packaging
$product_packaging = '';
if ($this->product->product_box) {
?>
<div class="product-box">
<?php
echo vmText::_('COM_VIRTUEMART_PRODUCT_UNITS_IN_BOX') .$this->product->product_box;
?>
</div>
<?php } // Product Packaging END ?>
2. Далее, переходим в папку ваш_сайт\templates\ваш_шаблон\html\com_virtuemart\sublayouts и создаем там файл с названием productparams.php, копируем в него нижепредставленный код:
PHP:
<?php
/**
* sublayout products
*/
defined('_JEXEC') or die('Restricted access');
$product = $viewData['product'];
/* переведем единицы измерения на русский язык */
function translateUnits($en_units) {
switch($en_units) {
case 'M':
echo 'м';
break;
case 'CM':
echo 'см';
break;
case 'MM':
echo 'мм';
break;
case 'YD':
echo 'ярд';
break;
case 'FT':
echo 'фут';
break;
case 'IN':
echo 'дюйм';
break;
case 'KG':
echo 'кг';
break;
case 'G':
echo 'г';
break;
case 'MG':
echo 'мг';
break;
case 'LB':
echo 'фунт';
break;
case 'OZ':
echo 'унция';
break;
case '1 100G':
echo '100 г';
break;
case 'SM':
echo 'м<sup>2</sup>';
break;
case 'CUBM':
echo 'м<sup>3</sup>';
break;
case 'L':
echo 'л';
break;
case '1 100ML':
echo 'мл';
break;
default:
echo ' ';
break;
}
}
?>
<div class="product-parametrs">
<span class="title"><?php echo JText::_('COM_VIRTUEMART_PRODUCT_PARAM_TITLE') ?></span>
<table class="product-param">
<tbody>
<?php //Длина товара
if ($product->product_length != 0) { ?>
<tr class="product-param-tr">
<td class="product-param-name-td">
<span><?php echo JText::_('COM_VIRTUEMART_PRODUCT_LENGTH') ?></span>
</td>
<td class="product-param-value-td">
<?php echo round($product->product_length, 2) //Выводим длину ?>
<?php translateUnits($product->product_lwh_uom) //Выводим единицу измерения ?>
</td>
</tr>
<?php }
//Ширина товара
if ($product->product_width != 0) { ?>
<tr class="product-param-tr">
<td class="product-param-name-td">
<span><?php echo JText::_('COM_VIRTUEMART_PRODUCT_WIDTH') ?></span>
</td>
<td class="product-param-value-td">
<?php echo round($product->product_width, 2) //Выводим ширину ?>
<?php translateUnits($product->product_lwh_uom) //Выводим единицу измерения ?>
</td>
</tr>
<?php }
//Высота товара
if ($product->product_height!=0) { ?>
<tr class="product-param-tr">
<td class="product-param-name-td">
<span><?php echo JText::_('COM_VIRTUEMART_PRODUCT_HEIGHT') ?></span>
</td>
<td class="product-param-value-td">
<?php echo round($product->product_height, 2) //Выводим высоту ?>
<?php translateUnits($product->product_lwh_uom) //Выводим единицу измерения ?>
</td>
</tr>
<?php }
//Вес товара
if ($product->product_weight != 0) { ?>
<tr class="product-param-tr">
<td class="product-param-name-td">
<span><?php echo JText::_('COM_VIRTUEMART_PRODUCT_WEIGHT') ?></span>
</td>
<td class="product-param-value-td">
<?php echo round($product->product_weight, 2) //Выводим вес ?>
<?php translateUnits($product->product_weight_uom) //Выводим единицу измерения ?>
</td>
</tr>
<?php }
//Объем упаковки
if ($product->product_packaging !=0) { ?>
<tr class="product-param-tr">
<td class="product-param-name-td">
<span><?php echo JText::_('COM_VIRTUEMART_PRODUCT_PACKAGING') ?></span>
</td>
<td class="product-param-value-td">
<?php echo round($product->product_packaging, 2) //Выводим объем упаковки ?>
<?php translateUnits($product->product_unit) //Выводим единицы измерения ?>
</td>
</tr>
<?php }
//Количество в упаковке
$product_packaging = '';
if ($product->product_box) { ?>
<tr class="product-param-tr">
<td class="product-param-name-td">
<span><?php echo JText::_('COM_VIRTUEMART_PRODUCT_UNITS_IN_BOX') ?></span>
</td>
<td class="product-param-value-td">
<?php echo $product->product_box //Выводим количество в упаковке ?>
<?php echo ' шт' ?>
</td>
</tr>
<?php } // Product Packaging END ?>
</tbody>
</table>
</div>
3. В файле ваш_сайт\templates\ваш_шаблон\html\com_virtuemart\productdetails\default.php в то место, где хотим вывести поля "Габариты\Вес" вставляем строку:
PHP:
<?php echo shopFunctionsF::renderVmSubLayout('productparams',array('product'=>$this->product,'position'=>'newtab')); ?>
из плюсов данного решения:
1. Можно вывести в любом удобном месте карточки товара
2. Реализовано округление до сотых. Теперь не выводятся четыре нуля после точки.
3. Реализован перевод единиц измерения на русский язык. Корявенько, конечно, но ничего умнее не придумал. Тому, кто предложит способ сократить функцию - буду благодарен
4. Т.к. пункты 2 и 3 реализованы без вмешательства в код VM и БД, то при обновлении изменения не будут утеряны.
На выходе у меня получилось так: