Pandoc als Wiki-Engine / Sitemap

Für bessere/leichtere Indexierung durch z.B. Google ist eine Sitemap nützlich.

Die Sitemap

Die Sitemap hat ein definiertes Format. Welche Tags in der XML-Datei wie zu benutzen sind, beschreibt z.B. Google Support: Sitemap erstellen.

Beispiel

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://wiki.failover.de/pandoc/elasticsearch/index.html</loc>
</url>
<url>
<loc>https://wiki.failover.de/pandoc/sitemap/index.html</loc>
</url>
<url>
<loc>https://wiki.failover.de/pandoc/index.html</loc>
</url>
</urlset>

Makefile

In Pandoc als Wiki-Engine ist bereits ein Makefile angelegt wurden. Dieses wird jetzt erweitert:

.SILENT:

INMD     := $(shell find * -type f -name "*.md")
INHTML   := $(shell find * -type f -name "*.html")


SITEMAPXML := sitemap.xml
SITEMAP := '<?xml version="1.0" encoding="UTF-8"?>\
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\
$(shell for _in in ${INHTML} ; do printf "<url><loc>https://wiki.failover.de/$${_in}</loc></url>"; done)\
</urlset>'

TIDY    := tidy -xml -utf8 -q
PANDOC  := pandoc --toc -f markdown -t html5 --template template.html -s --highlight-style kate

.PHONY: main html sitemap upload help

main: html sitemap

html: 
    $(info $@:) 
    for _in in ${INMD}; do \
        ${PANDOC} -o $${_in%.md}.html $$_in $${_in%.md}.yaml; \
    done

sitemap: html
    $(info $@:) 
    $(info ${SITEMAPXML})
    printf ${SITEMAP} | ${TIDY} - > ${SITEMAPXML}

upload:
    rsync -auv -C --delete ./* yourhost.com:/var/www/html/your_path/

help :
    echo ""
    echo "make (main)   - builds all in current directory"
    echo "make html         - creates all html files"
    echo "make sitemap  - creates a google sitemap: ${SITEMAPXML}"
    echo "make help         - this info"
    echo ""

HTML Template

Auch das HTML-Template template.html wird angepasst. Im <head>-Teil wird eine einzige Zeile eingefügt:

<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml" />