Migrando mi blog de Nikola a Sphinx#
Migrar de un generador estático a otro no es un proceso del todo transparente, así que aquí te explico algunos por menores para hacer una migración de Nikola a Sphinx.
Pero antes, es necesario tener presente, que lo básico del proceso de migración, inicia por tener lo mínimo desde cero, con Sphinx. Para este fin, debes seguir las indicaciones dadas en Crear un blog con Sphinx.
Migrando#
Bueno, una vez tenemos la base de nuestro blog, sigue hacer los ajustes para que nuestras entradas previas sigan funcionando.
Publicación#
Front matter#
Dado que en la configuración inicial añadimos un
patrón de ruta para las publicaciones,
no es necesario agregar la directiva de ..post:
o el atributo de :blogpost: true
.
Solo ubica los archivos en la ruta que cumpla el patrón 👀.
Importante, en Nikola definíamos la ruta de navegación mediante el ..slug:
, pero
esto en Sphinx depende del nombre del archivo y su ruta en el directorio. Asegurate
de usar la misma ruta de directorios al definido en el slug y el nombre del archivo
igual a la parte final de este 👀. Otra opción, es que sin importar el nombre y ruta de
directorios, uses el valor del slug como valor de :redirect:
(en este caso, añade
al archivo de configuración post_redirect_refresh=0
).
Para indicar el título en Nikola, se usaba el atributo de .. title:
, pero
ahora este debe ser explícito en la marcación de la publicación. Ejemplo:
Migrando mi blog de Nikola a Sphinx
===================================
# Migrando mi blog de Nikola a Sphinx
Esto hace que los títulos ya existentes, deban aumentar de nivel 👀.
En ablog no tenemos el equivalente del ..status:
de Nikola, pero se puede controlar
que una fecha actual o pasada sea equivalente a published
y si es una fecha futura o
sin fecha es el equivalente de draft
. El caso del private
podríamos hacerlo
excluyendo el archivo. El caso
featured
es más personalizado, pero se podría explorar con el objeto de las cards
en el índice.
Si queremos indicar la imagen de previsualización, en Nikola se usaba .. previewimage:
,
pero en ablog lo hacemos con :image:
y el valor no es la ruta de la imagen, sino el
número asociado en orden de aparición en la publicación. Esto se puede dejar con un valor
por defecto acorde a la variable en el archivo de configuración de post_auto_image
.
El atributo de .. description:
es tomado por defecto por truncamiento del primer
párrafo de la publicación (esto se usa en los metadatos de la publicación), pero también
podemos dejarlo si lo queremos personalizado (esto se hace con la extensión de open-graph).
El caso de .. link:
se debe convertir en :external_link:
.
Para la las actualizaciones, esto en lugar de ser un atributo, pasa a ser una anotación con marca de tiempo, pero con información de contexto.
.. update:: 2011-12-15
Se añade info extra
```{update} 2011-12-15
Se añade info extra
```
Con los atributos de .. nocomments:
, .. tags:
, .. date:
, .. author:
y .. category:
,
basta con cambiar ..
inicial por :
.
Respecto a la fecha es importante tener claro, que a diferencia de Nikola no podemos
mezclar tipos de formato de fecha. Estos deben añadirse según la definición que se
tenga en el archivo de configuración, en la variable post_date_format
.
No es necesario un atributo para habilitar las ecuaciones, ya que Sphinx las habilita
por defecto. En Nikola era necesario con .. has_math: true
.
El caso de .. type:
no posee equivalente.
⚠️ Si estamos usando markdown, la diferencia es quitar el :
inicial, tal
como se evidencia en la sección de
primera publicación, y el separador
<!-- -->
pasa a ---
.
Contenido#
En algunos casos, podíamos recurrir a listados de publicaciones mediante algún
filtro con .. post-list::
y el atributo de :categories
. Esto ahora pasa a
.. postlist::
con el atributo :category:
(puedes usar otros filtros también).
Respecto a .. thumbnail::
esta directiva no existe, y se reemplaza por .. figure::
.
La definición del teaser en Nikola dependía de una marcación específica como directiva
para el texto, pero en ablog esto es controlado por el atributo :excerpt:
, para denotar
el número de párrafos a incluir. Pero podemos dejarlo con un valor por defecto acorde a
post_auto_excerpt
en el archivo de configuración.
Para las referencias a documentos, en Markdown pasamos de {{% doc %}} path {{% /doc %}}
a
<project:path>
o [](path)
, mientras que en RST podemos mantener :doc:
siempre y cuando
no apunte a una etiqueta, en cuyo caso sería :ref:
.
Configuración#
Archivos en el raíz#
Los archvos en el raíz, se definen en un directorio que disponemos con la variable
html_extra_path
, la cual podemos definir con el mismo nombre que viene en Nikola
(files
).
Sistema de comentarios#
Si usamos Disqus (en Nikola, COMMENT_SYSTEM='disqus'
), el disqus_shortname
en
el archivo de configuración toma el valor del antiguo COMMENT_SYSTEM_ID
.
Nota
La verdad, he decidido retirar el sistema de comentarios de Disqus. Aporta poco valor respecto a lo que introduce en tiempo de carga. Posiblemente explore disponer el enlace de la publicación en Mastodon para que se desarrolle la eventual discusión.
Youtube#
Necesitamos instalar sphinxcontrib-youtube
y habilitar sphinxcontrib.youtube
en las extensiones. De esta forma, la directiva de .. youtube::
sigue tal cual.