Como deje en el ultimo post, he estado revisando las posibilidades para hacer de wordpress un sistema multiblog, y mi primera respuesta fue WordpressMu, el cual me decepciono por su terrible inestabilidad pero me gusto su capacidad de no cargar el host (a mi como q lo del host me da un poco igual, tengo espacio ilimitado de almacenamiento :P ).. Pero no me gusto nada que creara un conjunto nuevo de tablas para cada usuario. Esto ultimo sobre todo y dado que mi host me cobra unas pelas por el espacio de la base de datos me decidí­ a encontrar mejores opciones por mi cuenta.
Visto que la oferta de plugins para gestión de varios wordpress a la vez se reducí­a al Blogroll para compartir los post y unos cuantos hack que son mas inestables aun que el mismo WPMU, me puse manos a la obra a crear alguna función para ver si solucionaba un poco el dilema. Cosa que, buscando y buscando me hizo caer en Lyceum el cual es un proyecto que hace lo que pensé yo, reestructuran las tablas de wordpress para que se pueda utilizar una sola tabla para todos los blog, de manera que un mismo dato puede estar en varios blog sin tener que estar duplicado. Esto me ha gustado mucho por que así­ por ejemplo no se tiene que crear un mismo usuario idéntico para cada web y se pueden gestionar sus datos para todas a la vez, pero plantea el fallo de que si cambiamos la estructura de la db corremos el riesgo de que no se puedan ejecutar algunos plugins o themes, eso sin contar los que maliciosamente se diseñen para cambiar los "permisos de blog" si liberásemos la función de subir libremente plugins.
Pero lyceum a pesar de eso parecí­a una buena opción hasta que se llega al siempre engorroso tema de la instalación, ya que no es ni mucho menos como la de un wordpress. Tiene un montón de parámetros reconfigurables que pueden hacer que la instalación falle y de echo lo hacen en muchas ocasiones, y eso sin contar con que si no se posee control total sobre el host donde se quiere instalar es prácticamente imposible hacerlo. y eso unido a q según los blog que ya he visto instalados, instala una versión de WordPress 1.0.9.0-beta, pierde todo su atractivo...

LyceumPor si alguien quiere instalarlo os cuento mi experiencia.
Para instalarlo lo 1º es ir a la web de lyceum y descargarlo. Yo me descargue el archivo lyceum-0.34.tar.gz el cual tiene dentro 4 carpetas.
La única que nos interés par la instalación es la carpeta "SRC", la cual continué los archivos que tendremos que subir al servidor para realizar la instalación.
Antes de subirlos tendremos que buscar el archivo "wp-config-sample.php" que esta dentro de la carpeta "config" y renombrarlo a wp-config.php.
A continuación, tenemos que cambiar DB_NAME, DB_USER, DB_PASSWORD y DB_HOST como en una instalación normal de wordpress para conectar lyceum con la base de datos, pero ademas, adaptar WEBROOT con la dirección en la que alojaremos el archivo"portal.php". Por ejemplo /Lyceum (sin barra al final) y MAINDOMAIN con la dirección en las que se encuentra la instalación completa.. (en mi caso seria www.tierra0.com si decidiera ponerlo en la raí­z de la web por ejemplo). Si queréis, podéis cambiar también DEAFULT_PS, y ponerlo en dí­a/mes/año/nombre_del_post para adaptar mas a español los permalink (eso es mas costumbre q necesidad para mi).
Si quieres instalarlo en modo "developer" solo tenemos que cambiar la LYCEUMDEBUG a "true" y cambiar SITETITLE y ADMINEMAIL en las lineas 68 y 69 por el nombre de la instalación y el mail que quieras usar(quitando los // de delante lógicamente para descomentarlos).
Una vez echas esas modificaciones en el archivo wp-config.php lo guardamos y subimos a la ubicación que le tengamos reservada. Al terminar,solo tendremos que entrar en /lyceum/wp-admin/install.php y continuamos la instalación poniendo el nombre del site y el email asociado para el grupo de blogs.
Una vez realizados estos pasos el host deberí­a funcionar, pero segun he leido hay que generar una dirección virtual o algo asi y la verdad, no es lo que tengo pensado así­ que hasta aquí­ os puedo contar sobre la instalacion.
Se instala SI, pero no se ejecuta, al intentar entrar los link fallan y no se accede a la administración aunque se vea el 1º blog an entrar a la carpeta /lyceum.

Parche wordpressPor este motivo decidí­ seguir investigando y me puse a pensar sobre como hacia las cosas WP para gestinar los datos y vi que constaba de 2 grandes partes básicas como casi todo sistema web. Un motor web el cual servirá las paginas del blog, y una base de datos a partir de la cual configurará la apariencia y contenido de estas. Por tanto, lo unico que tenemos que buscar es, que hace a cada WP único... que cambia entre instalaciones... y lo que cambia es básicamente el contenido de la instalación y algunas áreas de los archivos del host. WP utiliza un archivo fuente a partir del cual el resto del "motor de blog" se reconfigura, y este es wp-config.php, a partir del cual configuramos las variables de conexión a la base de datos y el lenguaje en el que se nos presentara la interfaz de usuario.
A partir de estos datos WP se conecta, y puede realizar la instalación, extracción de datos, configuración de la apariencia... o de cualquier cuestión que necesite información de o desde la base de datos. Así­ que como cualquier camino comienza por un primer paso, decidí­ que este seria el punto de partida.

Para hacer que un blog de WP se autoconfigure como un blog único con una base de datos única y no compartida, es necesario un un comienzo una extensión de tabla diferente al resto de los que estén creados. Eso es lo que hace mi primera modificación de WP. Autoconfigurar el wp-config.php de una instalacion virgen a partir de la cual podremos cambiar los datos de conexión de forma global y no tengamos que ir blog por blog modificando sus propiedades.
Para hacerlo he creado un archivo llamado config.php el cual dejo en la raiz de la web, de manera que todos los blog que se quieran crear y donde se quieran crear lo tengan como referencia.
El contenido de este config.php es el siguiente:

PHP:
  1. <?php
  2.  
  3. $carpetas_de_blogs = "Blog_uno";    //Escribe los nombres de las carpetas donde se alojan los blog separadas por comas (SIN ESPACIOS!)
  4.                             //Ejempplo: "Blog_uno,segundoblog,trercer_blog"
  5.                            
  6. $DB_NAME        = "dbname";  // Nombre de la base de datos
  7. $DB_USER        = "dbusername";  // Nombre de usuario para entrar en la base de datos
  8. $DB_PASSWORD    = "";      // Contraseña para entrar en la base de datos
  9. $DB_HOST        = "localhost";    // Casi siemrpe es Localhost pero puede que sea una IP o algo asi (host de la DB)
  10.  
  11. $table_prefix   = "_wp_"//Solo numeros y letras! (nombre estandar para las tablas. NOMBRECARPETA_wp_NOMBRETABLA)
  12.  
  13. $lenguaje      = "es_ES";  //Por defecto sin datos, Si quieres añadir el español hay q subir un archivo.MO especifico y poner es_ES
  14. ?>

Una vez alojado en el servidor, tendremos que modificar el wp-config.php de la instalación fuente de manera que se conecte automáticamente a nuestro archivo de configuración base. Su contenido será el siguiente:

PHP:
  1. <?php
  2.  
  3. //DATOS DE CONTROL MULTIPLE DE WORDPRESS  // // // // // // // // // // // // // // // // // // // // // // // // //
  4. function dirarchivo($archivo){
  5.     $actual= pathinfo(realpath("./"));
  6.     $path = explode("/", $actual[dirname]."/".$actual[basename]);
  7.     $i=count($path);
  8.     while (!is_file($dir)) {
  9.         $path[$i] = "\:\:\:\:";
  10.         $dir = "";
  11.         foreach($path as $valor){
  12.             if($valor != "\:\:\:\:"){
  13.                 $dir .= $valor."/";
  14.             }
  15.         }
  16.         $i--;
  17.        
  18.         $salida = $dir;
  19.         $dir .= $archivo;
  20.     }
  21.     return $salida;
  22. }
  23.  
  24. require(dirarchivo("config.php")."config.php");
  25. $path = explode('/', dirarchivo("wp-config.php"));
  26. $carpeta = $path[count($path)-2];
  27. // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
  28.  
  29. // ** MySQL settings ** //
  30. define('DB_NAME',      $DB_NAME);    // The name of the database
  31. define('DB_USER',      $DB_USER);     // Your MySQL username
  32. define('DB_PASSWORD',   $DB_PASSWORD); // ...and password
  33. define('DB_HOST',      $DB_HOST);    // 99% chance you won't need to change this value
  34.  
  35. // You can have multiple installations in one database if you give each a unique prefix
  36. if(!$table_prefix){
  37.     $table_prefix =     $carpeta;   // Only numbers, letters, and underscores please!
  38. } else {
  39.     $table_prefix =     $carpeta.$table_prefix;   // Only numbers, letters, and underscores please!
  40. }
  41. // Change this to localize WordPress.  A corresponding MO file for the
  42. // chosen language must be installed to wp-includes/languages.
  43. // For example, install de.mo to wp-includes/languages and set WPLANG to 'de'
  44. // to enable German language support.
  45. define('WPLANG', $lenguaje);
  46.  
  47. /* That's all, stop editing! Happy blogging. */
  48.  
  49. define('ABSPATH', dirname(__FILE__).'/');
  50. require_once(ABSPATH.'wp-settings.php');
  51. ?>

De esta manera, solo necesitaremos (teniendo el archivo config.php en la raiz), subir un wordpress (esto lo he probado con la version 2.1.3, pero supongo que al menos desde la 1.5 en adelante si que funciona) en una carpeta con nombre propio. Por ejemplo el blog con nombre "noname" tendria que ser un WP dentro de una carpeta con nombre "noname" y tener detnro del archivo wp-config.php el contenido anterior.
Una vez realizado esto se podrí­a replicar instalaciones que se auto ordenarí­an con nombres diferentes según el nombre de la carpeta en la que esté alojado su motor.