Foros del Web » Programando para Internet » Javascript »

Rotación de páginas

Estas en el tema de Rotación de páginas en el foro de Javascript en Foros del Web. Hola amigos, quiero hacer que un link que está en mi página de inicio, abra una página distinta cada día. ¿Me pueden ayudar??? Esta pregunta ...
  #1 (permalink)  
Antiguo 17/02/2003, 22:53
 
Fecha de Ingreso: diciembre-2001
Mensajes: 109
Antigüedad: 22 años, 4 meses
Puntos: 0
Pregunta Rotación de páginas

Hola amigos, quiero hacer que un link que está en mi página de inicio, abra una página distinta cada día.
¿Me pueden ayudar???
Esta pregunta la puse en el foro de PHP y Cluster medió la idea de hacerlo con un JS.

Muchas gracias a todos.-
Barba.-
  #2 (permalink)  
Antiguo 18/02/2003, 01:58
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola Barba:

Se me ocurre que uses un array con las direcciones de esas páginas, y asignes el link con un random...
var losLinks = [
"http://www.google.com",
"http://www.forosdelweb.com",
...
];

function inicio() {
var paginaDeHoy = losLinks[Math.floor(Math.random() * losLinks.length)];
document.getElementById("elLink").src = paginaDeHoy;
}
<body onload="inicio()">
<a id=elLink href="">
...

Espero que te sirva...

Saludos
  #3 (permalink)  
Antiguo 18/02/2003, 03:43
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61


Barba!

El código puesto por caricatos (hola Caricatos!!)te enlaza con una página aleatoria... no sé si lo que quieres es eso o que cada día sea una distinta. En caso de que lo que busques sea lo segundo te pongo este código (espero que con la aprobación de nuestro caricaturista preferido) que pone un enlace cada día. Para ello toma como referencia el día del mes. Cuando se acaben los enlaces vuelve a empezar.

Código PHP:
<html>
<
head>
    <
title>Enlaces rotantes</title>
    <
script>
    var 
codigo="";
    var 
enlace=new Array;

//-------------------------- PON LOS ENLACES AQUI ---------------

//enlace[numero de enlace]=new vamosAPonerUnoNuevo("texto para pinchar", "destino del enlace","Abrir en nueva ventana")

    
enlace[0]=new vamosAPonerUnoNuevo("Visita la página de Maestros del Web","http://www.maestrosdelweb.com","si");
    
enlace[1]=new vamosAPonerUnoNuevo("Visita la página de Web Estilo","http://www.webestilo.com","si");
    
enlace[2]=new vamosAPonerUnoNuevo("Visita la página de Netscape","http://www.netscape.com","no");
    
enlace[3]=new vamosAPonerUnoNuevo("Visita la página de la bruja averia","http://www.brujaaveria.com","si");
    
enlace[4]=new vamosAPonerUnoNuevo("Sorprendete con todo lo que es una maravilla","http://www.sodaplay.com","si");

//----------------------------------------------------------------------
    
    
function vamosAPonerUnoNuevo(mensajito,direccion,ventanaNueva){
                                                                    
this.texto=mensajito;
                                                                    
this.destino=direccion;
                                                                    if(
ventanaNueva=="si"){this.blanco="_blank";}
                                                                    else{
this.blanco="_top";}
                                                                    }
    
    
    
hoy=new Date;
    
dia=hoy.getDate();
    
todos=enlace.length;
    if (
dia>todos){
                    
numero=dia/todos;
                    
entero=Math.floor(numero);
                    
resto=numero-entero;
                    
sobrante=resto*todos;
                    
sobrante=Math.ceil(sobrante);
                    }
    else{
sobrante=dia}
    
    
codigo='<A HREF="' enlace[sobrante].destino '" target="'+enlace[sobrante].blanco+'">' enlace[sobrante].texto '</A>';
    
    
    
    
    
    
</script>
</head>

<body>
<script>
document.write(codigo)
</script>


</body>
</html> 



Espero que te sirva. Si tienes cualquier duda comentala!

Un saludo!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #4 (permalink)  
Antiguo 18/02/2003, 07:42
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
¡Hola KarlanKas!

No cabe duda de que tu ejemplo es mucho más completo.
Lo cierto es que me estoy acostumbrando a dar respuestas sencillas, ya que hay tantos contestones (me gustó el calificativo que nos puso kao) que los que nos piden ayuda siempre suelen tener varias opciones para elegir.

Ahora habrá que ver que le parece a Barba ¿?

Saludos
  #5 (permalink)  
Antiguo 18/02/2003, 10:46
 
Fecha de Ingreso: diciembre-2001
Mensajes: 109
Antigüedad: 22 años, 4 meses
Puntos: 0
perfecto

Muchisisisimas gracias a ambos, la opción que me sirve es la de KarlanKas, la pondré en práctica y veré como funciona.
Un saludo a todos desde la patagonia.-
  #6 (permalink)  
Antiguo 18/02/2003, 10:59
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
De nada barba!! Si tienes dudas sobre como utilizarlo me lo dices!

caricatos!! Qué tal compañero? Mi respuesta no es más completa, es simplemente para otra cosa. Pero la tuya tb es muy completa!!

Somos unos crack!

Un saludo a los dos!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #7 (permalink)  
Antiguo 18/02/2003, 19:51
 
Fecha de Ingreso: diciembre-2001
Mensajes: 109
Antigüedad: 22 años, 4 meses
Puntos: 0
Yo de nuevo

Hola KarlanKas, voy a abusar de tu paciencia un poquito con este tema, ya estoy viendo como se dice por aquí “La pata de la sota”, pero te amplio un poco.
Tengo un botón en una barra de navegación, necesito que ese botón abra una página distinta cada día de manera rotativa (son doce en total).
Estas páginas se deben abrir dentro de un I frame.
Tal vez alguien haya hecho algo así y ya tenga el tema resuelto.

Estuve intentando modificar el script que me enviasteis, pero no hallé la forma de hacer que se abra la página dentro del I frame.

Por lo que veo no es tan sencillo, así que seguramente si no te disgusta te pediré varias ayudas.
Muchas gracias de antemano.-
Barba.-
  #8 (permalink)  
Antiguo 19/02/2003, 02:42
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola Barba: (Hola KarlanKas)...

Bueno, voy a ver si me sale modificar el script de KarlanKas para adaptarlo a la pregunta...

Empezaremos renombrando el parámetro "ventanaNueva" por "destino" por
/* cambiamos el nombre al tercer parámetro...
function vamosAPonerUnoNuevo(mensajito,direccion,ventanaNueva )
*/
function vamosAPonerUnoNuevo(mensajito, direccion, destino )

... aunque no sea necesario, nos ayudará a comprender.

El valor que considera es "si" o "no", pero ahora deberá ser el iframe de destino...
... en el caso de un iframe name="destino"

la línea del array debería ser:


enlace[0]=new vamosAPonerUnoNuevo("Visita la página de Maestros del Web","http://www.maestrosdelweb.com","destino" );
enlace[1]=new vamosAPonerUnoNuevo("Visita la página de Web Estilo","http://www.webestilo.com","destino" );
enlace[2]=new vamosAPonerUnoNuevo("Visita la página de Netscape","http://www.netscape.com","destino" );
enlace[3]=new vamosAPonerUnoNuevo("Visita la página de la bruja averia","http://www.brujaaveria.com","destino" );
enlace[4]=new vamosAPonerUnoNuevo("Sorprendete con todo lo que es una maravilla","http://www.sodaplay.com","_blank" );

// el último elemento se abrirá en una página en blanco... Aunque no es lo que pides, creo que es didáctico (Aguérdate de cambiarlo)

y dentro de la función habría que cambiar esto:
if(ventanaNueva=="si"){this.blanco="_blank";}
else{this.blanco="_top";}


por algo así:

this.blanco=destino;

Creo que el resto debería quedar igual que lo puesto por KarlanKas...

Estoy seguro que a KarlanKas no le habrá importado que retoque su magnífico y didáctico código... ahora falta que confirme que está bien, o si puede fallar algo, nos lo haga saber.

Saludetes...
  #9 (permalink)  
Antiguo 19/02/2003, 06:31
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
wow caricatos! Qué velocidad de respuesta!!

Pues el código está bien modificado. Realmente has resuelto con 2 pinceladas el problemita que había. Sólo una cosa... no sé si barba (hola barba!!) quiere que se modifique por un botón o por un enlace... por si acaso he hecho un par de modificaciones para que él decida cómo deben ser los enlaces si con link o con botón.

Código PHP:
<html>
<
head>
    <
title>Enlaces rotantes</title>
    <
script>
    var 
codigo="";
    var 
enlace=new Array;
    var 
boton=//Aquí determinamos si el enlace se realiza por medio de un botón (boton=1) o por medio de un link (boton=0).

//-------------------------- PON LOS ENLACES AQUI ---------------

//enlace[numero de enlace]=new vamosAPonerUnoNuevo("texto para pinchar", "destino del enlace","IFRAME en el que abrirse")

    
enlace[0]=new vamosAPonerUnoNuevo("Visita la página de Maestros del Web","http://www.maestrosdelweb.com","si");
    
enlace[1]=new vamosAPonerUnoNuevo("Visita la página de Web Estilo","http://www.webestilo.com","si");
    
enlace[2]=new vamosAPonerUnoNuevo("Visita la página de Netscape","http://www.netscape.com","no");
    
enlace[3]=new vamosAPonerUnoNuevo("Visita la página de la bruja averia","http://www.brujaaveria.com","si");
    
enlace[4]=new vamosAPonerUnoNuevo("Sorprendete con todo lo que es una maravilla","http://www.sodaplay.com","si");

//----------------------------------------------------------------------
    
    
function  vamosAPonerUnoNuevo(mensajito,direccion,destino){
                                                                    
this.texto=mensajito;
                                                                    
this.destino=direccion;
                                                                    
this.blanco=destino;
                                                                    }
    
    
    
hoy=new Date;
    
dia=hoy.getDate();
    
todos=enlace.length;
    if (
dia>todos){
                    
numero=dia/todos;
                    
entero=Math.floor(numero);
                    
resto=numero-entero;
                    
sobrante=resto*todos;
                    
sobrante=Math.ceil(sobrante);
                    }
    else{
sobrante=dia}
    if (
boton==0){
    
codigo='<A HREF="' enlace[sobrante].destino '" target="'+enlace[sobrante].blanco+'">' enlace[sobrante].texto '</A>';
    }
    else{
    
codigo='<input type="Button" onclick=document.getElementById("'+enlace[sobrante].blanco+'").src="' enlace[sobrante].destino '" value="' enlace[sobrante].texto '">';
    }
    
    
    
</script>
</head>

<body>
<iframe src="http://www.forosdelweb.com" name="si" id="si" width="100%" height="300" align="middle" frameborder="0"></iframe>
<script>
document.write(codigo);

</script>

</body>
</html> 

Un saludo a los dos!!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 19/02/2003 a las 06:33
  #10 (permalink)  
Antiguo 19/02/2003, 10:09
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola a todos:

KarlanKas:

Espero que todo este debate le sea útil a nuestro ausente amigo Barba.
Ahora que el código está algo más visible (agradezco que hayas puesto las letras en un tamaño mayor), he visto cómo has hecho el cálculo del "sobrante"...
... y puestos a simplificar creo que querías obtener el "módulo" de la división, que en javascript se obtiene con el operador "%".
Lo he probado hoy y se obtiene el mismo resultado (otro día no lo sé)...
simplificando... y corrígeme si me equivoco...

sobrante = new Date().getDate() % enlace.length;

Buen equipo, cierto... ¡como en los viejos tiempos!

Saludos
  #11 (permalink)  
Antiguo 19/02/2003, 10:28
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61

Caricatos, hijo mío....
si ya sabía yo que lo que hacía era una chapucilla... sabía que tenía que haber una función o algo para dar el sobrante de una división (en BASIC creo que era mod()). Pero como no lo encontré pues lo dejé así que como funcionaba... pues tampoco importaba... vamos a modificarlo...
Es cierto, como en los viejos tiempos! Por cierto, aun no he limpiado el código de www.klasic.org a ver si con tiempo...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #12 (permalink)  
Antiguo 19/02/2003, 20:55
 
Fecha de Ingreso: diciembre-2001
Mensajes: 109
Antigüedad: 22 años, 4 meses
Puntos: 0
De acuerdo que equipo!!!

Que equipo por dios¡¡¡ son verdaderos buenos muchachos, por lo menos en esto , disculpen la ausencia, sucede que como también tengo unas cabañas que atender (http://lihuen.com) y además obligaciones sociales ya que participo en casi todo lo que sucede en mi localidad, el día me queda corto y solo puedo entrar al foro a la noche.
El sitio donde tengo que hacer el invento este de la rotación es www.turismoangostura.com, si orpimen el link "Cabañas" verán que se abre una página en donde hay 12 establecimientos, la idea es hacer que se vayan rotando en los puestos de privilegio.
Voy a ver como sale el tema de la rotación con las nuevas instrucciones, muchas gracias a todos.
Saludos patagonicos.-
Barba.-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:15.