Añadir campos a lis...
Avisos
Vaciar todo

Hosting WordPress 70% dto Dominios promo

Añadir campos a listado de productos (browse_x.php)  

Página 1 / 2
 
José Manuel
 José Manuel
Usuario eminente

Hola a todos:

Tengo un problema con una tienda montada sobre joomla 1.5.23 y virtuemart 1.1.9.

El caso es que hemos instalado un componente que permite que se le asigne un precio de portes para cada producto, en función del SKU del producto. El componente es de www.compdat.com y funciona perfectamente.

Lo que ocurre es que necesito mostrar el precio del porte en el fichero que muestra el listado de productos, en mi caso ese fichero es "browse_vmblend.php".

Ya había hecho esto antes con campos de la tabla "jos_vm_prodcuts", pero no consigo hacerlo con los campos de esta otra "jos_vm_product_qty_shipping" . Los pasos que he seguido son:

1.- edito el fichero "shop_browse_queries.php", líneas 37 a 39, y añado los campos que quiero mostrar a $fieldnames:
$fieldnames = "`#__{vm}_product`.`product_id`, `product_name`, `products_per_row`, `category_browsepage`, `category_flypage`, `#__{vm}_category`.`category_id`, `product_full_image`, `product_thumb_image`, `product_s_desc`, `product_parent_id`, `product_publish`, `product_in_stock`, `product_sku`, `product_url`, `product_weight`, `product_weight_uom`, `product_length`, `product_width`, `product_height`, `product_lwh_uom`, `product_available_date`, `product_availability`, `#__{vm}_product`.`mdate`, `#__{vm}_product`.`product_id`, `#__{vm}_product_qty_shipping`.`base_amount`";

2.- añado la tabla a $tablenames:
$table_names = '`#__{vm}_product`, `#__{vm}_category`, `#__{vm}_product_category_xref`, `#__{vm}_shopper_group`, `#__{vm}_product_qty_shipping`';

3.- luego edito el fichero shop.browse.php y añado la linea 412:
$base_amount = $db_browse->f(“base_amount”);

4.- para luego añadir al final del listado de campos, linea 474, el campo correspondiente para mostrar en los listados:
$products[$i]['base_amount'] = $base_amount;

5.- a continuación edito el fichero browse_vmblend.php y añado la variable para mostrar los portes:

Pero en el listado no aparece ningún producto. Es obvio que estoy haciendo algo mal, pero no sé lo que es. Lo he mirado en foros y he creado un tiquet de soporte en la web del autor, pero parece que los pasos que doy son los correctos; sin embargo en los listados no aparece ni un solo producto.

¿Podeis echarme una mano y decirme qué estoy haciendo mal? (os dejo los dos archivos php de virtuemart por si os son de utilidad)

Saludos y muchas gracias a todos.

URL del sitio: http://www.gestycompra.com/index.php?option=com_virtuemart&page=shop.browse&category_id=158&Itemid=71

Citar
Respondido : 27/02/2012 10:41 am
David Noguera
 David Noguera
Miembro Moderator

Hola Jose Manuel, es posible que editando algún fichero hayas dejado algún error sin darte cuenta y esté dando problemas, revisa los ficheros error_log de tu cuenta para ver si hay referencia a este tipo de problemas:

https://www.webempresa.com/blog/que-es-un-error-500-y-como-localizarlo-en-nuestra-web.html

Por otra parte, para ver que contiene la variable $products[$i]['base_amount'] , en el paso 4, añade este código:

print_r($products[$i]['base_amount'] );

Justo después de la línea que añades y comprueba la salida del print_r..

Pásanos la información que te indicamos y seguimos mirando...

Saludos

ResponderCitar
Respondido : 27/02/2012 3:31 pm

Lucas
 Lucas
Miembro Admin

Hola,

Veo que en el paso 1 tienes esto:

$fieldnames = "`#__{vm}_product`.`product_id`, `product_name`, `products_per_row`, `category_browsepage`, `category_flypage`, `#__{vm}_category`.`category_id`, `product_full_image`, `product_thumb_image`, `product_s_desc`, `product_parent_id`, `product_publish`, `product_in_stock`, `product_sku`, `product_url`, `product_weight`, `product_weight_uom`, `product_length`, `product_width`, `product_height`, `product_lwh_uom`, `product_available_date`, `product_availability`, `#__{vm}_product`.`mdate`, `#__{vm}_product`.`product_id`, `#__{vm}_product_qty_shipping`.`base_amount`";

Veo que tienes dos veces el product_id y es posible que no te funcione si está duplicado.

El código original es:

$fieldnames = "`#__{vm}_product`.`product_id`, `product_name`, `products_per_row`, `category_browsepage`, `category_flypage`, `#__{vm}_category`.`category_id`, `product_full_image`, `product_thumb_image`, `product_s_desc`, `product_parent_id`, `product_publish`, `product_in_stock`, `product_sku`, `product_url`, `product_weight`, `product_weight_uom`, `product_length`, `product_width`, `product_height`, `product_lwh_uom`, `product_available_date`, `product_availability`, `#__{vm}_product`.`mdate`, `#__{vm}_product`.`cdate`";

Por lo que yo dejaría:

$fieldnames = "`#__{vm}_product`.`product_id`, `product_name`, `products_per_row`, `category_browsepage`, `category_flypage`, `#__{vm}_category`.`category_id`, `product_full_image`, `product_thumb_image`, `product_s_desc`, `product_parent_id`, `product_publish`, `product_in_stock`, `product_sku`, `product_url`, `product_weight`, `product_weight_uom`, `product_length`, `product_width`, `product_height`, `product_lwh_uom`, `product_available_date`, `product_availability`, `#__{vm}_product`.`mdate`, `#__{vm}_product`.`cdate`,`#__{vm}_product_qty_shipping`.`base_amount`";
ResponderCitar
Respondido : 27/02/2012 6:19 pm
José Manuel
 José Manuel
Usuario eminente

Muchas gracias, David y Lucas:

He rectificado el código, tal como me había sugerido Lucas (el product_id estaba duplicado, efectivamente) y añadido el print_r. La página sigue sin mostrar nada y en los ficheros de error_log el último error (en realidad es una advertencia) que me aparece es:

[27-Feb-2012 15:19:15] PHP Warning: PHP Startup: Suhosin Extension does not officially support PHP 5.2 and below anymore, because it is discontinued. Use it at your own risk. in Unknown on line 0

No sé si tiene algo que ver con esto.

Saludos y muchas gracias a los dos.

ResponderCitar
Respondido : 28/02/2012 8:11 am

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

David Noguera
 David Noguera
Miembro Moderator

Hola Jose Manuel,

sobre el warning de suhosin, no creo que tenga nada que ver, pese a todo, puedes envíar un ticket de soporte para revisarlo..

En el paso 4 después de la línea que añades, añade esta línea:

print_r($products[$i]);

Luego refresca la página del browse y péganos lo que aparezca..

Después comprueba si poniendo un base_amount fijo en el paso 4 te lo muestra en el browse después, es decir, si pones algo así en el paso 4:

$products[$i]['base_amount'] = 130;

Si después muestra ese base_amount cuando se muestra el producto o si así tampoco funciona... así sabremos si es un problema de la consulta SQL o de algún error en el código..

Otra opción sería hacer la consulta SQL de forma independiente en el paso 4, obtener el baseamount directamente de la base de datos y después asignarlo, de una forma similar a esta::

$SQL= "select `base_amount` from #__vm_product_qty_shipping WHERE #__vm_product_qty_shipping.product_id = " . products[$i]['product_id'];
$db = JFactory::getDBO();
$db->setQuery($SQL);
$obj = $db->loadObject();
$products[$i]['base_amount'] = $obj->base_amount;

Saludos!

ResponderCitar
Respondido : 28/02/2012 9:38 am
José Manuel
 José Manuel
Usuario eminente

Hola de nuevo, David:

Con el print_r no aparece ningún producto en la página ni ningún mensaje. Y poniendole un base_amount fijo tampoco aparece nada de nada.

Con la opción de la consulta SQL independiente la página ni siquiera carga.

Saludos y muchas gracias por el tiempo y la paciencia.

ResponderCitar
Respondido : 28/02/2012 7:20 pm

Cursos Gratuitos WordPress

David Noguera
 David Noguera
Miembro Moderator

Hola Jose Manuel,

si con el código SQL que has puesto sale un error debe ser que falla algo en el código, hayq eu buscar que falla mirando el error_log, mírate este vídeo para ver como encontrar los errores en el error_log:

https://www.webempresa.com/blog/que-es-un-error-500-y-como-localizarlo-en-nuestra-web.html

Por otro lado, si dices que colocando un valor fijo tampoco funciona, entonces parece que el fallo está en como modificas el core de VirtueMart para añadir el valor base_amount.

Cuando dices:

Ya había hecho esto antes con campos de la tabla "jos_vm_prodcuts"

De donde has sacado las instrucciones para hacer esos cambios en el core de VirtueMart??

Saludos

ResponderCitar
Respondido : 28/02/2012 8:45 pm
José Manuel
 José Manuel
Usuario eminente

Hola David, despues de añadir el print_r($products[$i]); el código que aparece (para cada producto) es:

LEFT JOIN `#__{vm}_product_price` ON `#__{vm}_product`.`product_id` = `#__{vm}_product_price`.`product_id` WHERE (`#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_id`) AND `#__{vm}_product_category_xref`.`category_id`=`#__{vm}_category`.`category_id` AND `#__{vm}_product_category_xref`.`category_id`=158 AND ((`#__{vm}_product`.`product_id`=`#__{vm}_product_price`.`product_id` AND `#__{vm}_shopper_group`.`shopper_group_id`=`#__{vm}_product_price`.`shopper_group_id`) OR `#__{vm}_product_price`.`product_id` IS NULL) AND `#__{vm}_shopper_group`.`default` = 1 AND `product_parent_id`=0 AND `product_publish`='Y' AND `category_publish`='Y' GROUP BY `#__{vm}_product`.`product_sku` ORDER BY `#__{vm}_product`.`product_name` ASC, `#__{vm}_product`.`product_id` Array ( [files] => Array ( ) [images] => Array ( ) [form_addtocart] =>
Cantidad:
[has_addtocart] => 1 [product_flypage] => index.php?page=shop.product_details&flypage=flypage-vmblend.tpl&product_id=1119&category_id=158&option=com_virtuemart&Itemid=71 [product_thumb_image] => &newxsize=125&newysize=125&fileout= [product_full_image] => [full_image_width] => 440 [full_image_height] => 370 [product_name] => Horno indep. Bosch HBA22R251E [product_s_desc] => Horno indep. Bosch HBA22R251E, 51L, multifuncion, inox, autolimpiable, programador [product_details] => Detalle del producto [product_rating] => Puntuacion de los usuarios:
0 stars Total de los votos: 0 [product_price] => 315,00 € [product_price_raw] => Array ( [product_price] => 266.94915 [product_currency] => EUR [product_base_price] => 266.94915 [product_has_multiple_prices] => [product_price_id] => 14441 [item] => 1 ) [product_sku] => HBA22R251E [product_weight] => 0.0000 [product_weight_uom] => pounds. [product_length] => 0.0000 [product_width] => 0.0000 [product_height] => 0.0000 [product_lwh_uom] => inches [product_in_stock] => 2 [product_available_date] => Miércoles, 25 Enero 2012 [product_availability] => [cdate] => Martes, 28 Febrero 2012 [mdate] => Sábado, 28 Enero 2012 [product_url] => [base_amount] => ) Array ( [files] => Array ( ) [images] => Array ( )

ResponderCitar
Respondido : 28/02/2012 8:52 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

José Manuel
 José Manuel
Usuario eminente

Las instrucciones estaban en el foro oficial de VM y funciona perfectamente con los campos de la tabla principal de producto, jos_vm_products. Puedes añadir el campo que quieras a esa tabla y con lo mismo que yo he hecho funciona de maravilla; bueno, también tienes que tocar el ps.product.php para actualizar / modificar datos, pero funciona.

En cambio con los campos de una tabla que no sea esa, no tengo manera de hacerlo funcionar. Ni siquiera funciona con una consulta independiente. No consigo saber por qué.

Saludos y gracias.

ResponderCitar
Respondido : 29/02/2012 9:40 am
David Noguera
 David Noguera
Miembro Moderator

Hola José Manuel,

entiendo que la extensión que has usado es esta:

http://www.compdat.com/index.php?option=com_docman&Itemid=32

No veo documentación al respecto sobre como añadir el campo al listado de productos... yo para no complicarme la vida, haría una consulta SQL en el propio fichero browse_vmblend.php, es decir, sobre el theme de VirtueMart, y ahí mismo haría un echo del valor base_amount...

Si quieres hacerlo modificando todo el core de VirtueMart, cosa que no la veo aconsejable, ya que puedes perder todos los cambios con una actualización de VM... pues puedes probar a serguir este tutorial:

http://www.solojoomla.com/anadir-nuevos-campos-en-productos-virtuemart.html

Saludos

ResponderCitar
Respondido : 29/02/2012 9:57 am

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

José Manuel
 José Manuel
Usuario eminente

Efectivamente David, la extensión que he usado es esa, concretamente "Product SKU based Shipping Module" y no tiene documentación ninguna. Ya les he puesto varios tickets al soporte pero no los responden.

También he intentado lo que me comentas en el propio theme de VM, con una consulta casi idéntica a la que has posteado antes, pero tampoco me funciona. De todas formas volveré a intentarlo.

Saludos y gracias.

ResponderCitar
Respondido : 29/02/2012 10:12 am
David Noguera
 David Noguera
Miembro Moderator

Hola Jose Manuel,

haciendo la consulta en el theme de VirtueMart debe de funcionarte.. péganos el código que pones en el theme de VirtueMart para ver que puede fallar...

Si se te queda la pantalla en blanco has de buscar en los ficheros error_log cual es el problema...

Saludos

ResponderCitar
Respondido : 29/02/2012 10:17 am

José Manuel
 José Manuel
Usuario eminente

Ahí va el código (que tampoco me funciona):

query($q);
while ($db_browse->next_record()) {
$base_amount=$db_browse->f("base_amount");
}
?>

<a href="" title="">

<a title="" href="">

<a class="readon" href="" title="">...

Saludos y muchisimas gracias.

ResponderCitar
Respondido : 01/03/2012 7:18 pm
David Noguera
 David Noguera
Miembro Moderator

Hola JoseManuel,

veo un error en la consulta SQL:

$q = "SELECT `base_amount` FROM `#__{vm}_product_qty_shipping` where #__{vm}_product.product_sku = " .
"#__{vm}_product_qty_shipping.product_sku and #__{vm}_product.product_id="
. $product_id;

Se puede colocar {vm} en caso de que estés usando el API de base de datos de VirtueMArt, como no lo estás usando, has de usar el nombre exacto de la tabla tal y como te aparece en tu phpMyAdmin, supongo que será algo así:

$q = "SELECT `base_amount` FROM `#__vm_product_qty_shipping` where #__vm_product.product_sku = " .
"#__vm_product_qty_shipping.product_sku and #__vm_product.product_id="
. $product_id;

a ver si así si que te devuelve registros la consulta..

Saludos

ResponderCitar
Respondido : 01/03/2012 8:10 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

José Manuel
 José Manuel
Usuario eminente

Hola de nuevo David:

Lo he probado con el nombre como tu me dices, e incluso con el nombre completo, pero nada.

¿vosotros podeis arreglarlo?

Lo digo porque el cliente ya se impacienta sobremanera y necesito sacarlo.

Saludos y muchas gracias.

ResponderCitar
Respondido : 01/03/2012 9:54 pm
Página 1 / 2