4 - Paginación

Modificado el Mar, 19 May a 11:57 A. M.

Introducción y estructura de datos


A partir de la versión 1.18 de la API, los datos pueden exportarse mediante un sistema de paginación. Esto significa que los productos se devuelven en páginas de un tamaño predefinido en lugar de devolverse todos a la vez.

Esto resulta especialmente útil cuando se trabaja con catálogos grandes, ya que ayuda a evitar la sobrecarga del servidor durante la exportación.

Este ejemplo utiliza el mismo conector configurado en el Ejemplo 1.



En este escenario, todos los ítems están configurados como visibles: 14 categorías, 225 productos y 16 variantes.





Código


El script empieza creando un objeto SalesLayer_Conn() con las credenciales del conector. Como la paginación está disponible en la versión 1.18, el primer paso es definir la versión de la API con set_API_version('1.18').

Después, se define el tamaño de página con set_pagination(50), lo que significa que la exportación devuelve 50 productos por página.

Como se trata de una exportación completa, last_update se establece en 0.

<?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="es-ES">
<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
    //Credenciales del conector de SL
    $connector_id = 'CN12347H3308C4486';
    $secret_key = '7aeb575d9bf15bfa238e8f01842417a2';

    $last_update= "0";

    //Crear el objeto con las credenciales del conector en SL
    $SLConn = new SalesLayer_Conn ($connector_id, $secret_key);

    //Definir la versión de la API a la que se apunta
    $SLConn->set_API_version('1.18');
    //Definir el número de la paginación
    $SLConn->set_pagination(50);
    
    //Llamada a la API
    $SLConn->get_info($last_update);

    if ($SLConn->has_response_error()) {
        echo "<h4>Error:</h4>\n\n Código: ".$SLConn->get_response_error().
             "<br>\nMensaje: ".           $SLConn->get_response_error_message();
    } else {
        echo "<h4>Respuesta OK</h4>\n".
             "<p>".
             "Versión de la API: <b>".            $SLConn->get_response_api_version()          ."</b><br />\n".
             "Hora: <b>".                   $SLConn->get_response_time('unix')                 ."</b><br/>\n".
             "Idioma por defecto: <b>".       $SLConn->get_response_default_language()     ."</b><br/><br />\n".
             "</p>";

        //Imprimir la respuesta de la API
        $n = new Nicer($SLConn->get_response_table_data());
        $n->render();
        echo "<hr/>";
    }       
    ?>
</body>
</html>

El ejemplo también muestra cómo solicitar la página siguiente utilizando los nuevos valores de last_update y page devueltos por la respuesta anterior.

do {
    $SLConn->get_next_page_info();
    $n = new Nicer($SLConn->get_response_table_data());
    $n->render();
    echo "<hr/>";
} while ($SLupdate->have_next_page());


Ejecución y resultados


La primera llamada devuelve la primera página de productos, junto con los metadatos de respuesta para la paginación.



La respuesta incluye los datos de la página, el tiempo de respuesta del conector y los valores necesarios para obtener la página siguiente.

Cuando se realiza la siguiente llamada con esos valores, la API devuelve la página siguiente en lugar de repetir la primera.



Repitiendo el proceso, puedes seguir leyendo la exportación en bloques hasta que el conector haya devuelto todos los datos disponibles.




¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo