hugohm/README.md

119 lines
3.5 KiB
Markdown
Raw Permalink Normal View History

# Página web del hackmeeting
La principal ventaja de esta web con respecto a la que hay actualmente es que
no necesita mantenimiento, mantiene la posibilidad de editar contenido por
varias personas y simplifica el backup.
El flujo de trabajo típico para añadir contenido a la web sería este:
1. Crear o editar un fichero en la carpeta `content`
2. Comprobar en local que la modificación es correcta
3. Hacer un commit con las modificaciones
4. Subir el commit al repositorio de git
5. Compilar la web
6. Enviar los ficheros al servidor web.
Los pasos 5 y 6 se pueden automatizar con alguna herramienta de integración
continua. En este ejemplo se usa drone.io. Para simplificar el resto de los
pasos la idea es preparar scripts u otro tipo de programas, que ayuden a
generar el contenido de manera más interactiva.
Este proceso puede ser demasiado complicado para personas sin experiencia en
git o markdown, sobre todo las integrantes del grupo local, que además no
conocen el funcionamiento de esta herramienta. Propongo instaurar el rol de
"madrina(s) de grupo local", gente que se encargue de asistir al grupo local y
en caso necesario de encargarse de subir los contenidos a la web.
Los datos que son más útiles para el grupo local se guardan en ficheros csv,
que es fácil de modificar en una hoja de cálculo, y permite un postpropceso
sencillo para obtener datos interesantes. Por ejemplo la cantidad de asistentes
que hay apuntados para cenar el sábado.
## Crear contenido
Hay una serie de comandos auxiliares para gestionar el contenido de la web de
manera sencilla.
Todos estos comandos aceptan un parámetro opcional: el año en el que estamos
trabajando. Si no se indica año se asume el actual.
Para crear un nodo:
bin/nuevo_nodo
Para gestionar la asistencia:
bin/asistencia
Para gestionar las necesidades:
bin/necesidades
2021-09-17 12:19:42 +02:00
Para crear una página corriente:
bin/nueva_pagina
2021-09-17 12:19:42 +02:00
Para empezar un nuevo hackmeeting:
bin/nuevo_hackmeeting
## Mini intro a Hugo
Para probar la web en local hay que instalarse hugo:
https://gohugo.io/getting-started/installing/
Para poner en marcha la web en modo desarrollo:
hugo server -D
Para compilar la web ejecutar el comando `hugo` sin parámetros, luego
basta con copiar el contenido de la carpeta `public` al servidor web.
Todo el contenido de la web está en la carpeta `content`.
Las plantillas para renderizar el contenido están en la carpeta `layouts`.
Las plantillas para generar contenido están en la carpeta `archetypes`.
Los ficheros estáticos están en la carpeta `static`, se copian tal cual a la
carpeta `public`.
Más información: https://gohugo.io/documentation/
2021-09-17 12:19:42 +02:00
## Estructura básica del contenido
Cada año creamos una carpeta nueva dentro de `content`, usando el archetypes `hm`.
Esta carpeta tiene la página inicial, el manifiesto, el listado de nodos y la
página de asistencia.
## Shortcodes
Estos son los shortcodes definidos para el hackmeeting:
### rawHTML
Renderiza el contenido del shortcode sin procesar, por lo que se puede meter html arbitrario.
Ejemplo:
{{< rawHTML >}}
<table>
<tr><td>Una tabla</td></tr>
</table>
{{< /rawHTML >}}
### csvTable
Renderiza un csv como una tabla HTML. Hay que pasarle dos parámetros, el path
del csv relativo a la raíz del proyecto y la clase css que se le asignará a la
tabla.
Hay que generar un fichero csv separado por comas.
Ejemplo, para un fichero `content/2019/nodos/parrilla_viernes.csv':
{{< csvTable file="/content/2019/nodos/parrilla_viernes.csv" class="parrilla" >}}