contingut
Personal
blogPer

Javier Seixas

BlogPro

Posts Tagged ‘php’

Conexión a más de una BD en Wordpress

Martes, Octubre 28th, 2008

Recientemente me he encontrado con un inconveniente adaptando un Wordpress. En un página necesitaba conectar con una Base de Datos diferente de la de wordpress, es decir, hacer dos conexiones simultáneas a Bases de Datos diferentes. Para conectarme a la BD Lo hice de la forma clásica utilizando las funciones mysql_connect(), mysql_select_db(), mysql_close() y ningún problema, hasta que quise llamar a la función wp_list_pages() en el footer, que me daba error. Tras varias pruebas me di cuenta que esto se debía a que al conectar con una segunda Base de Datos, la conexión con la BD de Wordpress se cerraba. Buscando en internet, encontré cómo resolverlo en Separate DB connection for WordPress plugins.

La solución es muy sencilla. Se trata de establecer el cuarto parámetro $new_link a true en la función mysql_connect(). De este modo se establece un nuevo enlace con la BD y mantiene el de Wordpress.

$connection = mysql_connect(’localhost’, ‘mysql_user’, ‘mysql_password’, true);

Posteriormente, cuando se quiera ejecutar una consulta utilizando este enlace se tiene que especificar:

$result = mysql_query('SELECT * FROM table', $connection);

Y siempre es recomendable cerrar la conexión:

mysql_close($connection);

Indexació de webs multiidioma amb PHP i Apache

Domingo, Abril 6th, 2008

La indexació de pàgines als buscadors és quelcom que s’ha tornat gairebé imprescindible a l’hora de publicar una pàgina web. I aquesta importància recau d’igual manera en sites multiidioma on totes les pàgines en tots els idiomes han d’estar indexades.

Jo conec dos sistemes per fer pàgines web multiidioma. El primer seria el clàssic de ficar la web en un idioma, per exemple català, dins http://www.javierseixas.com/blog/wp-admin/post.php?action=edit&post=23la carpeta ‘ca’. Per traduïr-la a un altre idioma, per exemple el castellà, es duplica la carpeta, se li assigna el nom ‘es’ i es tradueixen tots els arxius html que la componen. Aquest sistema no el recomano ja que obliga a que quan s’hagi de fer una modificació fer-la en tants arxius com pàgines hi hagin, lo qual duplica el treball i el temps. De totes maneres no queda més remei que fer-ho així en servidors que no suportin algun tipus de llenguatge.

El segon sistema que conec és mitjantçant includes que contenen les textos fixes, com titol de seccions, nom de botons, etc. Hi ha un include per cada idioma, i mitjançant una sessió carregarà un include o un altre. S’haurà de declarar una sessió per defecte, per quan l’usuari entri per primer cop l’assigni i carregui l’idioma per defecte. Si l’usuari canvia l’idioma canviarà el valor de la sessió.

Fins aquí tot bé, però què passa quan un robot entra al nostre site? El robot trobarà l’enllaç per canviar d’idioma, però no sabrà interpretar el canvi de sessió, per lo qual, el robot només detectarà i indexarà el nostre site en l’idioma per defecte. I com es soluciona aquest problema?

La clau està en col·locar a l’enllaç on es canvia l’idioma una adreça falsa. Per exemple:

<a href="http://www.javierseixas.com/ca“>Català</a>
<a href=”http://www.javierseixas.com/es“>Castellà</a>

Fet això, el PHP haurà de saber en quin idioma s’està navegant. Això es pot saber per la funció $_SERVER['REQUEST_URI'] que retorna la part de l’adreça després del domini. Tot seguit, el PHP haurà de decidir quin include incloure segons hagi dit el REQUEST_URI, per exemple, ca per català , es pel castellà, en per l’anglés. En aquest punt recomano seguir les sigles que utilitza la wikipedia.

I el darrer punt clau el juga Apache. S’ha d’activar el ModRewrite i escriure les regles per l’idioma concret:

RewriteRule ^ca/(.+) /?sec=$1
RewriteRule ^es/(.+) /?sec=$1
RewriteRule ^en/(.+) /?sec=$1

Sobre mí

Sóc un desenvolupador web i estudiant d'enginyeria informàtica, tinc 24 anys i sóc veí de Barcelona. Vaig descobrir el que ara és la meva professió al 2001 a un treball per l'institut, i fins ara no he pogut parar. Actualment treballo a grapa.ws on estic des del 2006.

Sobre la web

En aquest lloc vull plasmar i fer pública tota la meva feina i els meus projectes, com les meves inquietuds i coses que m'agradin.