Kristoffer Qvists blogg om allt möjligt

Etikett: Grav

Grav, plugins med mera

Grav är ett CMS som jag tycker är ett väldigt intressant verktyg. Att med verktyget slippa använda databaser och istället använda filer för att visa hemsior känns väldigt bra då databaser har vissa svagheter och kräver att man ständigt använder sig av defensiv programmering. Dock måste jag säga att Grav ändå inte lämpar sig för en novis inom webbsfären. Det krävs, enligt mig, kunskap inom javascript, YAML, PHP, Twig och HTML. Orsaken till att man inte bör vara novis är att man nästintill är tvungen att använda kommandoraden för att installera plug-ins. För mig, som ändå är någorlunda bekväm med de tidigare nämnda teknikerna upplever systemet som relativt enkelt, men jag skulle däremot ha svårt att tänka mig en person med grundläggande tekniskt kunnande använda Grav.

Installation av plug-ins

För att exemplifiera kan jag nämna när man skall installera plug-ins, enligt den officiella dokumentationen: grav-root/bin/gpm install pluginnamn, alternativt ladda ned plug-ins till grav-root/user/plugins och därefter eventuellt modifiera plug-in:et. Visst, det finns ett administrativt gränssnitt som hjälper väldigt mycket, men då måste man som användare även vara införstådd med hur systemet fungerar, vilka menyer man skall använda med mera. Men av någon anledning tycker jag trots all ”krångel” om systemet ändå.

Communityt

Communityt är litet och man märker rätt tydligt av att det är många webbprogrammerare som utvecklar systemet. Behöver man hjälp får man det även om jag ibland kan uppleva lite ”RTFM-mentalitet”. Jag ser att systemet ändå har potential. Och det är bra att det finns personer, som inte är aktiva utvecklare som också lägger upp guider vilket lyfter betyget för Grav något för mig. Ett exempel på sådant är Bszyman, som på sin blogg skrev om hur man integrerade en arkiv-sida i sin installation av Grav. Jag blev förstås inspirerad av detta i mitt tidigare inlägg, och gjorde en något mer grundlig genomgång. Men det är klart, inlägget kan förmodligen förbättras ännu mer.

Alternativ till Grav

För både noviser och de som vill göra det enkelt för sig skulle jag nog ändå rekommendera att använda WordPress. Drupal har en s.k. distribution (samlade paket/plug-ins med kärn-Drupal) som också verkar väldigt lovande, vid namn Varbase. Dock har jag inte använt det såpass mycket att jag kan säga definitivt att nybörjare kan eller inte kan använda systemet. Men utifrån det jag sett så verkar ändå det ta bort en stor del av mödan att skräddarsy sajter.

Vidare läsning

För den som är intresserad finns det intressanta jämförelser av olika innehållshanteringssystem som är databaslösa. Nedan jämförelser är dock skrivna på engelska.

Lägga till arkivsida i Grav

Eftersom detta är en blogg är det för mig naturligt att man har en så kallad ”arkivsida”. I denna kan man visa då samtliga inlägg skrivna en viss månad eller ett visst år. Det finns ett plugin till Grav som gör detta, men denna är inte automatiskt igång. Det finns förstås färdiga skelett som kommer med mycket färdiggjort, men väljer man däremot att skräddarsy sin sajt med enbart det man behöver bör man ha lite kunskap inom PHP, HTML och Twig.

Mitt inlägg är inspirerat av Bszymans inlägg, som behandlar just detta ämne. Även om pluginet har viss dokumentation på deras Github-sida, är den inte riktigt fullständig. Jag vill också lägga till vissa punkter som jag upplever att båda saknade.

Mål och förklaringar

Målet med detta är att skapa en arkivsida som kan användas i bloggen. Det andra målet är att bloggen skall kunna använda sig av en URL som är mer snarlik en svensk URL än en engelsk. Dock kan man välja att ha kvar de engelska kategorinamnen och ändra arkiv-urlen till engelska om man upplever att det skulle fungera bättre för sin blogg.

Jag använder mig av vissa ord och uttryck i nedan text, nedan finns dessa förklaringar:

  • grav-root Mapp/katalog där Grav är installerat
  • _temanamn Då alla teman heter olika, är det tänkt att detta skall vara samma tema du som läser använder

Välj tema som stödjer arkiv

För att minimera den tid som man behöver skräddarsy sin sajt, rekommenderar jag att man använder ett tema som stödjer arkiv-funktionen. Samtliga teman går att hitta på Gravs hemsida.

Installera och modifiera plugin

Själva pluginet kan installeras via kommandoraden, om man är under grav-root, skriver man bin/gpm install archives i kommandoraden. Pluginet kommer därefter att finnas under grav-root/user/plugins/archives. För att modifiera pluginet ändrar man i grav-root/user/plugins/archives/archives.yaml. Nedan visar jag ett exempel då man vill använda ”blogg” istället för ”blog” som kategori för blogginlägg:

enabled: true
built_in_css: true
date_display_format: 'F Y'
show_count: true
limit: 12
order:
    by: date
    dir: desc
filter_combinator: and
filters:
    category: blogg
taxonomy_names:
    month: archives_month
    year: archives_year

Nu kan man även kopiera arkivinnehållet från plugin till temat. Det gäller att man kopierar filen grav-root/user/plugins/archives/templates/partials/archives.html.twig till grav-root/user/themes/_temanamn/templates/partials/archives.html.twig

Om temat inte har stöd för arkiv, kan nedan kodrad behövas läggas till i grav-root/user/themes/_temanamn/templates/partials/sidebar.html.twig

{% if config.plugins.archives.enabled %}
  <div class="sidebar-content">
    <h6 class="sidebar--heading">Archives</h6>
    <hr class="hr--small">
    {% include 'partials/archives.html.twig' with {'base_url':base_url_relative} %}
  </div>
{% endif %}

Modifiera sidfältet

För att ändra arkivfältet i själva sidfältet, modifiera filen grav-root/user/templates/partials/archives.html.twig. Ändra nedan kodrad

{{ base_url }}/{{ config.plugins... }}

till följande:

{{ base_url }}/arkiv/{{ config.plugins... }}

Modifiera mall och själva arkivsidan

Nu gäller det att dels skapa mallen för arkiv och själva arkivsidan. Först skapas mallen. Skapa filen grav-root/user/themes/_temanamn/templates/arkiv.html.twig. I denna skrivs sidans utseende. Nedan finns ett exempel på hur detta kan se ut:

{% embed 'partials/base.html.twig' %}

    {% block content %}

        <h1>Arkiv</h1>

        <div class="infinite-scroll columns small-12 large-8">
        {% for post in page.collection({'items':{'@taxonomy':{"category": "blogg", "archives_month": uri.param("archives_month")}}}) %}
            {% include 'partials/post-item.html.twig' %}
        {% endfor %}

        {% if config.plugins.pagination.enabled and collection.params.pagination %}
            {% include 'partials/load-more.html.twig' %}
        {% endif %}

        </div>

        <div class="sidebar columns large-4 show-for-large">
            <div class="sidebar--inner">
                {% include 'partials/sidebar.html.twig' with {'blog':page} %}
            </div>
        </div>
    {% endblock %}

{% endembed %}

Mallen säger åt systemet att dels hämta sidans utseende, men också att hämta sidofältet. För att använda mallen i en sida måste denna sida nu skapas. Skapa mappen grav-root/user/pages/arkiv och filen grav-root/user/pages/arkiv/arkiv.md. Fyll i nedan innehåll i filen arkiv.md

---
content:
items:
    "@page.children": "/blogg"
---

Nu bör det finnas en fungerande arkivsida på sajten. Det finns förmodligen sätt att få den sidan ännu bättre, men sidan ser redan nu väldigt bra ut.

Äntligen ombyte!

Jag har tidigare främst använt mig av WordPress som innehållshanteringssystem för min blogg. Det har visserligen fungerat bra ett bra tag för mig, men det har under årens lopp också medfört vissa bekymmer. Dock har jag ändå lärt mig mycket utav detta, dels vikten av att faktiskt ha en god lösning vad gäller cache men också hur pass länge jag kunde använda det systemet med väldigt begränsade resurser. Jag kommer att migrera de flesta inlägg till denna sajt så småningom.

Idag har jag förstås något bättre resurser och (förhoppningsvis) även ett lättare innehållshanteringssystem, vad gäller resursanvändningen. I slutändan handlar det om att kunna göra det man själv vill inom de ramar som man har. Jag själv tycker att det är en rolig utmaning att faktiskt kunna ”klämma ut” så mycket kräm som möjligt ur så få resurser som möjligt.

En gång i tiden var faktiskt denna hemsida i en Raspberry Pi modell B (precis, den innan B+), men det var för ungefär fyra år sedan. Dock är denna inte kvar på den maskinen, som jag för övrigt har kvar. Men med den ”ledig” så kan jag hålla på med andra projekt som jag finner roliga, även om Raspberry Pi modell B version 2 eller senare har fler stödda operativsystem.

Nu är det alltså dags att använda ett system som inte använder en traditionell databas. I stället använder jag mig av vad man i engelskan kallar för ”Flat file database”, vilket betyder att data sparas i textfiler. Den främsta orsaken är att jag driver en mindre blogg som egentligen inte kräver en stor databas med flera användare.

© 2024 qvi.st

Tema av Anders NorenUpp ↑