[Ayuda] con codeigniter | Necesito crear varios xml (sitemap)

  • Autor Autor Ruiz86
  • Fecha de inicio Fecha de inicio
Ruiz86

Ruiz86

Eta
SEO
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Buenas, estoy programando una web con codeigniter y ha llegado la hora de los sitemaps 🙂

Ahora mismo puedo crear un solo sitemap correctamente pero necesito crear varios y ahí es donde me pierdo, tengo el código que entiendo de un mvc el cual me genera un sitemap bien pero tengo demasiadas URLs (unas 400.000 por ahora y claro webmasters tools solo acepta sitemap con 50.000 urls máximo.

¿Alguien me da una idea de cómo generar varios sitemap? No se me ocurre.. :sorrow:
 
Podrías hacer como hace SEO Yoast.. generar uno por cada categoría y juntarlos a esos en un solo sitemap. Luego envías solamente el sitemap con las categorías.
 
Podrías hacer como hace SEO Yoast.. generar uno por cada categoría y juntarlos a esos en un solo sitemap. Luego envías solamente el sitemap con las categorías.

Si, pero la duda era más bien a nivel de programación. No se me ocurre cómo generar varios sitemaps con codeigniter, tengo todas las urls en un array almacenadas y dividirlas con un for en partes iguales es fácil pero me pierdo a la hora de generar los archivos.
 
Ah! perdona, comprendi muy mal :S .

Eso no es muy complicado. Ahora mismo estoy trabajando (shhhhhhhh no le digas a nadie que estoy webeando). Ni bien llego a casa si nadie te respondio te ayudo 😉

Cual es la estructura del array que tenes? Solamente las url no? Osea:

$url[0] = 'lala.com';
 
Ah! perdona, comprendi muy mal :S .
Eso no es muy complicado. Ahora mismo estoy trabajando (shhhhhhhh no le digas a nadie que estoy webeando). Ni bien llego a casa si nadie te respondio te ayudo 😉

😛irate: Yo no digo nada 😛8:


Bueno ya que te veo interesado cosa que agradezco muchísimo dejo una pequeña guía de cómo tengo organizado mis archivos en codeigniter para crear un sitemap y de paso te es más fácil ayudarme :encouragement:

En el routes:
Insertar CODE, HTML o PHP:
$route['sitemap.xml'] = 'sitemap/index';

En el controller sitemap.php:
Insertar CODE, HTML o PHP:
$this->load->helper('url');

        $this->load->model('acceso_m');

        $view_data['vw_content'] = $this->acceso_m->get_articulos();
        $this->load->view('sitemap_view', $view_data);

En el modelo acceso_m.php:
Insertar CODE, HTML o PHP:
public function get_articulos($limite)
    {
        $this->db
                ->select('id, nombre, fecha')
                ->from('videos')
                //->where('activo', 1)
                ->order_by('id')
        ;
        
        $query = $this->db->get();
        $query = $this->db->query('SELECT id,nombre,fecha FROM '.$this->table_name.' ORDER BY id LIMIT 10000');

        return $query->result();
    }

Y en la vista sitemap_view.php:
PHP:
<?php ob_start(); ?>

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'."\n"; ?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

    <url>

        <loc><?php echo base_url(); ?></loc>

        <priority>1.0</priority>

    </url>


    <?php foreach ($vw_content as $url) : 

                           $urlmod = str_replace(" ", "-", $url->nombre);
        ?>

    <url>

        <loc><?php echo base_url().'watch/video/'.$urlmod.'/'.$url->id.''; ?></loc>

        <!--<lastmod><?php echo substr($url->modificado, 0, 10); ?></lastmod>-->

        <changefreq>monthly</changefreq>

        <priority>0.5</priority>

    </url>

    <?php endforeach; ?>

</urlset>

<?php ob_end_flush(); ?>

Quedo a la espera de tu ayuda :encouragement:

- - - Actualizado - - -

Ya lo he solucionado al final yo.

He creado una función nueva en el controlador que se encarga de generar un sitemap padre y a la función que genera los sitemap le he puesto un filtro para que genere un sitemap cada 1000 urls. :encouragement:
 
Última edición:

Temas similares

Ramnsés Rojas
Respuestas
2
Visitas
575
Ramnsés Rojas
Ramnsés Rojas
Atrás
Arriba