Avisos
Vaciar todo

agregar nuevos campos de producto  

Página 2 / 2
 
Gabriel
 Gabriel
Reputable Member

Hola, necesito agregar nuevos campos de productos.

Porque necesito que el artículo muestre varios ítems en su pantalla de detalle.

Encontré un tutorial en la web pero evidentemente es de un vm viejo y las instrucciones para hacer el php no coinciden con los archivos php que yo tengo en el sitio.
Hice los agregados a la base de datos de los nuevos campos pero no doy con los que hay que hacer en el código php.

Alguien sabe qué archivos hay que cambiar en la versión 3x de VM, cuál es la ruta para encontrarlos y qué debo modificar en cada uno de ellos?

Mil gracias!!!

URL del sitio: Contenido solo visible a usuarios registrados

Citar
Respondido : 29/12/2015 10:44 pm
Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

Para ver si esta variable tiene los campos prueba imprimir el objeto puedes usar :

print_r ($this->product);

o

var_dump($this->product);

Luego consulta el detalle de algún producto y verifica que código te muestra, esto es para ver que valores tiene el objeto product, puedes adjuntar lo que te reporta, este código tienes que ponerlo directamente no dentro del "if"

Saludos.

ResponderCitar
Respondido : 05/01/2016 9:43 pm

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

Gabriel
 Gabriel
Reputable Member

Hola,
alguien tiene alguna respuesta con esto?
hasta ahora probé todas las sugerencias dadas y no se logran ver los nuevos campos en el detalle de los productos.
Cómo puedo avanzar con esto? Necesito indicar estos detalles de cada producto.
Quedo a la espera...
Gracias!!!

ResponderCitar
Respondido : 07/01/2016 11:39 pm
Gabriel
 Gabriel
Reputable Member

No sé manejarme mucho con los php y códigos, pero hice esto según entendí de tu sugerencia:
1- en el defaul.php puse lo que digiste así:
// nuevos campos
var_dump($this->product);
if ( ! empty($this->product->product_aplicacion) ){
echo "APLICACIÓN: ".$this->product->product_aplicacion;
}

if ( ! empty($this->product->product_modelo) ){
echo "MODELO: ".$this->product->product_modelo;
}

1- Obtuve el resultado como el que te adjunto: (imagen de lo que me apareció y el texto)
Si ahí tenían que aparecer los campos nuevos,
product_aplicacion y product_modelo
los busqué pero no los encontré.

Sin embargo el log del CSVI dijo que los había importado correctamente, que pasó? nunca fueron tomados por el VM?

Y ahora???

Edité el post porque quería enviarte el screen del php admin donde están los campos nuevos creados y los datos importados. Ahí se ve todo bien, la base de datos tiene incorporada la info que va en los nuevos campos, o sea que es sólo que no se ve en el front.

ResponderCitar
Respondido : 08/01/2016 12:35 am

Cursos Gratuitos WordPress

Jhon
 Jhon
Soporte CMS Webempresa Moderator

HOla

Tendrías que al parecer modificar el core de virtuemart para que te tome estos nuevos campos,

Verás, virtuemart usa MVC (Modelo - Vista - Controlador), los datos se obtienen del model, pero este a su vez se ayuda de una clase genércia de tabla, es en este archivo de tabla en donde se definen con campos se trabajará, en tu caso como agregaste nuevos campos estos no estan listados en esta tabla.

Ubica este archivo :
/administrator/components/com_virtuemart/tables/products.php

En este archivo verás la definición de campos de base de datos como variables, antes de la función de construct tendrías que definir tus campos, por ejemplo :

var $product_aplicacion= null;

Tendrías que tener los mismos nombre en la BD, es decir el campo debe llamarse product_aplicacion en la tabla de productos

Agrega el resto de tus campos de la misma manera en este archivo y comprueba nuevamente.

PD. Tienes que tener en cuenta que estas modificando el core de virtuemart por lo que tienes que documentar esto ya que si actualizas perderás los cambios y debes volverlo a realizar.

Saludos.

ResponderCitar
Respondido : 08/01/2016 6:00 pm
Gabriel
 Gabriel
Reputable Member

Jhon FUNCIONA!!
Mirá agregué por ahora (luego agrego todos los que necesito) los 2 campos nuevos al final de la lista así:

class TableProducts extends VmTable {

/** @var int Primary key */
var $virtuemart_product_id = 0;
/** @var integer Product id */
var $virtuemart_vendor_id = 0;
/** @var string File name */
var $product_parent_id = 0;
/** @var string File title */
var $product_sku= null;
var $product_gtin = null;
var $product_mpn = null;
var $product_aplicacion= null;
var $product_modelo= null;

AHORA en el screen de detalle del producto me quedan uno al lado del otro, te mando la imagen,
cómo hago para que vaya uno debajo del otro:
APLICACION:
MODELO:

Para tener en cuenta...
Lo que cambié en el código es sobre el VM? o sea que cada vez que actualice el VM voy a tener que sumar esos campos en el product_php ? o cada vez que haga una actualización de joomla?

Perdón por mi ignorancia pero es el primer carrito de compras que armo.
MIL GRACIAS!!! por tu dedicación y paciencia en orientarme con esto, lograrlo es muy importante para avanzar en el sitio, tengo 2 sitios a realizar con la misma temática y mucha cantidad de productos a agregar.

Quedo a la espera de tu respuesta y espero con esto liberarte por un tiempo.... hasta que me trabe en otra cosa 🙂

ResponderCitar
Respondido : 09/01/2016 1:18 am

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

Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

Lo que sucede es que el código esta puesto directamente, faltaría poner un contenedor, es decir una etiqueta Div en cada uno, es decir quedaría

if ( ! empty($this->product->product_aplicacion) ){
echo "
APLICACIÓN: ".$this->product->product_aplicacion."
"; }

Le agregué una class aplicacion, en caso quieras posteriormente dar estilos (color,etc) a esta carácterística
Ten especial cuidado en poner las comillas simples ' y verifica que al final el punto . concatena con "

"

Lo mismo tendrías que hacer para los otros campos, esto permitirá definir un bloque por cada información

Sólo tendrías que volver a realizar estos cambios cuando actualices virtuemart, cuando actualices joomla no se sobrescriben estos archivos, por eso es importante que documentes este cambio

Saludos.

ResponderCitar
Respondido : 09/01/2016 5:38 pm
Gabriel
 Gabriel
Reputable Member

Buenísimo Jhon! mañana hago todo este cambio y agrego los otros ítems, cualquier cosa que surja o duda te vuelvo a contactar.
Desde ya te agradezco toda la dedicación, no tenés idea lo que esto me ayuda para avanzar con el trabajo, hace más de un mes que lo tengo frenado porque no encontraba la vuelta, y el cliente preguntándome porque necesita del sitio.

Así que MIL GRACIAS!!!

ResponderCitar
Respondido : 12/01/2016 12:01 am

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

Gabriel
 Gabriel
Reputable Member

Hola Jhon,
me apareció un tema que no sé cómo resolver.
Estoy creando en la base de datos ...vietuemart_products
los nuevos campos porque son más los que necesito que esos dos que había creado a un principio, y me salta este error:
Error

consulta SQL:

ALTER TABLE `w47fa_virtuemart_products` ADD `product_tipo` VARCHAR( 64 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `product_sistema` ;

MySQL ha dicho: Documentación
#1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

Qué hago ahora, me falta crear esa que tiró el error y dos más, y con eso ya estaría.

No entiendo a qué se refiere ese error y cómo solucionarlo.
Gracias!!!!
Aguardo tu respuesta a ver si con eso ya sigo para adelante

ResponderCitar
Respondido : 12/01/2016 4:21 pm
Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

Asumo que usas PHPMyadmin, creas los campos adicionales con conslutas SQL?, según el mensaje esta mal el tipo de dato, podrías definirlo como char(64) o como varchar()

Sin embargo te recomiendo usar la vista de la estructura de la tabla, desde allí puedes crear el campo de manera visual

Saludos.

ResponderCitar
Respondido : 12/01/2016 8:33 pm

Página 2 / 2