
⚙️ Grav: sageli kasutatavad seaded ja koodijupid (Markdown, Twig, Atom editor)
Kui oled Grav CMS-iga mitu aastat töötanud, koguneb sul hulk katkendeid, mis rändavad projektist projekti kaasa. YAML-i päis, Twigi mallid, süntaksi esiletõstmise seadistused, Atomi regulaaravaldised: iga kord dokumentatsiooni või vana repositooriumi läbi kaevamine raiskab aega. Eriti siis, kui Grav jookseb VPS-is ja sul on vaja meelde tuletada, kuidas PHP 8.3 jaoks sqlite draiverit korralikult paigaldada või pärast Apache'i uuendust SetHandler välja kommenteerida.
See spikker on destilleeritud päris praktikast: vaikimisi päis, Markdowni seaded lehtedele, Twigi katkendid postituse kehas, Atomi regulaaravaldis .md ekspordi järeltöötluseks ja Ubuntu serveri käsud. Kõik ühes kohas, koos selgitustega, mida ja miks tehakse.
💡 Kiirülevaade:
- Grav YAML-i päise seadistamine kõigi väljadega: taxonomy, page-toc, highlight, process, kohandatud page-addon
- Markdowni loogika seadistamine lehe päistes: pealkiri, kirjeldus, kuupäev, taksonoomiad, mall
- Twigi koodi lisamine kehasse: automaatne sisukord
toc()abil, Unitegallery galerii - Writage'i
.mdeksportide töötlemine Atomis:media/asendamine teekondades, klasside edastamine laisa laadimise jaoks - Serverikeskkonna seadistamine: SQLite, Memcached, PHP 8.3 Ubuntu 24.04 peal, php*.conf failide muutmine Virtualmini jaoks
Kõigi saidi lehtede Grav vaikimisi päis
Grav lehe YAML-i põhipäis sisaldab välju, mida CMS renderdamise ajal loeb. Allpool on töötav mall, mis katab enamiku tüüpilisi ülesandeid: taksonoomiatest kuni kohandatud page-addon lippudeni.
1 title: '' 2 date: '2026-06-14 10:00' 3 published: true 4 media_order: poster.jpg 5 metadata: 6 description: '' 7 taxonomy: 8 category: 9 - WordPress 10 tag: 11 - WordPress - Plugins 12 - WordPress - Admin 13 page-toc: 14 active: true 15 template: blog_item 16 highlight: 17 enabled: true 18 lines: true 19 page-addon: 20 ifarmelazy: true
page-toc.active: true aktiveerib Page Toc plugina (GitHub), mis ehitab lehele otse H1-H6 pealkirjadest sisukorra. template: blog_item määrab selgesõnaliselt blogi alamlehe malli, nii et Grav ei pea seda igal renderdamisel heuristiliselt tuvastama.
page-addon plokk on kohandatud sektsioon kasutaja määratud lippude jaoks. Siin ifarmelazy: true lubab iframe'ide laisa laadimise: failis user/themes/g5_helium/custom/templates/partials/blog_item.html.twig käivitub tingimus, mis laeb iframe.ly skripti.
1 {% if attribute(page.header, 'page-addon').ifarmelazy %} 2 <script async charset="utf-8" src="//cdn.iframe.ly/embed.js"></script> 3 {% endif %} 4
Iframe'i enda (näiteks YouTube'i video) sisestamiseks kasuta seda struktuuri:
1 <iframe allowfullscreen 2 data-iframely-url="https://www.youtube.com/embed/54WI1XSilb4" 3 scrolling="no" 4 style="border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;"> 5 </iframe>
Markdowni seaded postituse lehe päistele
See jaotis käsitleb iga üksiku postituse päises määratud välju.
Pealkiri ja kirjeldus
1 title: 'Grav + Gantry 5 — an overview of useful extensions and resources' 2 metadata: 3 description: 'A collection of Grav extensions for Gantry 5 that speed up work with content and templates.'
Kirjeldus läheb <meta name="description"> sisse ja on oluline otsingutulemuste katkendite jaoks.
Loomise kuupäev ja Auto Date
1 date: '2026-06-14 10:00'
Selleks, et kuupäev määrataks lehe loomisel automaatselt, paigalda Auto Date plugin, github.com/getgrav/grav-plugin-auto-date. See sisestab praeguse kuupäeva ja kellaaja, kui date väli pole käsitsi täidetud.
Taksonoomiad
Ühe kategooria ja ühe sildi jaoks sobib lame süntaks:
1 taxonomy: 2 category: WEB 3 tag: Markdown
Mitme väärtuse korral kasuta loendi vormingut:
1 taxonomy: 2 category: 3 - Grav 4 tag: 5 - Grav - Gantry 5 6 - Grav - Plugins
Lehe sisukord ja mall
Lehe sisukord loob pealkirjadest sisukorra lehe kehaosas. Lisaks lipule page-toc.active: true päises saate lisada Twig-koodi otse teema mallile (vt Twig-i osa allpool).
template: blog_item määratakse käsitsi, et Grav kasutaks usaldusväärselt blogi alamartikli malli, kuna CMS-il esineb mõnikord uute lehtede automaatse tuvastamisega tõrkeid.
Markdowni ja Twig-i eeltöötlejad
1 process: 2 markdown: true 3 twig: true 4 twig_first: true
twig_first: true tähendab, et Grav töötleb esmalt Twig-i mallimootorit ja seejärel Markdowni. Järjekord on kriitiline, kui lehe keha sisaldab Twig-loogikat, mis genereerib Markdown-märgendust.
Süntaksi esiletõstmine (Highlight)
Sõltub Highlight pluginast, github.com/getgrav/grav-plugin-highlight.
1 highlight: 2 enabled: true 3 lines: true
lines: true lisab esiletõstetud koodiplokkidele reanumbrid.
Twig-i seaded lehe keha jaoks
Automaatne sisukord toc() abil
Lehe sisukord võib töötada mitte ainult päisest, vaid ka otse teema malli sisestamise kaudu. Failis user/themes/g5_helium/custom/templates/partials/blog_item.html.twig lisage:
1 {# PAGE TOC START #} 2 {# 3 page-toc: 4 active: true 5 #} 6 {% if attribute(page.header, 'page-toc').active %} 7 {% set table_of_contents = toc(page.content) %} 8 {% if table_of_contents is not empty %} 9 Table of contents: 10 {{ table_of_contents|raw }} 11 {% endif %} 12 13 {% endif %} 14 {# PAGE TOC END #} 15
Twig-i funktsioon toc(page.content) parsib pealkirju page.content sees ja tagastab struktureeritud puu. Tingimus kontrollib page-toc.active lippu päisest, võimaldades teil sisukorda üksikute lehtede jaoks sisse ja välja lülitada ilma malli puudutamata.
Pildigalerii Unitegallery abil
Unitegallery plugin, github.com/variar/grav-plugin-unitegallery, lisab Gravile galerii, mis põhineb Unitegallery JS-teegil ja pakub mitut kuvamisteemat.
Pärast paigaldamist administraatoripaneeli või GPM-i (Grav Package Manager) kaudu lisatakse lehe kehasse üks rida:
1 {{ unite_gallery(page.media.images) | raw }} 2
See renderdab kõik lehe meediakogusse üles laaditud pildid galeriina.
Atom otsing ja asendamine Writage.md eksportide jaoks
WordPressi postituste Markdowni eksportimisel Writage'i kaudu sisaldavad pilditeed media/ prefiksit ja laisa laadimise lubamine nõuab figure-img ja img-fluid klasse. Iga URL-i käsitsi muutmine on mõttetu; Atom koos regulaaravaldistega teeb selle sekundiga.
Lazy Image plugin haldab laiska laadimist, github.com/unsaturated/grav-plugin-lazy-image.
Otsi (regulaaravaldis):
1 (![.*]()(media/)(.*)())
Asenda lightbox-variandiga (FeatherLight plugin):
1 $1$3)
Asenda ainult laisa laadimisega:
1 $1$3?classes=figure-img,img-fluid)
Pärast asendamist saab pilt classes päringuparameetri, mille Lazy Image tuvastab.
Pisipiltidega töötamine
Grav oskab pilte dünaamiliselt töödelda: suurust muuta, kärpida, puhverdada. Lehe pisipilt määratakse Markdowni süntaksi ja päringuparameetrite abil:
1 
Lisateave meediavõimaluste kohta ametlikus dokumentatsioonis: learn.getgrav.org/content/media.
Ubuntu 24.04 serveri seadistamine Gravile
Grav VPS-is vajab PHP-d, SQLite'i (sisemise pluginatega andmebaasi jaoks) ja soovitavalt Memcachedi (lehe puhverdamine). Allpool on kehtivad käsud Ubuntu 24.04 LTS ja PHP 8.3 jaoks.
PDO SQLite paigaldamine PHP 8.3-le
1 sudo apt-get update 2 sudo apt-get install php8.3-sqlite 3 sudo systemctl restart apache2
SQLite'i kasutab Grav logide, pluginapuhvri ja sisemise arvepidamise salvestamiseks. Ilma draiverita jookseb administraatori paneel kokku andmebaasiühenduse veaga.
Memcachedi paigaldamine
Kehtivad juhised: tecadmin.net/install-memcached-with-php-on-ubuntu/.
1 sudo apt-get update 2 sudo apt-get install memcached 3 4 sudo add-apt-repository ppa:ondrej/php 5 sudo apt-get update 6 sudo apt-get install -y php php-dev php-pear libapache2-mod-php 7 8 sudo apt-get install -y php-memcached 9 10 sudo systemctl restart apache2
PHP failid ei käivitu pärast versioonimuutust (Virtualmin/Webmin)
Pärast PHP 7.x pealt 8.3-le üleminekut võib Apache serveerida .php faile teksti, mitte neid käivitades, mis on teadaolev käitumine moodulite vahetamisel. Probleemiks on SetHandler direktiivid PHP mooduli konfiguratsioonis.
1 sudo nano /etc/apache2/mods-enabled/php8.3.conf
Kommenteeri välja need read:
1 # SetHandler application/x-httpd-php 2 # SetHandler application/x-httpd-php-source
Lõplik php8.3.conf pärast muudatusi:
1 <filesmatch ".+\.ph(ar|p|tml)$"> 2 # SetHandler application/x-httpd-php 3 </filesmatch> 4 <filesmatch ".+\.phps$"> 5 # SetHandler application/x-httpd-php-source 6 # Deny access to raw php sources by default 7 # To re-enable it's recommended to enable access to the files 8 # only in specific virtual host or directory 9 Require all denied 10 </filesmatch> 11 12 # Deny access to files without filename (e.g. '.php') 13 <filesmatch "^\.ph(ar|p|ps|tml)$"> 14 Require all denied 15 </filesmatch> 16 17 # Running PHP scripts in user directories is disabled by default 18 # 19 # To re-enable PHP in user directories comment the following lines 20 # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it 21 # prevents .htaccess files from disabling it. 22 <ifmodule mod_userdir.c=""> 23 <directory /home/*/public_html> 24 php_admin_flag engine Off 25 </directory> 26 </ifmodule>
Pärast muutmist taaskäivita Apache:
1 sudo systemctl restart apache2
Video: mis on Grav CMS ja kust alustada
Lühike sissejuhatus Gravi neile, kes kuulevad failipõhisest CMS-ist esimest korda: mis on kapoti all, kuidas sisu on struktureeritud ja miks ilma andmebaasita töötamine võib olla kiirem.
⁉️🤔 Korduma kippuvad küsimused
Kas Grav vajab andmebaasi?
Ei, Grav on failipõhine CMS. Kogu sisu, seaded, taksonoomiad ja metaandmed salvestatakse tekstifailidesse (Markdown ja YAML). SQLite'i kasutatakse valikuliselt sisemisteks vajadusteks: pluginapuhver, logid, järjekorrad. PostgreSQL ja MySQL ei ole ametlikult nõutavad. Praktikas tähendab see, et saidi varundamine on lihtsalt
/userkausta kopeerimine.
Kas Page Toc plugin on sisukorra jaoks kohustuslik?
Selle saab asendada otse Twig-koodiga, kasutades teema mallis
toc(page.content). Kuid plugin on mugavam kiireks sisse- ja väljalülitamiseks konkreetse lehe YAML-päises oleva lipu kaudu. Kui teie saidil on 50+ lehte, on päise kaudu haldamine praktilisem kui mallis hargnemine.
Mille poolest erineb Highlight Prism.js-ist või Highlight.js-ist?
Highlight on ametlik Grav plugin, mis integreerib highlight.js-i otse renderdamise torustikku. See mõistab YAML-päisest
enabledjalineslippe ega vaja käsitsi JS/CSS kaasamist; GPM haldab kõike. Prism.js tuleks teemasse käsitsi lisada.
Kas Grav on 2026. aastal võrreldes WordPressiga endiselt asjakohane?
Teatud stsenaariumide puhul jah. Grav võidab staatiliste visiitkaardisaitide, portfooliode, dokumentatsiooni ja maandumislehtede puhul, kus keerulist kasutajaloogikat ja e-kaubandust pole vaja. Failipõhine arhitektuur tagab kohese vastuse ilma andmebaasita ning sisu versioonihaldus toimib Giti kaudu. Kuid tuhandete postitustega ajaveebi, meediateegi ja dünaamiliste arhiivide jaoks on WordPress oma pluginate ökosüsteemi tõttu praktilisem.
Mida teha, kui Gravi administraatoripaneel lakkab pärast PHP uuendust töötamast?
Kolm tüüpilist põhjust: (1)
php8.x-sqlitepole installitud ja Grav jookseb ilma andmebaasidraiverita vaikselt kokku; (2)SetHandlerpole Virtualmini kasutamisel failisphp8.x.confkommenteeritud ja Apache serveerib.phpfaile tekstina; (3)/usersees olevatecache/,logs/jabackup/kaustade õigused on lähtestatud, seega käivitagechown -R www-data:www-data user/.
Valmis spikker: mida oma projekti kopeerida
Kuus faili ja pluginat, mis käivitavad tüüpilise Gravi projekti VPS-il: taksonoomiate ja page-toc'iga päis, Twig-sisukord mallis, Markdowni eeltöötleja, Highlight, Unitegallery ja Atom regex ekspordi järeltöötluseks. Lisage Ubuntu 24.04 jaotisest serveri seadistus ja teil on poole tunniga täiesti valmis keskkond. Hoidke see leht järjehoidjates; uuendame näiteid vastavalt kehtivatele Gravi ja PHP versioonidele.



