Looking for clarification on a few points before deciding whether or not to use Grav

I’m looking for right now is a content management system, and I like the idea of a flat file system, or at least one with a simple database system that can be stored within the same directory as the rest of the site files, for reasons of simplicity, performance, and ease of backup.

I’m looking at Grav as it seems to have most of the features I want, namely flat file, open source, and good community support. What I’m not clear on is the following:

  1. Grav uses Markdown, which I’m not so keen on. I’d much rather just make my pages with straight HTML. It’s not clear to me if I can upload or input my own HTML files if I want, or if I am forced to use Markdown.

  2. Grav does not seem to have any way to create categories or tags for pages. If I have a blog, and I want a user to be able to find all pages in the “cooking” category, is there a way in Grav I can do that?

  3. Grav uses Twig, which I know some people are a big fan of, but I’m comfortable using straight PHP. If I want to include my own PHP functions, or basic PHP functions inside a page, can I do that?

If anyone could clarify these aspects of Grav for me, I’d be very grateful.

Also, assuming I decide to go with Grave, I have one existing blog site that I would be willing to outsource to someone to convert to Grav for me. Are there recommended services for this?

@dave Let me address your wishes point by point:

  1. Migrating from Wordpress, I copied the html from pages/posts straight into my markdown files. The only markdown about them is the ‘*.md’ extension.

  2. Grav does have Taxonomy (docs) support. You can add taxonomies to your ‘markdown’ files using Yaml in the header, like:

    title: Coquilles Saint-Jacques
      category: Cooking
      tag: ['French cuisine', Scallops]
    <h1>Coquilles Saint-Jacques</h1>

    To get a collection of pages containing a certain taxonomy, you can do the following in Twig:

    {% for post in taxonomy.findTaxonomy({'category': 'cooking'}) %}
        <li>{{ post.title }}</li>
    {% endfor %}

    Of course, you can also call the taxonomy class from within PHP.

  3. Grav allows you to create php plugins (docs) which can subscribe to certain events. In your plugin you can intercept the page at hand and do with it anything you like. Here is a list of events your code can subscribe to.
    Plugins play nicely with Twig templates. Your PHP can be called from within Twig, and PHP can provide extra data to the Twig templates.

    Having said that… Plugins and Twig have separate responsibilities. PHP excels at logic and Twig in templating. Learning Twig is a breeze and will pay of rapidly. It is just an extra tool you can add to your belt…


  • You might try Trilby Media which offers several Grav based services and are the same team that build Grav.
  • Or you could ask here on the forum if someone is willing to offer the service.

Hope this helps…

Thanks for answering my questions. That helps a lot.