Jump to content
NBlack

[APORTE] Obtener un listado de productos y atributos (Compatible Prestashop 1.6)

Recommended Posts

¡Hola!

 

Me ha tocado hacer un PHP que extrae determinados campos de nuestras bases de datos y nos muestra todos los atributos y productos con las cantidades y precios.

 

Lo muestra con la siguiente estructura:

 

Categoria ID referencia descripcion pvp base ref. atributo tipo atributo valor atributo precio atributo cantidad

 

Espero que a más de 1 le valga, hay que modificar un poco el inicio del código pero lo he dejado bien explicado.

 

INSTRUCCIONES:

1. Modificar

$host = "METE_TU_HOST";

$bbdd_user = "METE_NOMBRE DE TU USUARIO DE LA BBDD";

$pass = "METE TU PASS DE LA BBDD";

$db = "METE EL NOMBRE DE LA BBDD";

 

2. Subirlo a vuestra web

 

3. Cargar la web desde el navegador

 

4. Se descarga el CSV - Abrir con Excel.

 

Un saludo!

listado_atributos_articulos.php

Edited by nadie
Moderación del foro: Edita título del tema añadiendo que teóricamente es compatible con Prestashop 1.6 según el autor del aporte (see edit history)
  • Like 2

Share this post


Link to post
Share on other sites

Notificación para NBlack,

 

* Aporte agregado al "Índice de Aportes" : http://www.prestasho...s-foro-espanol/

 

PD: Gracias por su colaboración con la Comunidad de Prestashop.

 

(Te he editado el título del tema indicando que es compatible con Prestashop 1.6, para dejarlo mas claro cuando visiten el tema los usuarios, aunque ya lo indicas en el codigo del *.php que has adjuntado.)

Edited by nadie (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

Gracias Blade-Runner, yo lo uso ya a diario para la gente que me lo pidió y va genial.

Share this post


Link to post
Share on other sites

Probado en version 1.5 y 1.6 y en distintas tiendas, en dos me descargo el csv vacio y en otras dos dio estos errores

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/xxxxx/public_html/listado_atributos_articulos.php on line 43

Warning: Cannot modify header information - headers already sent by (output started at /home/xxxxx/public_html/listado_atributos_articulos.php:43) in /home/xxxxx/public_html/listado_atributos_articulos.php on line 117

Warning: Cannot modify header information - headers already sent by (output started at /home/xxxx/public_html/listado_atributos_articulos.php:43) in /home/xxxx/public_html/listado_atributos_articulos.php on line 118

Warning: Cannot modify header information - headers already sent by (output started at /home/xxxxx/public_html/listado_atributos_articulos.php:43) in /home/xxxxx/public_html/listado_atributos_articulos.php on line 119

Warning: Cannot modify header information - headers already sent by (output started at /home/xxxxx/public_html/listado_atributos_articulos.php:43) in /home/xxxxx/public_html/listado_atributos_articulos.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at /home/xxxx/public_html/listado_atributos_articulos.php:43) in /home/xxxx/public_html/listado_atributos_articulos.php on line 121
Categoria;ID;referencia;descripcion;pvp base;ref. atributo;tipo atributo;valor atributo;precio atributo;cantidad

Share this post


Link to post
Share on other sites

Josraso, modificaste todos los parametros del php?

Es para bbdd con prefijo prstshp en el nombre de las tablas.

Share this post


Link to post
Share on other sites

Gracias por el aporte, me parece muy interesante para trabajar a partir de él; en el caso de que haya mas de una combinación, en la columna valor atributo, solo sale una de las combinaciones, te explico, en el caso de ropa que hay combinación talla+color, sólo sale el color...

También sería genial poder hacer la operación inversa, en lugar de consultas para sacar listados, realizar updates para poder actualizar, por ejemplo, el stock de las combinaciones a partir de ese mismo csv.

Muchas gracias por el aporte.

Share this post


Link to post
Share on other sites

Perdón por la omisión chicos, el email dejó de mandarme notificaciones.

He comprobado que funciona hoy otra vez que no se donde puse el mío (vaya caso perdido soy).

 

¡Un saludo!

Share this post


Link to post
Share on other sites

Hola

muchas gracias por el aporte me parece muy interesante,estoy probando pero me da este error

 

 

 

No pudo conectarse: Access denied for user 'aquí_usuario_usuario'@'localhost' (using password: YES)

 

un saludo

Share this post


Link to post
Share on other sites

Monray,

 

Ten en cuenta que debes cambiar el usuario y la contraseña y ponerla según el ejemplo.

 

En caso de haberlo hecho así o bien no tienes acceso localhost a mysql (lo cual carece de sentido por completo porque no arrancaría la tienda online) o has metido la contraseña mal. Recuerda que es el usuario y contraseña de mysql para esa base de datos, no de prestashop

Share this post


Link to post
Share on other sites

Buenos días,

 

Saben si funciona con la version PS 1.6.0.14 ??

 

He subido y cambiado los datos y nada... da error al acceder a la url donde esta

HTTP ERROR 500

 

Gracias

Edited by mistik777 (see edit history)

Share this post


Link to post
Share on other sites

mistik,

 

En principio no te debería dar error si las bases de datos son las mismas (y por lo que he mirado no han cambiado).

 

Error 500 es cuando tu servidor genera un timeout ( demasiado tiempo en contestar ), tendrás que subir el tiempo de espera en nginx o en apache.

Share this post


Link to post
Share on other sites

Hola tanto tiempo, voy revivir este post sorry, lo hago por que esta en aporte y se agradece la intención pero bueno seria ke sigan unos consejillos, sin animo de ofender ni molestar, lo hago por que esto sale en buscador y cualquier otra persona que desee hacer esto, va mi consejo:

 

1- No deben usar :

$host = "METE_TU_HOST";
$bbdd_user = "METE_NOMBRE DE TU USUARIO DE LA BBDD";
$pass = "METE TU PASS DE LA BBDD";
$db = "METE EL NOMBRE DE LA BBDD";

jamas, prestshop gestiona la conexion, eso es inecesario

 

por otra parte si trabajamos con POO, podemos llamar a un objeto siempre e incluso hace con el lo que deseamos:

 

mas claro, quieren listar los nombres de productos??

 

simplemente hacemos esto :

Product::getProductName($id_producto_a_listar); 

ahora para listar el nombre completo en el caso de tener atributos:

Product::getProductName($id_producto_a_listar, $id_product_attribute); 

ahora para listar por idioma:

Product::getProductName($id_producto_a_listar, $id_product_attribute, $id_lang);

simple ^_^

 

ahora obvio que si quieren generar toda la lista de productos de la tienda, deberan hacer un foreach para obtener primero los id de producto e id de atributos para el idioma que deseen .

 

tabajando POO, seria similar solo que creamos el objeto product asi :


$mi_producto_nombre = New Product($id_producto_a_listar);

$mi_producto_nombre->name;

$mi_producto_nombre->active;

$mi_producto_nombre->getQuantity;

etc etc ...

ahora podemos crear una funcion para listar los productos simple, es algo rapido vale!

protected function generaMilistaProductos($id = array())
{
    $result = '';
    $langId = Context::getContext()->language->id;
    foreach ($id as $productId) {
        if ((int) $productId > 0) {
            $productName = Product::getProductName((int) $productId, null, $langId);
            if ($productName) {
                $result .= '<li id="product-'.$productId . '" class="miclass">
                                <span>' . $productName . '</span>
                            </li>';
            }
        }
    }
    return $result;
}

no ten que se pasa un array con la lista de id_product, la funcion no es publica, o sea no puede llamar fuera de la class que se use.

public function PasameIdProductoYid_atributo_y_hago_lo_que_queres_en_cualquier_idioma($id_product, $id_product_attribute)
{
    $res = array();
    foreach (Language::getIDs(true) as $id_lang) {
        $res[$id_lang] = Product::getProductName($id_product, $id_product_attribute, $id_lang);
    }
    return $res;
}


FELIZ AÑOS PA TODOS!! :P :P :P

Share this post


Link to post
Share on other sites

Buenas tardes,

Alguien podría decirme si sería muy complicado añadirle a este php que los productos que no tengan stock en ninguna de sus combinaciones se les actualice el campo publicado a 0, es decir que el mismo php despublique los productos sin stock ninguno.

Gracias de antemano.

Share this post


Link to post
Share on other sites
En 14/12/2014 a las 3:13 PM, NBlack dijo:

¡Hola!

 

Me ha tocado hacer un PHP que extrae determinados campos de nuestras bases de datos y nos muestra todos los atributos y productos con las cantidades y precios.

 

Lo muestra con la siguiente estructura:

 

Categoria ID referencia descripcion pvp base ref. atributo tipo atributo valor atributo precio atributo cantidad

 

Espero que a más de 1 le valga, hay que modificar un poco el inicio del código pero lo he dejado bien explicado.

 

INSTRUCCIONES:

1. Modificar

$host = "METE_TU_HOST";

$bbdd_user = "METE_NOMBRE DE TU USUARIO DE LA BBDD";

$pass = "METE TU PASS DE LA BBDD";

$db = "METE EL NOMBRE DE LA BBDD";

 

2. Subirlo a vuestra web

 

3. Cargar la web desde el navegador

 

4. Se descarga el CSV - Abrir con Excel.

 

Un saludo!

listado_atributos_articulos.php

Pregunto, a alguien le funciona esto en ps 1.6?

Yo tengo ps 1.6.0.11 y no consigo que funcione, el problema es que genera el listado pero mezcla los resultados, como por ejemplo en la columna de precio aparece la descripción en algunos artículos, en otros no.

Share this post


Link to post
Share on other sites
hace 18 horas, Eusebio100 dijo:

Pregunto, a alguien le funciona esto en ps 1.6?

Yo tengo ps 1.6.0.11 y no consigo que funcione, el problema es que genera el listado pero mezcla los resultados, como por ejemplo en la columna de precio aparece la descripción en algunos artículos, en otros no.

Yo mismo me respondo, era un problema de tildes y caracteres especiales en la descripción corta del producto. Como no necesitaba exportar la descripción, en lugar de pelearme con preg_replace, la solución fácil ha sido eliminar la descripción del csv.

Ahora va perfecto.

Share this post


Link to post
Share on other sites

Disculpa Eusebio, prestashop no me manda emails cuando hay respuestas aun estando suscrito no se por qué.

Me alegro que pudieras arreglarlo.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More