Por @Alvy — 17 de Mayo de 2005

He preparado va una explicación rápida pero completa, a modo de HOWTO («Como hacer...») sobre cómo está programado el enlace ¡Salta! que tenemos en el menú de navegación de la parte superior de la página, cuyo efecto es sencillamente saltar a una anotación cualquiera dentro de Microsiervos, completamente al azar. Esta explicación es bastante general y podría servir para cualquier sistema de weblogs, o cualquier site con muchas páginas distintas en general, siempre que puedas identificar de forma única cada página (y extraer una lista de todas las URLs que tienes) y ejecutar PHP.

Actualización: Si usas Movable Type, a raíz de una excelente sugerencia de Julio Alonso y con un bug detectado por Estaban existe un código mucho más corto y elegante, que he llamado Random Post Hyperjump! v2.0.

Actualización (19 de mayo de 2005): J. Francisco de Todo lo que nunca quisiste saber ha utilizado el código original para crear Salta! para WordPress con un código breve que hace una llamada a la base de datos, de modo que tampoco hace falta pre-generar la lista de URLs.

Cómo saltar a páginas web al azar en PHP

  1. Se trata de un script muy sencillo programado en PHP, de modo que lo primero que necesitas es que el sitio en donde tienes alojada las páginas permita usar PHP y subir ficheros. Esto lo puedes consultar con tu proveedor, en general casi cualquier alojamiento de pago está permitido, en los gratuitos no es tan común pero algunos lo tienen - a veces incluso puedes usar la opción de «subir fotos» para subir el fichero PHP. Un truco si no tienes PHP es poner esta página en otro alojamiento donde sí admitan PHP, porque en realidad da igual dónde se ejecute.
  2. Lo primero que necesitarás es una lista de todas las URLs a las que quieres que se pueda «saltar», porque el script funciona a partir de una larga lista de opciones, eligiendo una al azar (no accede a la base de datos de contenidos). Muchos sistemas de contenidos para crear weblogs generan ficheros «estáticos» HTML individuales, como Movable Type o Blogger. Da igual si los genera como números (ej. 0001.html, 0002.html, etc.) o con nombres, y si lo hace con o sin directorios (ej. archivos/ciencia/sputnink.html) mientras puedas obtener esa lista de archivos individuales. Será una lista como por ejemplo: https://www.microsiervos.com/archivos/foo.html https://www.microsiervos.com/archivos/bar.html https://www.microsiervos.com/archivos/xyz/blah-blah.html
  3. Hazte con esa lista de archivos y cópiala en cualquier editor de texto, una dirección en cada línea. En mi caso utilicé mi programa FTP para revisar todos los directorios en los que están los archivos individuales, fui copiando-y-pegando esa lista. Luego quité lo que sobraba (el ftp://xyz.com/.... En casi todos los sistemas de blogs se usa un directorio como /archivos/ para guardar las anotaciones individuales, a veces están todos en el mismo directorio, a veces en directorios por categorías. Si tienes acceso por consola puedes moverte por los directorios y hacer un ls y copia-pega, o tal vez obtener los nombres completos de archivo de algún lugar de tu sistema de contenidos (el log tal vez). El caso es terminar con un fichero donde están todas las URLs de tus anotaciones individuales. (Nota: naturalmente, necesitarás refrescar esta lista de vez en cuando porque el script no lo va a hacer sólo.)
  4. Creas un archivo para el script con el nombre que prefieras, que acabe en .php, en el caso de este weblog se llama microsiervos-al-azar.php con este script:

    <php
    // Random Post Hyperjump! v1.0
    // by Alvy for https://www.microsiervos.com
    // License is granted if this attribution is fully included

    $urls = array (
    'foo.html',
    'bar.html',
    'xyz/blah-blah.html',
    );

    $site = «https://www.microsiervos.com/archivo/»;
    $i= rand(0,count($urls));

    header («Location: $site$urls[$i]»);
    ?>

  5. Como se ve el script es muy sencillo, sólo son tres líneas en realidad: definir una matriz ($urls) que contendrá todas las URLs de las páginas, definir otra con la trayectoria completa de la zona en que están esos archivos ($site), elegir una de las URLs al azar ($i) y finalmente hacer un salto usando header location.

  6. En el archivo previo en el que tienes tu lista de URLs, y elimina lo que esté repetido (generalmente, el http://www.xyz.com/archivo/) porque no será necesario. Ten en cuenta que el script encadena lo que definas como «nombre del sitio web» en la variable $site con las cadenas de las URLs, fíjate en las barras de separación de los directorios especialmente.

  7. Añade las comillas (') de inicio y final a cada línea, y una coma antes del retorno de carro. Normalmente en tu editor de texto existirá una función para «añadir al principio de línea» o «al final de línea». Otro truco es hacer un Buscar y Reemplazar, por ejemplo se puede buscar (\r) (un retorno) y reemplazarlo por (',\r') (comilla coma retorno comilla)
  8. Copia y pega la lista de URLs con el formato adecuado dentro del script PHP que contiene el código principal

  9. Sube el script por FTP o el método que suelas usar a tu weblog. Ya lo puedes enlazar desde el menú. Pruébalo a ver qué tal funciona.

  10. Importante: Como no querrás confundir a Google y otras arañas buscadoras de la red con un enlace a un sitio que redirije a una página distinta cada vez, recuerda siempre hacer dos cosas: (A) Cuando enlaces a esa página, añade el parámetro rel=«nofollow» para que los robots no la sigan, enlazándola así: <a href="/microsiervos-al-azar.php" rel="nofollow">; (B) Añade por si acaso una línea de exclusión a tu fichero robots.txt en el directorio principal de tu site (o créalo si no lo tienes), indicando que nunca indexen ni sigan esa página PHP, con esta instrucción:

    Disallow: /microsiervos-al-azar.php

    (utiliza el nombre de archivo que hayas elegido).


  11. Aunque la lista de URLs sea enorme, el fichero de texto será pequeño y se procesará muy rápido. En el ejemplo de Microsiervos, tiene más de 1.500 URLs y ocupa sólo 50 KB, eso en realidad el usuario ni lo nota porque el PHP lo pre-procesa antes de enviárselo al usuario, en una fracción de segundo.
Bueno, así es como funciona el sistema tal y como está programado en este blog (una progamación rápida en cinco minutos, la verdad). Seguramente habrá otras formas de hacerlo, más o menos flexibles, más o menos elegantes. Esta es práctica para lo que necesitaba (saltar al azar a cualquier anotación antigua) con muchas URLs distintas y sin tener que acceder a la base de datos de contenidos. Tiene la desventaja de que de vez en cuanto tienes que actualizar esa lista para que esté al día - lo cual si tienes cientos tampoco es un gran problema, lo puedes hacer una vez al mes tal vez. Funcionaría incluso con URLs de distintos weblogs si te apetece. Si se te ocurre alguna mejora o alternativa, déjanos un mensaje en los comentarios.

Compartir en Flipboard Publicar / Tuitear