Ejemplo 1 - Exportación sencilla

Introducción y estructura de datos

 

Con este primer ejemplo podrás ver, de una forma práctica, la exportación sencilla a través de la API de todos los ítems en modo visible que tengamos dentro de una cuenta PIM.

Vamos a empezar creando un Conector de exportación genérico. Para ello, en la Tienda de Canales de nuestro PIM, seleccionamos el primero conector:

1

En la primera página del conector, la página de Parámetros, seleccionaremos una clave privada para proporcionar la seguridad necesaria en la transferencia de datos.

2

Desde la página de Parámetros seleccionaremos también los Idiomas a conectar por el conector y el estado de los ítems a enviar.

3

Para este ejemplo conectaremos solamente el idioma en inglés y le diremos que todos los ítems que se envíen, sean los que están en estado visible.

En Parámetros,Incluir categorías vacías nos indica si queremos o no exportar aquellas categorías que no tienen ítems en su interior. También vemos Exportar títulos multidioma, que permite elegir si queremos que los títulos de los campos estén en los diferentes idiomas traducidos, o en el que tengamos como idioma principal.

4

Con los parámetros configurados como vemos en la captura no se exportarán ni las categorías ni los títulos multidioma.

Una vez tengamos configurados los parámetros de la primera pestaña del conector será el momento de ir a los Datos de salida donde configuraremos las distintas tablas y sus campos.

Para los ejemplos seleccionaremos pocos campos de cada una de las tablas.

En Categorías seleccionamos los campos de Referencia, Nombre, Referencia de la Categoría Padre y el de la Imagen:

5

Para la tabla de Productos dejaremos los campos de Referencia, Nombre, Referencia de su Categoría, la Descripción y su Imagen:

6

Para la tabla de Variantes exportaremos los campos de Referencia de variante, Referencia  de producto y 2 atributos variables: la talla (Size) y el precio (Price):

7

Una vez guardada la configuración del conector veremos como ya estará creado y esperando la primera llamada.

8

Una vez creado el conector elegiremos los ítems que queremos exportar. Como en este ejemplo no hemos añadido filtros en el conector, el único filtro será el estado de los ítems.

En las categorías hemos puesto todo el árbol de categorías en visible por lo que tendremos 14 categorías visibles:

9

En los productos elegiremos aleatoriamente cinco productos, donde solo dos tienen variantes, dando un total de 6 variantes:

10

En la tabla de variantes también nos aseguraremos de que estén las 16 variantes en modo visible:

The variants

 

Código

 

El código es algo imprescindible para la conexión. Vamos a ver en este caso un ejemplo para exportar los ítems deseados a través de la API de Sales Layer. 

Empezamos por crear una clase SalesLayer_Conn() con las credenciales del conector como parámetros. Credenciales están presentes en el conector de Sales Layer como muestra la siguiente captura:

Conector

El código del conector lo hemos guardado en el parámetro $connector_id y su clave en el parámetro $secret_key.

Será el momento de hacer una llamada a la función get_info() de la clase. Esta función extrae todos los datos configurados en el conector y los guarda localmente.

Como parámetro de la propia función hemos pasado el valor de $last_update. Este parámetro corresponde a la fecha UNIX de la última sincronización y se suele guardar siempre que se hace una sincronización para poder usarla en la llamada de la función en la sincronización siguiente. 

En este caso, como se trata de la primera vez, hemos puesto el parámetro igual a 0.

Despues de verificar si la API ha devuelto algún error a través de la función has_response_error(), imprimimos con las funciones del SDK la siguiente información de carácter relevante:

  • La versión de la API a través de la función get_response_api_version()
  • La fecha en UNIX de la hora exacta de la llamada a la API con la función get_response_time()
  • Y el idioma por defecto del PIM llamando la función get_response_default_language() 

Posteriormente y con la ayuda de la librería Nice_r (https://github.com/uuf6429/nice_r) imprimimos los datos devueltos por la API con la función get_response_table_data().

<?php 
define('LOC_BASE', dirname(__FILE__) . '/');
require(LOC_BASE.'SalesLayer-Conn.php');
require(LOC_BASE.'lib/nice_r-master/Nicer.php');
?>

<!DOCTYPE html>
<html dir="ltr" lang="en-US">
<head>
    <link rel="stylesheet" type="text/css" href="lib/nice_r-master/nice_r.css?version=<?php echo filemtime(LOC_BASE.'lib/nice_r-master/nice_r.css'); ?>"/>
    <script type="text/javascript" src="lib/nice_r-master/nice_r.js?version=<?php echo filemtime(LOC_BASE.'lib/nice_r-master/nice_r.js'); ?>"></script>
</head>
<body>
    <?php
    //SL conector credentials
    $connector_id = 'CN12347H3308C4486';
    $secret_key = '7aeb575d9bf15bfa238e8f01842417a2';

    $last_update= "0";

    //Create object with the credentials on the connector in S
    $SLConn = new SalesLayer_Conn ($connector_id, $secret_key);
    
    //API call to export the information
    $SLConn->get_info($last_update);

    if ($SLConn->has_response_error()) {
        echo "<h4>Error:</h4>\n\n Code: ".$SLConn->get_response_error().
             "<br>\nMessage: ".           $SLConn->get_response_error_message();
    } else {
        echo "<h4>Response OK</h4>\n".
             "<p>".
             "API version: <b>".            $SLConn->get_response_api_version()          ."</b><br />\n".
             "Time: <b>".                   $SLConn->get_response_time('unix')                 ."</b><br/>\n".
             "Default language: <b>".       $SLConn->get_response_default_language()     ."</b><br/><br />\n".
             "</p>";
        
        //Print response from API
        $n = new Nicer($SLConn->get_response_table_data());
        $n->render();
        echo "<hr/>";
    }       
    ?>
</body>
</html>

 

Ejecución y resultados

 

Estos son los resultados obtenidos después de haber ejecutado el script del código:

Results after running the code script

 Habíamos puesto 14 categorías, 5 productos y 16 variantes en visible pero ha devuelto:

  • 11 categorías 
  • 5 productos 
  • 6 variantes

Esto sucede porque en los parámetros del conector hemos puesto que no queríamos exportar las categorías vacías. Por lo tanto, las categorías que no tienen productos asociados no serán exportadas. Solo serán exportadas las categorías directas y sus asociadas.

 

Include empty categories

Las variantes, aunque todas estaban en modo visible, solo serán exportadas las variantes cuyos productos padre se han exportado igualmente. Solo 2 de los 5 productos que hemos puesto en visible tienen variantes por lo que únicamente serán exportadas las de esos dos productos.

Si analizamos un poquito más también podemos confirmar las tablas y los campos exportados. 

En la tabla de categorías, seleccionando categorías aleatoriamente, tenemos los cuatro campos que hemos seleccionado en el conector:

 

Category

En la tabla de productos tenemos:

Products

Y en la de variantes:

Variants