Cómo añadir las entradas de tu blog Wordpress en tu tienda Magento
==================================================================

Una manera rápida y sencilla de incluir las entradas de tu blog en tu ecommerce
-------------------------------------------------------------------------------

 

 

    By Way2 Ecommerce  

 

   14 Feb 2017  · Actualizado: 10 Mar 2021 Hoy queremos mostrarte una manera rápida y sencilla de incluir las entradas de tu blog en tu tienda [Magento](https://way2ecommerce.com/magento-ecommerce) a través del RSS de Wordpress. Además, haremos uso de Zend\_cache para evitar que se realice una nueva petición cada vez que se carga la página y, así, no comprometer el rendimiento de tu tienda online.

![captura1](/sites/default/files/inline-images/captura1.png)Como puedes ver en la imagen superior, cada entrada del blog contiene una imagen, título, fecha, categorías a las que pertenece, un breve resumen y un botón que enlaza con la página del blog donde se encuentra la misma. ¡Manos a la obra!

**Crea el fichero posts-wordpress.phtml**
-----------------------------------------

Lo primero que tenemos que hacer es crear el archivo posts-wordpress.phtml (puedes sustituir 'posts-wordpress' por el nombre que tú prefieras) y añadir el siguiente código:

```php
<?php $frontendOptions = array(
    'lifetime' => 7200,
    'automatic_serialization' => true
);
 
$backendOptions = array(
    'cache_dir' => Mage::getBaseDir('cache')
);
 
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
$id = 'channelFeed';
 
if (!($data = $cache->load($id))) {
    try {
        $data = new Zend_Feed_Rss('http://url-de-tu-web.com/feed/', array(
            'timeout' => 3
        ));
    } catch (Exception $e) {
        return;
    }
    $cache->save($data);
}
```

Si eres de aquellos a los que no les gusta copiar y pegar sin entender el código, este fragmento se encarga de generar la caché con una duración de 7200 segundos (2 horas) y de guardar en esta la información en formato XML recibida de la URL del feed de tu blog. Un timeout o tiempo de espera de 3 segundos debería ser más que suficiente para cargar los datos necesarios. A continuación, introduce el siguiente código:

```php
if ($data):
    ?>
    <div class="dgrey fslider">
        <h3 class="section-title padding-right"><?php echo $this->__('Entradas del blog'); ?></h3>
        <div class="itemslider-wrapper slider-arrows1 slider-arrows1-pos-top-right slider-pagination1">
            <div id="itemslider-featured-noticias"
                 class="itemslider itemslider-responsive noticias centered equal-height">
                <?php $i = 0;
                foreach ($data as $post): ?>
                    <?php
                    if ($i > 8)
                        continue;
                    ?>
                    <div class="item <?php echo $i == 0 ? "first" : "last"; ?>">
 
                        <?php
                        $dom = new Zend_Dom_Query($post->getDOM()->nodeValue);
                        $elements = $dom->query('img');
                        $src = array();
                        foreach ($elements as $result) {
                            // $result es un DOMElement
                            $src[] = $result->getAttribute('src');
                        }
                        print isset($src[0]) ? '<div class="news-image-wrapper f-left"><img class="lazyOwl" alt="' .
                            $post->title . '" data-src="' . $src[0] . '" width="300" /></div>' : '';
 
                        ?>
 
                        <h3><a href="<?php echo $post->link; ?>"><?php echo $post->title; ?></a></h3>
 
                        <div class="date-categories">
                            <span class="date">
                                <?php echo $this->formatDate($post->pubDate, 'long'); ?>
                            </span>
                            <span class="categories">
                                <?php
                                $c = 0;
                                $cats = array();
                                foreach ($post->category as $cat): ?>
                                    <?php if ($c > 2) continue; ?>
                                    <?php $cats[] = $cat->getDOM()->nodeValue ?>
                                    <?php $c++;
                                endforeach;
                                echo implode(', ', $cats); ?>
                            </span>
                        </div>
 
                        <p><?php echo trim($this->helper('core/string')
                                ->truncate(strip_tags(str_replace('&#160;', '', $post->description)), 200)); ?></p>
                        <a class="a-center"
                           href="<?php echo $post->link; ?>"><?php echo $this->__('Leer más'); ?></a>
 
                    </div>
                    <?php $i++; endforeach; ?>
            </div>
        </div>
```

Mediante este fragmento, lo que hacemos es crear los divs o contenedores e introducimos los datos de cada entrada (título, categorías, etc) en nuestro widget. Puedes controlar el número de entradas a mostrar con el código de las líneas 11-13: if ($i &gt; Nª de entradas) continue; ?&gt; O bien ajustando el apartado "Número máximo de entradas a mostrar en el feed" de tu Wordpress dentro de Ajustes -&gt; Lectura. Para acabar con el código de este archivo, incluimos el javaScript del plugin Owl Carousel y cerramos el if que teníamos abierto. Si el tema de tu tienda no incluye el Owl Carousel, puedes incluirlo tú mismo/a o bien obviar el script y adaptar el código a tus propias necesidades.

```php
<script type="text/javascript">// <![CDATA[
            jQuery(function ($) {
                var owl = $('#itemslider-featured-noticias');
                owl.owlCarousel({
                    lazyLoad: true,
                    itemsCustom: [[0, 1], [320, 1], [480, 1], [768, 1], [960, 1], [1280, 1]],
                    responsiveRefreshRate: 50,
                    slideSpeed: 200,
                    paginationSpeed: 500,
                    scrollPerPage: true,
                    stopOnHover: true,
                    rewindNav: true,
                    rewindSpeed: 600,
                    pagination: false,
                    navigation: true,
                    navigationText: false
                }); //end: owl
            });
            // ]]></script>
    </div>
<?php endif; ?>
```

**Guarda el fichero**
---------------------

Guarda el fichero recién creado en la siguiente ubicación: **\\app\\design\\frontend\\default\\\[tu-tema\]\\template\\page\\html**

**Inclúyelo en tu página de inicio**
------------------------------------

Por último, en la admin de Magento, ve a la página CMS de tu homepage y en el apartado contenido incluye la siguiente llamada al bloque recién creado:

```php
{{block type="core/template" template="page/html/posts-wordpress.phtml"}}
```

Con estos sencillos pasos ya tienes las entradas de tu blog Worpress en tu tienda Magento. Puedes adaptar el código a tu gusto y/o explorar el XML para incluir, por ejemplo, al autor de cada entrada.

   Way2 EcommerceExpertos en Magento ecommerce. Definimos, desarrollamos, mantenemos y potenciamos tiendas online de la más alta calidad para que tu ecommerce supere todas tus expectativas.

 

 

 

 Otras entradas
