Page 1 of 1

[SOLUCIONADO] Mostrar opciones en categorias

Posted: Mon Jun 09, 2014 6:26 am
by rodricrzz
Hola, estoy necesitando mostrar en la pagina de categorías las opciones que tiene cada producto. No necesito que calcule el precio ni nada complejo, solamente necesito poder colocar debajo de (por ejemplo) el precio de cada producto, las opciones que tiene disponible como texto a modo informativo.

Utilizo OC v1.5.4.1.

Espero que puedan ayudarme, se que hay algo con el tema del controller pero no se bien qué tocar.

Desde ya, muchas gracias!

Re: Mostrar opciones en categorias

Posted: Mon Jun 09, 2014 7:00 am
by celestial
Este post es viejo pero la logica es la misma:

http://forum.opencart.com/viewtopic.php?f=121&t=18928

Re: Mostrar opciones en categorias

Posted: Mon Jun 09, 2014 7:30 am
by rodricrzz
celestial wrote:Este post es viejo pero la logica es la misma:

http://forum.opencart.com/viewtopic.php?f=121&t=18928
Hola celestial, gracias por responderme.
Ese post lo habia encontrado pero no entendí lo que hay que hacer, no encuentro las lineas que dice en controller/catalog/category.php.

Quizas es para otra version mas antigua.

Re: Mostrar opciones en categorias

Posted: Mon Jun 09, 2014 11:06 am
by celestial
rodricrzz wrote:
celestial wrote:Este post es viejo pero la logica es la misma:

http://forum.opencart.com/viewtopic.php?f=121&t=18928
Hola celestial, gracias por responderme.
Ese post lo habia encontrado pero no entendí lo que hay que hacer, no encuentro las lineas que dice en controller/catalog/category.php.

Quizas es para otra version mas antigua.
No te cierres, has pruebas, por ejemplo, usando tu version:

Te dice al comienzo que Adiciones esto:

$this->data['action'] = HTTP_SERVER . 'index.php?route=checkout/cart';

Despues de:

$this->data['continue'] = HTTP_SERVER . 'index.php?route=common/home';

Pero esta linea EXISTE pero esta modificada y actualizada, como no encontras la linea completa busca una parte:

Busca solo este pedazo, $this->data['continue'] = (AHHHHHH ahi esta) pero esta cambiada

$this->data['continue'] = $this->url->link('common/home');

OK entonces lo que vamos a adicionar va despues de esto PERO NO IGUAL PORQUE SI VEMOS LA LINEA QUE ENCONTRAMOS ES DIFERENTE, ENTONCES LA IGUALAMOS:

ESTO

$this->data['action'] = HTTP_SERVER . 'index.php?route=checkout/cart';

PASARIA A:

$this->data['action'] = $this->url->link('checkout/cart');

Y así sucesivamente, por eso te dije que la logica es la misma venis haciendo la modificación y a la vez venis actualizandola, es sencillo y además es prueba y error, por aca te estaré monitoreando el avance. Todo lo que necesitas está ahi para tu version.

Re: Mostrar opciones en categorias

Posted: Mon Jun 09, 2014 11:48 am
by rodricrzz
celestial wrote:
rodricrzz wrote:
celestial wrote:Este post es viejo pero la logica es la misma:

http://forum.opencart.com/viewtopic.php?f=121&t=18928
Hola celestial, gracias por responderme.
Ese post lo habia encontrado pero no entendí lo que hay que hacer, no encuentro las lineas que dice en controller/catalog/category.php.

Quizas es para otra version mas antigua.
No te cierres, has pruebas, por ejemplo, usando tu version:

Te dice al comienzo que Adiciones esto:

$this->data['action'] = HTTP_SERVER . 'index.php?route=checkout/cart';

Despues de:

$this->data['continue'] = HTTP_SERVER . 'index.php?route=common/home';

Pero esta linea EXISTE pero esta modificada y actualizada, como no encontras la linea completa busca una parte:

Busca solo este pedazo, $this->data['continue'] = (AHHHHHH ahi esta) pero esta cambiada

$this->data['continue'] = $this->url->link('common/home');

OK entonces lo que vamos a adicionar va despues de esto PERO NO IGUAL PORQUE SI VEMOS LA LINEA QUE ENCONTRAMOS ES DIFERENTE, ENTONCES LA IGUALAMOS:

ESTO

$this->data['action'] = HTTP_SERVER . 'index.php?route=checkout/cart';

PASARIA A:

$this->data['action'] = $this->url->link('checkout/cart');

Y así sucesivamente, por eso te dije que la logica es la misma venis haciendo la modificación y a la vez venis actualizandola, es sencillo y además es prueba y error, por aca te estaré monitoreando el avance. Todo lo que necesitas está ahi para tu version.

Gracias por responder.
Estoy probando y lo que hice fue en el controller category.php agregar:

Code: Select all

$options = $this->model_catalog_product->getProductOptions($result['product_id']);
y luego dentro de:

Code: Select all

$this->data['products'][] = array(
agregué lo siguiente:

Code: Select all

'id'    => $result['product_id'],
'options' => $options,
Luego en el category.tpl del template agregué lo siguiente:

Code: Select all

<?php if ($products['options']) { ?>
    <?php foreach ($products['options'] as $option) { ?>
        <?php echo $option['name']; ?>
        <?php foreach ($option['option_value'] as $option_value) { ?>
            <?php echo $option_value['name']; ?>
        <?php } ?>
    <?php } ?>   
<?php } ?>
Me limité a utilizar esa parte del código y no todo el form que estaba en el post que me pasaste ya que en ese otro caso habia que modificar el carrito y agregaba inputs y otras cosas que no me interesaban. En mi caso solo necesito mostrar de forma textual las opciones de mis productos.

En consecuencia, recibo el siguiente error en cada box:
Notice: Undefined index: options in /home/lb000625/public_html/tango/catalog/view/theme/default/template/product/category.tpl on line 96
GRACIAS!!


(modificado)

Re: Mostrar opciones en categorias

Posted: Wed Jun 11, 2014 12:51 pm
by rodricrzz
Ya lo solucioné! Me basé en un MOD publicado en este topic: http://forum.opencart.com/viewtopic.php ... 48#p204048

La modificación que yo usé fué:

catalog/controller/product/category.php

Antes de:

Code: Select all

$this->data['products'][] = array(
Agregué:

Code: Select all

$options = $this->model_catalog_product->getProductOptions($result['product_id']);
Luego de:

Code: Select all

$this->data['products'][] = array(
Agregué:

Code: Select all

'id'    => $result['product_id'],
'options' => $options, 
catalog/view/theme/default/template/product/category.tpl

Ponen este código donde quieren que aparezca, obviamente dentro del box-product, yo lo puse en el medio de <div class="rating">...</div> y del <div class="cart">...</div>:

Code: Select all

    <?php if ($product['options']) { ?>
        <div class="options" id="option_<?php echo $product['product_id']; ?>">
            <?php foreach ($product['options'] as $option) { ?>
                <?php if ($option['type'] == 'select') { ?>
                    <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
                        <b><?php echo $option['name']; ?>:</b><br />
                        <select name="option[<?php echo $option['product_option_id']; ?>]">
                            <?php foreach ($option['option_value'] as $option_value) { ?>
                                <option value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>
                                <?php if ($option_value['price']) { ?>
                                (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['quantity']; ?>)
                                <?php } ?>
                                </option>
                            <?php } ?>
                        </select>
                    </div>
                <?php } ?>
            <?php } ?>
        </div>
    <?php } ?>

El resultado de esto sería los options que son select con su nombre de opcion y cantidad disponible.
En el código original del topic que puse arriba, muestra todos los options, sean select, radio, imagen, etc, para mi necesidad era solamente los options del tipo select, por eso puse ese codigo.