Buen día. Ayúdame a mostrar las unidades de medida de las mercancías. Motor OcStore 2.3. Por defecto, las unidades de medida no se muestran junto al producto, me ayudaron a mostrarlas en la página del producto de esta manera:

En

catálogo / modelo / catálogo / producto.php

Buscar línea:

public function getProduct($product_id) {

Antes de la línea mencionada anteriormente, agregue el siguiente código:

public function getProductWeightWithUnit($product_id) {
    $product_info = $this->getProduct($product_id);

    $query = $this->db->query("SELECT unit FROM `" . DB_PREFIX . "weight_class_description` WHERE 
    weight_class_id='".$product_info['weight_class_id']."'");

    if ($query->num_rows) {
        return number_format($product_info['weight'],2) . " " . $query->row['unit'];
    } else {
        return false;
    }
}

Guarde los cambios y cierre el archivo.

Ahora, abre el archivo

catálogo / controlador / producto / producto.php

Buscar línea:

if ($product_info['minimum']) {

Antes de la línea mencionada anteriormente, agregue el siguiente código:

if ($product_info['weight']) {
     $data['weight'] = $this->model_catalog_product->getProductWeightWithUnit($this->request->get['product_id']);
} else {
     $data['weight'] = false;
}

Ahora, el código de backend está listo. Según el tema que utilice, debe editar el archivo product.tpl correcto de su tema. Por ejemplo, si usa el tema predeterminado, entonces el archivo para editar es el siguiente:

catálogo / vista / tema / predeterminado / plantilla / producto / producto.tpl

Encuentra la línea:

<li><?php echo $text_stock; ?> <?php echo $stock; ?></li>

Y agregue el siguiente código después:

<li><?php echo $weight; ?></li>

¡Multa! Todo funciona en la página del producto. Pero necesita que funcione de la misma manera en los módulos (por ejemplo, Productos destacados).

Hago todos los mismos pasos para el módulo

Backend:

catálogo / controlador / extensión / módulo / destacado.php

Y frontal:

catálogo / vista / tema / predeterminado / plantilla / extensión / módulo / destacado.tpl

Pero recibo el error:

Notice: Undefined index: product_id in C:\OSPanel\domains\mywebsite.com\catalog\controller\extension\module\featured.php on line 43

Eso es lo que dice:

    if ($product_info['weight']) {
LINE 43     $data['weight'] = $this->model_catalog_product->getProductWeightWithUnit($this->request->get['product_id']);
    } else {
        $data['weight'] = false;
    }

¿Por qué no se ve product_id en ??

2
Даша Новикова 8 ago. 2020 a las 12:16

2 respuestas

La mejor respuesta

Abra catálogo / controlador / extensión / módulo / destacado.php .

Encontrar

if ($this->config->get('config_tax')) {

Agregar antes

if ($product_info['weight']) {
    $weight = $this->model_catalog_product->getProductWeightWithUnit($product_info['product_id']);
} else {
    $weight = false;
}

Básicamente, aquí reemplacé $this->request->get['product_id'] con $product_info['product_id'], como @ K.B. dijo en su respuesta, pero dio un ejemplo más preciso.

Luego, en el mismo archivo, busque

'tax'         => $tax,

Agregar después

'weight'      => $weight,

Ahora vaya a catálogo / vista / tema / predeterminado / plantilla / extensión / módulo / destacado.tpl

Encontrar

<?php if ($product['tax']) { ?>
<span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
<?php } ?>

Agregar después

<?php if ($product['weight']) { ?>
<span><?php echo $product['weight']; ?></span>
<?php } ?>
2
focus.style 8 ago. 2020 a las 16:29

Debe usar $product_info['product_id'] o simplemente $product_id en su lugar $this->request->get['product_id'] porque no puede obtener product_id's para varios productos usando esta expresión, que están en este bucle foreach ($products as $product_id) {

2
K. B. 8 ago. 2020 a las 10:10