Как выводить единицы измерения в опенкарт?
Подскажите как выводить единицы измерения для опенкарт 2.3. Когда товар был в граммах, я просто дописывала после вывода веса - гр. А теперь мне нужно чтобы еще выводились и литры, и этот костыль себя изжил. Как обратится к переменной которая отвечает за вывод единиц (гр, кг, л)??
Вот так раньше выводила вес))
<?php if($product['weight']>0) { ?>
<div class="weight">
<?php echo $product['weight']; ?>гр.
</div>
<?php } ?>
Ответы (3 шт):
Мне не совсем понятно для чего вообще нужен был костыль с гр. если в настройках (Система-Локализация-Единицы веса) можно указать любую интересующую вас единицу.
1) Добавляете новую единицу "веса" - литры.
2) Изменяете в карточке товара граммы/килограммы на литры.
3) Система-Настройки-Локализация - в поле вес указываете литры
.
Как-то так:
Сперва набейте в базу все единицы измерения веса и объёма, которые будут использоваться на сайте, все они будут доступны для выбора во вкладке Data, в селекте Weight Class:

Редактируете запрос в методе getProduct() класса ModelCatalogProduct (catalog/model/catalog/product.php), в начале запроса добавить wcd.unit as wc_unit,
$query = $this->db->query("SELECT DISTINCT *, wcd.unit as wc_unit, ...
Далее, в этом же запросе, перед последним WHERE добавляете join на таблицу с юнитами мер весов
LEFT JOIN " . DB_PREFIX . "weight_class_description wcd ON (wcd.weight_class_id = p.weight_class_id)
Далее, в классе ControllerProductCategory (catalog/controller/product/category.php) добавляете вес в цикле формирования продуктов:
$data['products'][] = array(
...
'weight' => (float)$result['weight'] . $result['weight_unit']
);
И выводите просто - <?= $product['weight'] ?>
Кирилл, все верно только еще момент для (catalog/model/catalog/product.php), в этом же методе getProduct() там где формируется массив
if ($query->num_rows) {
return array(...
добавить ключ и передать значение
'weight_unit' => $query->row['unit'],
Тогда все отработает корректно
