Soy nuevo en MailChimp y necesita algo de ayuda.

Con su boletín formulario de registro… simplemente incrustar algunas preenvasados código HTML en su página. Sin embargo, el problema con esto es que al hacer clic en enviar redirige a un MailChimp página. (No quiero redirigir a MailChimp, quiero que el usuario permanezca en el propio sitio web después de pulsar enviar.)

Que proporciona una API y un montón de documentación, pero casi cero ejemplos útiles. La API se supone que me permiten hacer una integración completa con mi sitio web o aplicación. Parece que cuando he leído algo en sus docs que se aplica a mí, hago clic en el enlace para obtener más información y me acaban de dar vueltas en círculos. Ellos te dicen como hacerlo pero no para «mostrar» cómo es.

Puedo obtener una Clave de API, tienen toneladas de documentación, y un montón de contenedores de & plugins… PHP, Drupal, WordPress, etc…

La confusión aquí con respecto a sus pre-empaquetado de soluciones es que acabo de tener una página HTML estática, no es de WordPress, PHP, Drupal o… así que no sé por dónde empezar … ni siquiera sé si voy a usar POST o GET.

Yo no soy un novato en la API… me manejo muy bien con la obtención de la API de Google Maps para hacer lo que quiera. Sin embargo, Google proporciona en el mundo real de ejemplos de trabajo además de la documentación detallada que es como yo lo aprendí. Sólo quiero verlo en acción antes de que yo pudiera comprender los puntos más finos de la API.

Sin ningún sólido ejemplos o tutoriales en su documentación en línea, me estoy preguntando cómo crear el más básico de HTML de formulario de registro de uso de su API.

  • No estoy seguro de que la API es lo que usted necesita para una simple página HTML. ¿Has probado sólo para incrustar el formulario? kb.mailchimp.com/article/…
  • por supuesto, usted necesita la API de MailChimp. De lo contrario, su forma será siempre redirigir a una MailChimp página, la cual es exactamente el problema que estoy de problemas aquí.
  • Lo siento, supongo que fue arrojado por la frase, «el problema es que acabo de tener una página que he creado con HTML, no de wordpress, no de php, drupal no… sólo que no sé por dónde empezar»
  • no se preocupe. «no sé por dónde empezar» fue en referencia al segundo párrafo que define el problema, «el problema es que (su newsletter signup form) no es muy inteligente. Hacer clic en enviar, se abre una ventana con un Mailchimp url, etc.»
  • Veo cómo he utilizado «el problema es» el doble de lo que puede ser engañoso. Voy a editar para su aclaración.
InformationsquelleAutor Sparky | 2011-02-17

3 Comentarios

  1. 68

    EDITADO:

    a partir de la publicación de esta respuesta de MailChimp ha lanzado la versión 2 & 3 de su API. La versión 3 será la única versión compatible a partir de 2017. Tan pronto como tengo la oportunidad de probarlo, voy a actualizar esta respuesta de la API de la versión 3.


    MailChimp API v3.0

    Como por notificación en la parte superior de esta página, todas las versiones anteriores de la API no se admitirá después de 2016.

    Mi solución utiliza PHP en el fondo para el manejo de la API, y jQuery para facilitar el Ajax.

    1) Descargar una envoltura de PHP que soporta la API v3.0. A partir de este escrito, no hay nada oficial que aparece en la última MailChimp docs que soporta v3.0, pero varios se enumeran en GitHub, así que he seleccionado este.

    2) Crear el siguiente archivo PHP, store-address.php, utilizando su propia clave de la API y de la lista de ID y, a continuación, coloque en el mismo directorio que el contenedor desde el paso uno. Recuerde seguir la documentación de su contenedor, pero todos ellos parecen bastante similar a este.

    <?php //for MailChimp API v3.0
    
    include('MailChimp.php');  //path to API wrapper downloaded from GitHub
    
    use \DrewM\MailChimp\MailChimp;
    
    function storeAddress() {
    
        $key        = "xxxxxxxxxxxxxxx-us1";
        $list_id    = "xxxxxx";
    
        $merge_vars = array(
            'FNAME'     => $_POST['fname'],
            'LNAME'     => $_POST['lname']
        );
    
        $mc = new MailChimp($key);
    
        //add the email to your list
        $result = $mc->post('/lists/'.$list_id.'/members', array(
                'email_address' => $_POST['email'],
                'merge_fields'  => $merge_vars,
                'status'        => 'pending'     //double opt-in
                //'status'     => 'subscribed'  //single opt-in
            )
        );
    
        return json_encode($result);
    
    }
    
    //If being called via ajax, run the function, else fail
    
    if ($_POST['ajax']) { 
        echo storeAddress(); //send the response back through Ajax
    } else {
        echo 'Method not allowed - please ensure JavaScript is enabled in this browser';
    }

    3) Crear el código HTML/CSS/JavaScript(jQuery) formulario (no es necesario estar en una página PHP, y el visitante nunca va a ver que PHP se utiliza en el fondo.)

    La respuesta en JSON, así que tendrás que manejarlo correctamente.

    Aquí es lo que mi index.html de archivo aparece como:

    <form id="signup" action="index.html" method="get">
        First Name: <input type="text" name="fname" id="fname" />
        Last Name: <input type="text" name="lname" id="lname" />
        email Address (required): <input type="email" name="email" id="email" />
        <input type="submit" id="SendButton" name="submit" value="Submit" />
    </form>
    <div id="message"></div>
    
    <script src="jquery.min.js"></script>
    <script>
    $(document).ready(function() {
        $('#signup').submit(function() {
            $("#message").html("Adding your email address...");
            $.ajax({
                url: 'inc/store-address.php', //proper url to your "store-address.php" file
                type: 'POST', //<- IMPORTANT
                data: $('#signup').serialize() + '&ajax=true',
                success: function(msg) {
                    var message = $.parseJSON(msg),
                        result = '';
                    if (message.status === 'pending') { //success
                        result = 'Success!  Please click the confirmation link that will be emailed to you shortly.';
                    } else { //error
                        result = 'Error: ' + message.detail;
                    }
                    $('#message').html(result); //display the message
                }
            });
            return false;
        });
    });
    </script>

    Versión de la API de MailChimp 1:

    (respuesta original)

    Después de ir a tientas por un tiempo, he encontrado un sitio con PHP ejemplo con jQuery. Desde que yo era capaz de crear una simple página HTML con jQuery que contiene el básico formulario de inscripción. Los archivos PHP están «ocultos» en el fondo, donde el usuario nunca ve a ellos, sin embargo el de jQuery se puede acceder a & uso.

    1) Descargar el 5 de PHP jQuery ejemplo aquí… (EDITAR: los enlaces están muertos. Sin embargo, la única parte importante es la API oficial de contenedor para PHP que está disponible AQUÍ.)

    http://apidocs.mailchimp.com/downloads/mcapi-simple-subscribe-jquery.zip

    Si usted sólo tiene PHP 4, sólo tienes que descargar la versión 1.2 de la MCAPI y reemplace el correspondiente MCAPI.class.php archivo de arriba.

    http://apidocs.mailchimp.com/downloads/mailchimp-api-class-1-2.zip

    2) Siga las instrucciones del archivo Readme mediante la adición de su clave de API y de la Lista de ID de la store-address.php archivo en los lugares apropiados.

    3) Usted también puede querer a reunir a sus usuarios’ nombre y/o otra información. Tienes que añadir una serie a la store-address.php archivo mediante la correspondiente Combinación de Variables.

    Aquí es lo que mi store-address.php archivo se parece a donde también se reúnen en el nombre, apellido y correo electrónico tipo:

    <?php
    
    function storeAddress() {
    
        require_once('MCAPI.class.php');  //same directory as store-address.php
    
        //grab an API Key from http://admin.mailchimp.com/account/api/
        $api = new MCAPI('123456789-us2');
    
        $merge_vars = Array( 
            'EMAIL' => $_GET['email'],
            'FNAME' => $_GET['fname'], 
            'LNAME' => $_GET['lname']
        );
    
        //grab your List's Unique Id by going to http://admin.mailchimp.com/lists/
        //Click the "settings" link for the list - the Unique Id is at the bottom of that page. 
        $list_id = "123456a";
    
        if ($api->listSubscribe($list_id, $_GET['email'], $merge_vars , $_GET['emailtype'])) {
            //It worked!   
            return 'Success!&nbsp; Check your inbox or spam folder for a message containing a confirmation link.';
        } else {
            //An error ocurred, return error message   
            return '<b>Error:</b>&nbsp; ' . $api->errorMessage;
        }
    
    }
    
    //If being called via ajax, autorun the function
    if($_GET['ajax']) { 
        echo storeAddress(); 
    }

    4) Crear su HTML/CSS/jQuery formulario. No es necesario estar en una página PHP.

    Aquí es lo que mi index.html de archivo aparece como:

    <form id="signup" action="index.html" method="get">
        First Name: <input type="text" name="fname" id="fname" />
        Last Name: <input type="text" name="lname" id="lname" />
        email Address (required): <input type="email" name="email" id="email" />
        HTML: <input type="radio" name="emailtype" value="html" checked="checked" />
        Text: <input type="radio" name="emailtype" value="text" />
        <input type="submit" id="SendButton" name="submit" value="Submit" />
    </form>
    <div id="message"></div>
    
    <script src="jquery.min.js"></script>
    <script>
    $(document).ready(function() {
        $('#signup').submit(function() {
            $("#message").html("Adding your email address...");
            $.ajax({
                url: 'inc/store-address.php', //proper url to your "store-address.php" file
                data: $('#signup').serialize() + '&ajax=true',
                success: function(msg) {
                    $('#message').html(msg);
                }
            });
            return false;
        });
    });
    </script>

    piezas Necesarias…

    • index.html construido sobre o similar. Con jQuery, el aspecto y las opciones son infinitas.

    • store-address.php archivo descargado como parte de PHP ejemplos en Mailchimp sitio y se modifican con su CLAVE de API y IDENTIFICADOR de LISTA. Que es necesario agregar otros campos opcionales a la matriz.

    • MCAPI.class.php archivo descargado desde Mailchimp sitio (versión 1.3 para PHP 5 o versión 1.2 para PHP 4). Coloque en el mismo directorio que el store-address.php o debe actualizar el path de la url dentro de store-address.php por lo que se puede encontrar.

    • Aviso – Si usted recibe un 500 server error, puede que no tenga php curl instalado. apt-get install php-curl debería solucionar el problema (En Ubuntu 16.04)
  2. 20

    Aquí es un ejemplo del uso de versión 2.0 de la API de Mailchimp junto con mailchimp-api (un mínimo de php abstracción de la clase para tratar con la API de Mailchimp).

    <?php
    
    include('MailChimp.php');
    
    $MailChimp = new MailChimp('API_KEY');
    $result = $MailChimp->call('lists/subscribe', array(
        'id'                => 'LIST_ID',
        'email'             => array( 'email' => $_POST['email'] ),
        'merge_vars'        => array(
            'MERGE2' => $_POST['name'] //MERGE name from list settings
            //there MERGE fields must be set if required in list settings
        ),
        'double_optin'      => false,
        'update_existing'   => true,
        'replace_interests' => false
    ));
    
    if( $result === false ) {
        //response wasn't even json
    }
    else if( isset($result->status) && $result->status == 'error' ) {
        //Error info: $result->status, $result->code, $result->name, $result->error
    }
    
    ?>

    Leer más sobre lo que usted puede enviar con la llamada a la API en el La Documentación de la API de MailChimp.

    • Gracias Jonas. He descargado el paquete de la api de mailchimp utilizando el enlace que usted ha proporcionado. Sin embargo, yo sólo puede encontrar un archivo llamado MailChimp.php y no MailChimp.class.php como en la 2ª línea de su código. Necesito cambiar el nombre del archivo para agregar la irónica «clase» antes de la extensión de php? Gracias
    • Hola Greg, no hay necesidad de el .class.php la extensión. Supongo que el propietario del paquete, simplemente ha cambiado de nombre el archivo. Fue nombrado MailChimp.class.php cuando escribí la respuesta. Voy a actualizar la respuesta con el actual nombre de archivo.
    • Última MailChimp utiliza el espacio de Nombres… nuevo /Drewm/MailChimp(‘API_KEY’);
  3. 7

    He aquí otro ejemplo de uso de la versión 2.0 de la API de Mailchimp utilizando el Oficial de la Envoltura de PHP.

    La diferencia entre mi ejemplo y otros publicado aquí es que estoy usando el suscribirse método de la Mailchimp_Lists clase, accesible a través de la creación de instancias de la clase de Mailchimp (->lists), en lugar de los genéricos de la llame método.

    $api_key = "MAILCHIMP_API_KEY";
    $list_id = "MAILCHIMP_LIST_ID";
    
    require('Mailchimp.php');
    $Mailchimp = new Mailchimp($api_key);
    $subscriber = $Mailchimp->lists->subscribe($list_id, array('email' => $_POST['email']));
    
    if ( ! empty($subscriber['leid'])) {
        //Success
    }
    • Si sólo estás usando las Listas, ¿usted tiene la necesitan todos los archivos que están en la parte superior de Mailchimp.php?
    • Y si se usa la COMBINACIÓN de vars, sólo tiene que añadir les gusta: $merge_vars = array( «FNAME»=>»nombre», «CUSTOMMRG» => «test123» ); $Mailchimp_Lists->suscribirse( $list_id, array( ‘email’ => $_POST[‘email’] ), $merge_vars );
    • Hola, por alguna razón que estoy recibiendo este mensaje de error. Si queréis saber por qué? Fatal error: Class ‘Mailchimp’ no se encuentra en /homez.527/dqsdsq/www/desdsqd.com/newsletter/subscribe.php en la línea 6
    • tal vez usted no incluyen(‘Mailchimp.php’) o require(Mailchimp.php archivo.
    • Usted probablemente podría ver a quitar/comentar algunas de ellas, no he mirado para ser honesto. Pero se necesita el principal Mailchimp.php como una instancia de sí mismo debe ser pasado al crear instancias de Mailchimp_Lists.
    • Sin duda un requisito, de lo contrario el script solo error fatal de todos modos cuando se intenta acceder a una propiedad o método en un no objeto, de modo que bien podría tener error en el momento de la inclusión.

Dejar respuesta

Please enter your comment!
Please enter your name here