Logo

Mi Blog con Emacs y Esteroides

Emacs, IA y Linux: Poder y Simplicidad en tu Flujo de Trabajo

mybloggingnotes@gmail.com


26/02/2025

Gestionando Dos Blogs Diferentes con org-static-blog en Emacs

1. Introducción

`org-static-blog` es una herramienta poderosa para crear blogs estáticos desde Emacs, pero por defecto está diseñada para manejar un solo blog. Si quieres trabajar con dos blogs diferentes (por ejemplo, uno personal y otro profesional), necesitas ajustar tu configuración en Emacs 28 para que soporte múltiples instancias. En este artículo, te guiaré paso a paso para lograrlo.

2. Estrategia general

La clave para manejar dos blogs con `org-static-blog` es usar configuraciones separadas para cada uno, almacenadas en variables distintas, y luego alternar entre ellas según el blog que estés editando o publicando. Esto implica:

  • Tener directorios separados para posts y publicaciones.
  • Definir plantillas y parámetros específicos por blog.
  • Usar funciones personalizadas en Emacs para cambiar entre configuraciones.

3. Configuración inicial

Primero, asegúrate de tener `org-static-blog` instalado en Emacs 28 (instálalo con `M-x package-install RET org-static-blog` si no lo has hecho). Luego, organiza tus directorios. Por ejemplo:

  • Blog 1 (personal): `~/blog-personal/`
  • Blog 2 (profesional): `~/blog-profesional/`

Dentro de cada directorio, crea subdirectorios para posts y publicaciones:

  • `~/blog-personal/posts/` y `~/blog-personal/public/`
  • `~/blog-profesional/posts/` y `~/blog-profesional/public/`

4. Configurar las variables para cada blog

En tu `init.el`, define las configuraciones de ambos blogs usando variables personalizadas. Aquí un ejemplo:

```emacs-lisp ;; Configuración para Blog Personal (defvar my-blog-personal-settings '((org-static-blog-publish-title . "Blog Personal") (org-static-blog-publish-url . "https://mi-blog-personal.com/") (org-static-blog-publish-directory . "~/blog-personal/public/") (org-static-blog-posts-directory . "~/blog-personal/posts/") (org-static-blog-drafts-directory . "~/blog-personal/drafts/") (org-static-blog-page-header . "<h1>Mi Blog Personal</h1>") (org-static-blog-post-template . "<h1>%title</h1><div>%date</div>%content")))

;; Configuración para Blog Profesional (defvar my-blog-pro-settings '((org-static-blog-publish-title . "Blog Profesional") (org-static-blog-publish-url . "https://mi-blog-pro.com/") (org-static-blog-publish-directory . "~/blog-profesional/public/") (org-static-blog-posts-directory . "~/blog-profesional/posts/") (org-static-blog-drafts-directory . "~/blog-profesional/drafts/") (org-static-blog-page-header . "<h1>Trabajo y Tecnología</h1>") (org-static-blog-post-template . "<h1>%title</h1><div>%date</div><div>Por un experto</div>%content")))

Cada lista asociativa define las variables esenciales de org-static-blog para un blog específico.

Crear funciones para alternar configuraciones Necesitas una manera de aplicar la configuración correcta antes de trabajar en un blog. Define funciones en tu init.el para esto:

emacs (defun my-set-blog-personal () "Activa la configuración del blog personal." (interactive) (dolist (setting my-blog-personal-settings) (set (car setting) (cdr setting))) (message "Configuración del Blog Personal activada"))

(defun my-set-blog-pro () "Activa la configuración del blog profesional." (interactive) (dolist (setting my-blog-pro-settings) (set (car setting) (cdr setting))) (message "Configuración del Blog Profesional activada"))

M-x my-set-blog-personal configura Emacs para trabajar con el blog personal. M-x my-set-blog-pro hace lo mismo para el blog profesional.

Crear posts para cada blog Ahora puedes crear posts en los directorios correspondientes. Por ejemplo:

4.1. Post para el Blog Personal (~/blog-personal/posts/2025-02-25-viaje.org):

org

5. Reflexiones

Hoy escribo sobre un viaje reciente que hice…

5.1. Post para el Blog Profesional (~/blog-profesional/posts/2025-02-25-proyecto.org):

org

6. Detalles

Este post detalla un proyecto técnico en el que estoy trabajando…

Publicar cada blog Para publicar:

Activa la configuración del blog deseado: M-x my-set-blog-personal para el personal. M-x my-set-blog-pro para el profesional. Publica: M-x org-static-blog-publish-file RET para un archivo específico. M-x org-static-blog-publish para regenerar todo el blog.

Los archivos HTML se generarán en el directorio public/ correspondiente a cada blog.

Personalizar aún más (opcional)

Tags por blog: Usa #+TAGS: en los posts de cada blog según tus necesidades (como expliqué en mi respuesta anterior). Estilos CSS: Añade un archivo CSS diferente en cada org-static-blog-page-header para distinguir visualmente los blogs. Atajos de teclado: Asigna las funciones a teclas para mayor rapidez, por ejemplo: emacs

(global-set-key (kbd "C-c b p") 'my-set-blog-personal) (global-set-key (kbd "C-c b r") 'my-set-blog-pro)

Solución de problemas

Configuración no cambia: Verifica que las funciones my-set-blog-* estén actualizando las variables correctamente (usa C-h v org-static-blog-publish-directory para inspeccionar). Posts mezclados: Asegúrate de que los directorios de posts sean distintos y que actives la configuración correcta antes de publicar. Errores de publicación: Confirma que los directorios existen y tienen permisos adecuados.

Conclusión Con este método, puedes gestionar dos blogs diferentes en org-static-blog desde Emacs 28 sin conflictos. Alternar entre configuraciones con funciones personalizadas te da flexibilidad y mantiene todo organizado. Es una solución práctica para quienes, como yo, queremos separar temas personales y profesionales sin abandonar nuestro flujo de trabajo en Org-mode. ¿Qué nombres le pondrías a tus dos blogs? TODO Próximos pasos

Probar publicar ambos blogs en un solo comando con un script Elisp. Añadir un indicador visual en Emacs para saber qué blog está activo. Explorar cómo sincronizar cada blog con un repositorio Git diferente.

Categoría: emacs blogging tutoriales

Suscribirse al Feed RSS | Mapa del Sitio

© 2025 M.Castillo | Hecho con ❤️ en Emacs y org-static-blog

Visit counter For Websites