Author Topic: [Bash] Bloge: Noch eine Blogengine  (Read 1981 times)

p

  • Global Moderator
  • Apache
  • *****
  • Posts: 110
  • Karma: +27/-0
    • View Profile
[Bash] Bloge: Noch eine Blogengine
« on: March 11, 2015, 03:34:37 pm »
Yipyip!
Langeweile führte dazu, dass ich einmal angefangen habe eine Blogengine schreiben zu wollen.
Einfach nur Bash+HTML. Nix dynamisch. Nix bloatware.
Momentan ist meine "Engine" (kek) so aufgebaut:
Der Post wird mit dem Editor der Wahl angelegt. Zeilenumbrüche werden in <br/> umgewandelt.
./newarticle.sh erstellt im ´webroot´/´day´ den Post mit timestamp. Anschließend werden die letzten 10 Posts genommen und zwischen den zwei Dateien "header" und "footer" (Layout, kek) eingefügt -> index.html

Nix spektakuläres, aber es ist ein Anfang und vertreibt Zeit. Ich ergänze nacher oder so noch das Bashfile + nextstep-Liste.
Wenn ihr dann Anregungen o.ä. habt, immer her damit :P

p

  • Global Moderator
  • Apache
  • *****
  • Posts: 110
  • Karma: +27/-0
    • View Profile
Re: [Bash] Bloge: Noch eine Blogengine
« Reply #1 on: March 18, 2015, 02:45:28 pm »
Der "Ablauf" ist ungefähr so:
Mit dem Editor der Wahl einen Post verfassen, Newlines werden automatisch in <br /> umgewandelt.
Code: [Select]
p@camelot:~/bloge$ ./newarticle.sh
Enter filename: post1
[Y]/N:
Posttitle: Hallo Welt
[Y]/N:
p@camelot:~/bloge$ ./reindex.sh

newarticle.sh erstellt aus den Files *post*, "header" und "footer" das umliegende HTML, inseriert den Post mit aktuellem Datum und dem aktuellen Timestamp als Filename.

reindex.sh sucht sich die letzten 10 Posts und erstellt mit "header" sowie "footer" die index.html neu.



newarticle.sh
Code: [Select]
#!/bin/bash

############
#Configuration paramters
############
webroot="/var/www/bloge/"
blogroot="/home/bloge/"
dateformat="%d-%b-%Y"
#Layoutconfig
posttitle="<b>%posttitle%</b><br />"
postcontent="<p>%postcontent%</p>"
postdate="%postdate%"
############

read -p "Enter filename: " content
content=$(cat "$blogroot$content" | sed 's/$/\n<br>/')
postcontent=${postcontent/"%postcontent%"/"$content"}
read -p "[Y]/N: " reply
reply=${reply:-Y}
if [ "$reply" == "Y" ] || [ "$reply" == "y" ];
then

 read -p "Posttitle: " title
 posttitle=${posttitle/"%posttitle%"/"$title"}
 echo "$posttitle"
 read -p "[Y]/N: " reply
 reply=${reply:-Y}
 if [ "$reply" == "Y" ] || [ "$reply" == "y" ];
 then
  curdate=$(date +"$dateformat")
  postdate=${postdate/"%postdate%"/"$curdate"}
  filename="$(date "+%s")"

  echo ""$(cat header)"<article>

"$postdate" - "$posttitle"
"$postcontent"
</article>"$(cat footer)"" > "$webroot"/"$filename.html"
 fi
fi

reindex.sh
Code: [Select]
#!/bin/bash

############
#Configuration paramters
############
webroot="/var/www/bloge/"
blogroot="/home/bloge/"
############


latestposts="$(cat header)"
  for f in $(find "$webroot" -name "[0-9]*\.html" -type f -printf "%f\n" | sort -r | head -n 10)
  do
    article="<article>$(cat "$webroot""$f" |  sed -n '/<article>/,/<\/article>/p' | sed -e '1s/.*<article>//' -e '$s/<\/article>.*//')</article>"
    latestposts="$latestposts $article"
  done
  latestposts=""$latestposts""$(cat footer)""
  echo "$latestposts" > ""$webroot"index.html"


Geplant ist jetzt noch folgendes:
- Mit reindex.sh noch eine Gesamtübersicht aller abgelegten Blogposts (im Webroot) als ein Index in der index.html verlinken.
- Mit reindex.sh noch implementieren, dass in allen Posts Layoutänderungen bzw CSS Änderungen eingepflegt werden. (CSS als File im Webroot ablegen ist eine Möglichkeit, allerdings kommen dann noch andere Änderungen hinzu. Entweder lager ich wirklich *alles* ins CSS aus (schöner), oder ich mache was ganz merkwürdiges. *g*
- Eine "Postverwaltung" implementieren ala: Zeige alle Posts, zeige den Post, lösche den Post, editiere den Post etc
- Eine "install.sh" oder "config.sh" erstellen, welche in einem Dialog die Configurationsparameter festlegt.
- Code kürzen, optimieren, kommentieren und verschönern



Ich requestiere Kommentare *g*