22dic
13

A partir de un post de Fernando encontré una manera muy sencilla de mostrar texto aleatorio en el blog a partir de un archivo de texto (.txt). El proceso es sencillo, sólo hay que agregar el texto en un archivo .txt y luego insertar un pequeño código en el theme (o un widget si se prefiere).

Yo por ejemplo el uso que le he dado es para mostrar citas (quotes) en la cabecera de mi blog, también le he añadido unas imágenes y estilo al texto para dejarlo más bonito :P

La “instalación” es, como decía, muy sencilla. Lo primero que tienen que hacer es crear un archivo de texto (con el bloc de notas alcanza) y luego subirlo al servidor. Deben tener en cuenta la ruta y el nombre del archivo para luego editar parte del código que se insertará en el theme (o widget). Cada una de las frases que irán en el archivo de texto debe tener un salto de línea, es decir, una frase por renglón:

Esta es la primer frase.
Esta es la segunda frase.
Esta es la tercera frase.
Esta es la cuarta frase.

Una vez que han agregado todo el texto que quieran mostrar, editan el theme (o agregan un widget) y colocan el siguiente código:

<?php
$file  = “/home/public_html/usuario/ruta/del/archivo/texto-aleatorio.txt”;
$quote = file($file);
echo $quote[array_rand($quote)];
?>

¡Y listo! Con eso ya deberían ver una frase diferente cada vez que la página sea recargada.

Recuerden que es una frase por línea.

Yo me topé con un inconveniente un poco molesto: las palabras con tildes y los caracteres especiales se veían mal, pero encontré una solución: en lugar de usar tildes en las letras se debe utilizar el código  HTML que reemplaza a dicha letra. ¿Cómo es esto? Por ejemplo, en lugar de utilizar “á” se debe utilizar “&aacute;” y así con cada letra/caracter especial. Pueden ver una tabla con todas las equivalencias haciendo click acá.

Para saber más:

  • http://seofilia.com lalaale

    Yo añadiría tambié, que la dirección del documento debe ser “la del servidor”, es por eso que es un poco extraña y no tienen http://www...

    En algunos casos, si no llegara a funcionar con ese código, hay que averiguar la ruta de la carpeta, eso puedes hacerlo desde el FTP, Panel de Control de tu hosting, o preguntarle a la empresa que te provee el alojamiento

    Solo eso, excelente artículo, así se evita usar y sobre-cargar las bases de datos.

    PD: generalmente sería como dijo el compañero en el post, algo así “/home/public_html/usuario/ruta/del/archivo/texto-aleatorio.txt”, obviamente, editandolá, pero puede cambiar; a eso me refería.

  • http://www.queridodexter.com.ar/ Skavenger

    Cierto, no me di cuenta de eso, tenés razón.

  • http://microutopia.com.ar Marcelo

    Una cosa nada mas: hay que tener cuidado con los widgets y php, recomiendo poner que si usan widget, que tengan el Exec-PHP o algo por el estilo instalado ;)

    Yo hacia esto experimentando con el Hello Dolly, pero parece bueno como lo planteás. Saludos!

  • ejner69

    Había leído algo similar, pero con PHP sin necesidad de tocar la base de datos tampoco. De todas, se valoran más alternativas…
    Un día de estos la probare en mi locahost…

    Buen post ;)

  • http://www.puntofape.com/ Fape

    Yo incluí un código para rotar anuncios en los themes PF-Ads, funciona de manera muy similar al propuesto. Quizá le sea de utilidad a alguien. :-)

  • Gerard

    GENIAL!
    Tengo una duda: se puede insertar en el archivo *.txt una porción de código de wordpress para imprimir el valor de un custom field y así poder acompañar el random de texto con una imagen o con otro texto.
    He realizado algunas pruebas y me funcionó hasta que se me ocurrió añadir un valor de un custom fields (autorquota) en el que el editor pueda decidir si quiere añadir algo más, logicamente, no me funcionó (mi nivel es MUY bajo)
    Gracias

  • http://www.youzone.es Jose D

    Se podría mejorar bastante la velocidad de ese script si se meten las frases directamente en el array del codigo php, asi te ahorras el proceso de lectura del fichero texto que es mucho más lento.

    Saludos!

  • http://www.bike-k.com lobogeminis

    un gran aporte lo voy a probar

  • http://www.tutorialesubuntu.com uno

    Mejor escribir normal, con tildes y eñes y luego hacer esto:
    $quote=utf8_encode($quote);

    echo $quote[array_rand($quote)];

  • Gasmovil

    Aunque el post sea algo antiguo, me gustaria conocer si fuera posible, que se debe incluir en el codigo y donde, para que en vez de mostrar una sola linea del archivo de texto, muestre tantas como queramos.

    Gracias y Saludos..

  • Pingback: No es mio, pero me gusta | enGeneral

  • Vaker

    Disculpen… porque al hacer esto me sale un WARNING division by zero in…?

  • Vaker

    Disculpen… porque al hacer esto me sale un WARNING division by zero in…?