Site dinamico en 14 idiomas (mas o menos)
Hola chicos,
al final me han dado el visto bueno para el rediseño del sitio, asi que le he dicho.. pues aprovechando eso me voy a tomar un tiempo para hacerlo dinamico y tal y tal...
Asi que esas me traigo, voy a cambiar la Web del Hotel Albayzin del Mar ( www.hotelalbayzindelmar.com ). A una pagina dinamica con plantillitas monas para no tener que estar borrando cada boton a mano por cada idioma. Pues ahi va mi pregunta:
¿Quien conoce una forma practica de hacerlo? Lo digo por si existen baches en el camino ponerme al tanto.
Voy a usar PHP y MySQL y mi idea era hacer las plantillas de cada pagina y meter PHP accediendo a la BBDD. Usare una cookie para definir el tipo de idioma y asi acceder a una BBDD u otra. No tiene mas misterio no? o si? Tendria que conectar con la BBDD en cada pagina o se mantiene la conexion? No se..ponerme al tanto si alguno habeis hecho algo asi.
Orange... no estaria nada mal el truquito para que aunque el contenido sea dinamico no me perjudique mucho en los buscadores... ;)
meddle
ah, ok. En apache puedes usar servidores virtuales (como tu dices, en este caso tambien los pones a mano) pero ademas puedes modificar las url con el modulo mod_rewrite. Por ejemplo le puedes decir que /pagina/5/ lea /pagina.php?var=5 (tambien puedes hacer eso sin tener que poner a mano todas tus paginas, creando una regexp)
alex
Esque me explico con el culo, me refería a que en El IIS, puedes definir directorios virtuales para que apunte a una página determinada.
meddle
alex
Ya he probado la redirección de directorios alguna vez, (en el curre tenemos un jausing) pero hay que darlos de alta uno a uno, y es un coñazo
¿Puedes aclarar eso un poco?
surt
Que facil es centrarse en un proyecto con todos vosotros detras.
clkwise hay millones en el macromedia exchange, le das a buscar y le pones menu. Yo en este caso lo puse en Flash pero es verdad que si pretendo indexar en buscadores me es mas facil algo que me deje visibles las rutas de los enlaces. Pero para DW existen tambien montones de menus precocinados con XML, PHP... y todo tipo de tecnologias.
El macromedia exhange es un chollo.
alex
Ya he probado la redirección de directorios alguna vez, (en el curre tenemos un jausing) pero hay que darlos de alta uno a uno, y es un coñazo.
Me pregunto... hará lo mismo el IIS con lo de los directorios que no encuentra, como dice Sitepoint que hace Apache?? ¬¬
mmm estoy un poco vago para probarlo...
De todos modos, a mi me las indexa bien, usease que...
orange
Debería ser lo mismo, sólo que el problema no es ASP, sino el IIS, creo que el Internet Information Server no tiene un módulo para reescribir direcciones.
Echa un ojo a la documentación del IIS a ver qué puede hacer. Quizá lo mejor en ese caso es el método que apuntan en Sitepoint para procesar archivos sin extensión como páginas activas, pero habría que ver si el IIS te deja (que no creo que haya problemas, habría que hablar con el hosting).
alex
y si no usas php? para asp por ejemplo... :(
orange
Bueno, llego tarde, pero es que estoy currando todo el día por medio Madrid ... :(
Por partes:
Plantillas
Si vas a desarrollar y diseñar tú mismo yo no las utilizaría, como metodología está muy bien, pero no creo que en tu caso te convenga porque implica más tiempo de programación y tiempo de aprender a usarlas.
Además, hasta ahora php no soporta de forma nativa templates (el próximo PHP5 sí :), asi que te tienes que tirar por soluciones de terceros, la más conocida es la de la famosa phpLIB, que es la que utiliza por ejemplo el phpBB.
Idiomas
Pasar una variable por todo el sitio para mi es un coñazo, aunque también es cierto que te ahorras la cookie ... la decisión es tuya, yo creo que merece la pena utilizarlas porque además el tio ya tiene hecha la selección si revisita el sitio ... o comprobar si las tiene habilitadas, y si no, abres una variable de sesion con el idioma.
Menús dinámicos
Yo utilizaría menús HTML y haría los rollovers con CSS. Ten en cuenta además que Google ha de poder seguir los enlaces ...
Hosting
No te lo pienses ni por un momento, contrátalo, por seguridad, por fiabilidad, por responsabilidad, por dinero ... tenlo claro, sólo un usuario MUY avanzado es capaz de mantener un servidor fiable en la web.
Google y páginas dinámicas
Como bien han apuntado por ahí, antes era un desastre, pero ahora la cosa ha mejorado.
En principio el GoogleBOT sigue rutas con Querystring, pero en la documentación de la propia Google te dicen que mejor no pases muchos parámetros (en los foros se dice que máximo 2). Lo que parece que no es capaz de seguir de ninguna manera son identificadores de sesion....
Pero dejando de lado esto está claro que es mas usable una ruta como esta <em>hotel/excursiones/puerto</em> que esta <em>hotel.php?idexcursion=3</em>.
Esto se puede conseguir de varias maneras, la mejor es utilizar el mod_rewrite del apache, aunque existen otras alternativas.
Links al respecto
A List Apart: URLS! URLS! URLS!
Search Engine-Friendly URLs
Además a este respecto hay otra cuestion, las palabras que están dentro de un enlace son consideradas keywords prioritarias, por lo que si enlazan tu web como <em>hotel/huelva/turismo</em> ... ya tienes como KW huelva y turismo (o lo que te interese), en cambio <em>master.php?idpagina=23</em> no te da nada ...
Y no sé qué más has preguntado, si tienes alguna duda más cuéntamela, aunque ya he visto que en este hilo ya estás muy bien aconsejado y acompañado
:D
clkwise
surt de donde has sacado lo del XML? puedo ver como queda y la url de referencia? :)
meddle
Surt
Vaya con el tuto, esta genial! sencillo y rapido y junto con el que postee debe ser el unico en español, buen trabajo.
Gracias, que conste que es antiguo pero creo que para el caso (empezar) esta bastante claro.
Surt
No relajaros que os seguire dando la lata!!!! Que haria yo sin vosotros!!!!
Pues eso eso, a preguntar, que para eso estan los foros.
surt
si, mas o menos piloto ;)
aunque como tu mas bien en JSP pero PHP esta muy a la vista (y es lo que soporta mi Hosting :p )
Ya esta rulando el menu con xml, sera lo unico que actualice a mano, quizas haga un actualizador del archivo XML, pero de momento a mano.
clkwise
hay muchas maneras de hacer roll overs con texto dinamico.
podrias usar el swap image del DW cuando haga un rollover en el link (texto dinamico). el texto tb puede modificarse con CSS....
si no tienes muchos menus yo te diria que usases el swap image.
sino lo puedes hacer con flash e integrarlo con php pero creo q si no pilotas.... serian estudiar demasiadas cosas.
solo es una idea :)
surt
no hace falta, ya me he pillado el tipico con XML en flash, el de macromedia retocaillo. Le dare un repasito y listo, no es nada feo.
Gracias ;)
hartum
si quieres te mando las clases a, mi plim!!!
surt
Si, a la tuya, con ese cacho perro de cover :D
arboles en php... mejor voy a buscar algo precocinado de exchange de macromedia. En el trabajo soy mu perezoso para desarrollar cosas por mi cuenta.
hartum
arbol? sombra? me parece que me estoy liando, te refieres a esa especie de foro que tengo montado en mi pagina?www.hartum.net o a la pagina de www.lasombra.net, en ese caso la pagina no es mia es de mi compañero moises.
Si te refieres al primer caso, es un script enphp que genera arboles, lo que pasa que cuando tiene bastantes mensajes empieza air lento, ademas me lo monte de tal manera que no le puedo poner limit a la consulta de la base de datos(una putada).
surt
Jaja, mmira que he tardao poco...
Alguien sabe de algun menu de botones con contenido dinamico y que sea configurable en aspecto? preferiblente que permita graficos rollover pero que el texto del boton venga dinamicamente... no se si me explico.
Es que el jefe es supersupersuper "esteta" (aunque a su manera) y no me admitira botones de texto plano sencillitos.
Toy mirando en Flashkit
surt
Vaya con el tuto, esta genial! sencillo y rapido y junto con el que postee debe ser el unico en español, buen trabajo.
Lo del hosting acabo de pedir las facturas y apenas se pagan 30 euros por el (y es un hosting cojonudo) asi que no me marcare ese tanto y lo mantendre como esta. Por comodidad y delegacion de responsabilidades :p
respecto a la page... del tiron con una plantilla y php incrustado comun para todos pero que accedan a la tabla que indique la variable oculta.
Hoy he usado el dia para centrarme al respecto, esta tarde empiezo con el desarrollo de una de prueba y luego con el resto.
No relajaros que os seguire dando la lata!!!! Que haria yo sin vosotros!!!!
clkwise
lo del hosting.... yo no lo haria. como se te caiga un sabado a las 6 de la tarde te va a tocar arreglarlo a ti. Si ellos pagan te quitas de marrones y asi te puedes centrar en el trabajo en si. Es mejor hacer menos cosas y bien hechas que querer hacer todo.
es una opinion claro :)
meddle
Bueno, aqui esta maquetado: "CÓMO USAR LAS PLANTILLAS SMARTY EN 10 MINUTOS" en http://www.gen7es.net/documentos/smarty.php
El tuto llevaba casi un año hecho sin maquetar, pero me lo he releido y creo que se entiende bien y todavia es actual.
Surt, lo que dices es posible. Tambien estoy de acuerdo en que las cookies son un rollo, pero es una posibilidad.
surt
Perfecto, sin cookie y con variable oculta.
Por otra parte lo voy a hacer a mano todo porque me da pereza aprender a usar plantillas u otros sistemas, ademas de que prefiero que vean resultados cuanto antes y eso me llevaria mas tiempo.
Pues a ver que tal me sale. Un diseño y una variable que me "dispare" la base de datos adecuada.
Por cierto, estoy por gestionar el servidor aqui en vez de el de contrato.
Tiene un PIV a 2,3 y 2 gigas de memoria ademas de dos adsl de 2 megas. Tirara bien no? la pagina no tiene mas de 400 megas diarios de accesos. Creo que lo hare desde aqui y nos ahorramos un dinerito de hosting. que jaleo por dios!
clkwise
Surt yo no tengo muy claro para que usar una cookie. las cookie dan problemas de seguridad en los navegadores, y mensajes de alerta. No conviene "asustar" al usuario "ignorante" haciendo que el navegador le muestre un "cuidado"....
Yo mas que php he programado en java(servlets y demas...) pero el principio es el mismo. Yo usaba una variable oculta (hidden) en la que alamcenaria el idioma y luego en base a esa vbe hacia las consultas a una tabla u otra. esa vbe oculta la puedes ir pasando de un lado a otro
Lo que tu dices de hacer un solo diseño es como deberia ser, sino no tiene mucho sentido hacerlo dinamico. Tu haces un diseño y donde tenga que ir un contenido dinamico le metes el php. lo que metas en ese trozo lo gestionas al margen del html. te puedes hacer una clase para que te gestione a que tablas quieres "disparar" en base al idioma.
surt
Umm parece que phpBabel funciona bien, basta con mirar su pagina y lo rapida que tira. Voy a investigar.
Pero en cualquier caso, aclararme esto:
Puedo usar un diseño unico con su php incrustado de modo que solo una variable decida el idioma?
Es decir, yo hago un diseño del site y le pongo a cada pagina el php "muestra de la bbdd el campo presentacion" y que la bbdd sea en funcion de la cookie?
Entonces me ahorro todo no? solo tengo que traducir en la bbdd, una tabla por ejemplo por idioma para simplemente abrir conexion con una u otra no?
surt
Por cierto Hartum... me mola el indice "arbol" que tienes en lasombra,
es dinamico? lo digo porque usare algo asi y si es codigo libre ;)
mort
Hola,
aparte de apoyar todo lo que te han dicho sobre las ventajas de las plantillas en general, y Smarty en particular, echale un vistazo a esta clase, por si te puede servir http://www.sf.net/projects/phpbabel/
<fieldset>This is a small tool developed to create message files for your PHP sites that need to be translated. These files contain all your DEFINEs and functions such as DEFINE (WELCOME, "Hi there"); or function define($name) { return "Hi, $name";} Each text snippet is entered for the default language (you can change this from english to anything).</fieldset>
surt
http://zonaphp.com/index.php?modulo=articulo&accion=leer&id=16&pagina=2
Siendo yo el diseñador y el programador y el escritor de contenidos ¿no creeis que las plantillas me sobran? no me conviene mas hacer un diseño del site entero con el mismo php incrustado en todas pero que en la cookie me diferencie el idioma al que accede la bbdd?
hartum
lo se, lo se, pero puedes hacerlo asi, o puedes hacerlo incrustando directamente cachos de php, la segunda formas es mas "facil de entender" pero las 2 funcionan bien, en el sentido que al final te muestran los resultados como es debido.
meddle
hartum,
en una plantilla no va php con echo ni nada de eso. lo guapo de las plantillas es que te permiten separar completamente la estructura basica + el layout (plantilla) de los datos (archivo php que llama a la bbdd).
hartum
el tema plantilla tiene mas miga, se trata de hacer una plantilla en html y donde deben ir los contenidos, pones un tag por ejemplo asi <--titulares-->, luego lo que haces es cada vez que llamas a una pagina esta hace una consulta en base de datos, una operacion matematica o lo que sea y llama a la plantilla, sustituyendo los tags por el contenido que queramos.
si mal no recuerdo se utilizan las funciones parse, str_replace, ereg_replace, de forma masiva para hacer este tipo de cosas.
hartum
estructurando que es gerundio, usease por un lado ten las plantillas de html con su php incrustado, por otro ten la base de datos con sus campos(los comunes a todos los idiomas, y los especificos texto_esp, texto_ing, etc..), y por otro lado los idiomas. ¿cual es mi metodo? el siguinte:
-por un lado pongo mi plantilla con etiquetas de este tipo <? echo $saludo ?>
-por otro tengo archivos que se llamas esp.inc, ing.inc,ale.inc, etc...(de español, ingles y aleman, y el .inc, es porque son para hacer un include :-) ) , dentro de estos archivos tengo esto:
esp.inc-><? $saludo='hola'; ?>
ing.inc-><? $saludo='hello'; ?>
ale.inc-><? $saludo='hallo'; ?>
-finalmente en la plantilla donde sevan amostrar los resultados(la que tiene html y php incrustado) pongo algo de este estilo:
switch ($lan) {
case 'esp':
include("esp.inc");
break;
case 'ing':
include("esp.inc");
break;
case 'ale':
include("ale.inc");
break;
}