Utilizar el mismo diseño en web y aplicación móvil con BlogEngine.NET

by Marc Cortada 05/07/2012

Los diseños de BlogEngine.NET están definidos en la ruta themes\<nombre tema>. Una vez tenemos definido un tema para la aplicación web, BlogEngine.NET no permite asignar el mismo tema a otra aplicación. Por lo tanto tenemos dos opciones: duplicar las carpetas y asignarlas, o crear un softlink a una carpeta con un tema existente.

Si no tenemos acceso al servidor (por ejemplo solo podemos acceder vía FTP porque tenemos contratado hosting) solamente podremos aplicar la opción de duplicar la carpetas, con la desventaja de que cada cambio que realicemos en un tema lo tendremos que aplicar al otro tema. Probablemente, no pasará mucho tiempo en que algún día apliquemos un cambio en el diseño de un tema y se nos olvide duplicar estos cambios al otro tema.

Sin embargo, si tenemos pleno acceso al servidor (por ejemplo vía terminal server) podremos tener un tema y crear un softlink al mismo. Con esto se consigue que BlogEngine.NET vea dos carpetas, es decir, dos temas independientes que en realidad serán el mismo. Por una parte tenemos la ruta física y por otra una ruta virtual que apunta a la misma ruta física. Dicho de otro modo: no son dos carpetas separadas, es una carpeta y un apuntador a la misma, pero cualquier aplicación lo verá como dos carpetas. De este modo, todos los cambios que apliquemos a una carpeta aplicarán también a la otra (serán los mismos archivos físicos) y así no tendremos que preocuparnos de mantener actualizadas dos carpetas distintas.

Este blog tiene el mismo tema para aplicación móvil que para aplicación web y estoy utilizando la técnica de softlinks.

Si queréis más información sobre qué es un softlink, podéis visitar esta entrada.

¿Cómo hacerlo? Es muy sencillo:

Primero de todo os recomiendo hacerlo en un entorno de pruebas en el mismo servidor. Si tenéis creado un sitio web para pruebas podéis usarlo antes de hacerlo en el real. No se elimina ningún archivo en todo el proceso, pero siempre es recomendable tener una copia de seguridad.

  1. Entramos al servidor y abrimos un explorador de archivos.
  2. En el explorador de archivos, nos situamos en la carpeta dónde están todos los temas de BlogEngine.NET.
  3. Hacemos clic con el botón derecho presionando la tecla mayúsculas a la carpeta con el tema que será compartido y clic en: copiar como ruta de acceso.
  4. Abrimos la ventana de comandos cmd.
  5. Hacemos un cd "c:\(...)\themes" (es la carpeta superior a la que hemos copiado en el portapapeles, por si queréis aprovechar que tenéis la ruta en el portapapeles). Es importante situarse en la carpeta que contiene los temas, no en la de un tema concreto.
  6. Y ahora creamos el enlace virtual o softlink: mklink /D <nombreNuevoTema> "c:\(...)\themes\<nombreTemaOriginal>".

NOTA: es importante utilizar la ruta física entera ¡con la ruta relativa he tenido problemas!

Y si volvemos al explorador de archivos veremos que aparece una carpeta con el símbolo de acceso directo y esto puede crear confusión. A pesar de ser el mismo icono, no es un acceso directo, es un apuntador o softlink a otra carpeta. Si hacemos doble clic en el icono del acceso directo veremos como la ruta es válida, no nos redirige a la carpeta original que es lo que pasaría si fuera un acceso directo.

Y llegado a este punto ya tenemos el tema original y otra carpeta que apunta al mismo tema. Y para BlogEngine.NET esto son dos temas.

Es posible que tengamos que reiniciar la aplicación para que BlogEngine.NET reconozca el nuevo directorio como tema. Una forma rápida de reiniciar la aplicación es abrir el archivo web.config, hacer un cambio que no implique nada y guardarlo (pej: añadir un salto de línea al final del archivo). Al detectar un cambio en este archivo IIS reinicia la aplicación.

Entramos en la parte de administración de BlogEngine.NET > configuración > temas. Ya debería aparecer el nuevo tema con el nombre del softlink.

Lo asignamos como tema móvil y ¡listo! Ya tenemos el mismo tema tanto para aplicación móvil como para web.

¡Espero que os haya sido útil!

Tags:

Categorías: BlogEngine.NET | Programación y desarrollo | Trucos

No se aceptan más comentarios

Entradas por mes