---
title: 'Grav TikiWiki Plugin'
url: 'https://www.twelvetone.tv/docs/developer-tools/grav-plugins/grav-tikiwiki-plugin'
markdown: 'https://www.twelvetone.tv/docs/developer-tools/grav-plugins/grav-tikiwiki-plugin.md'
date: '2026-09-25'
description: 'Use TikiWiki plugins, tables, and syntax in your Grav site.'
taxonomy:
  category:
    - docs
  devtype:
    - beta
---

[](#)  [ Home ](https://www.twelvetone.tv/docs/)     [ Developer Tools ](https://www.twelvetone.tv/docs/developer-tools)     [ Grav Plugins ](https://www.twelvetone.tv/docs/developer-tools/grav-plugins)      Grav TikiWiki Plugin    

# Grav TikiWiki Plugin

This product is in *beta state*. 
It is available to registered beta testers only.

Use TikiWiki plugins, tables, and syntax in your Grav site.

#### Table of Contents

- [Table Syntax](#table-syntax)
- [Internal Links](#internal-links)
- [Simple Links](#simple-links)
- [Plugin Blocks](#plugin-blocks)
    - [TABLE](#table)
    - [CODE](#code)
- [Registering Custom Tiki Plugins](#registering-custom-tiki-p)

This plugin allows using TikiWiki style syntax. See [TikiWiki Syntax](https://doc.tiki.org/Wiki-Syntax-Text).

Code inside of markdown code-fences will not be processed.

# Table Syntax

TikiWiki allows for a very succinct style table using double pipes.

```
||
Steven | male
Jennifer | female
Melody | female
||
```

When rendered, it will look like this:

|  |  |
|---|---|
| Steven | male |
| Jennifer | female |
| Melody | female |

# Internal Links

Tiki allows ((Page-Title)) style links. The backend looks up the page using the page title. You can use the either route or title in the parenthesis.

```
Go ((My Page))
Go ((/my-page))

```

will create a link

```html
<a href='https://www.twelvetone.tv/my-page'>My Page</a>
```

If a page is not found, the link will navigate to a *Create New Page* destination.

feature: Create New Page destination

If the page does not have a title, the route will be tested instead.

# Simple Links

Tiki allows \[http:[www.twelvetone.tv](http://www.twelvetone.tv)\] style links. The markdown trailing parenthesis (the URL part) is copied from the brace content (the text part). To qualify, the following conditions must be met:

- The \[...\] is not preceded by the character *\\*
- The \[...\] is not followed by the character *(*
- The content starts with a protocol (http:, https:, ftp: etc) and contains no spaces.

# Plugin Blocks

TikiWiki uses a plugin style that allows for calling a registered plugin with key-value parameters.

Here is the syntax

```
{PLUGIN_NAME(aParam="a value" anotherParam="another value")}
Here is the plugin data...
{PLUGIN_NAME}
```

We currently support TABLE, FANCYTABLE, and CODE plugins, along with custom plugins registered by other Grav plugins.

## TABLE

```
{TABLE(head="Name|Gender")}
Steven | male
Jen | female
Melody | female
{TABLE}
```

Will render as:

| Name | Gender |
|---|---|
| Steven | male |
| Jen | female |
| Melody | female |

## CODE

```
{CODE(type="xml" caption="Here's the code")}
<parent>
    <child age='12'>First</child>
    <child age='10'>Second</child>
</parent>
{CODE}

{CODE(type="javascript")}
const foo = "bar";
function doIt() {
    return 4*4;
}
{CODE}
```

Will render as:

Here's the code

```xml
<parent>
    <child age='12'>First</child>
    <child age='10'>Second</child>
</parent>

```

```javascript
const foo = "bar";
function doIt() {
    return 4*4;
}

```

# Registering Custom Tiki Plugins

We use Grav's built-in [Pimple](https://pimple.symfony.com/) container to create a plugin registry under the key *tiki*.

Here's a simple plugin definition.

```php
    // get the registry
    $registry = $this->grav['tiki'];
    // register the tiki plugin
    $registry->register("RANDOM", function($map, $contents) {
        $min = get($map, "min", 0);
        $max = get($map, "max", 100);
        $r = rand($min, $max);
        return "The random number is $r, and your contents are <em>$contents.</em>";
    });
```

The callback function has these properties:

|  |  |
|---|---|
| $map | A map of the configuration parameters. |
| $contents | The contents of the plugin code (between the {} markers). |
| return | A string with the raw markdown code to inject into the document. |

You would use the Tiki plugin in your Grav page like this:

```
{RANDOM(min="10" max="20")}
Hello World
{RANDOM}
```

And the output would be:

The random number is 12, and your contents are *Hello World .*

 [ ](https://www.twelvetone.tv/docs/developer-tools/grav-plugins/grav-history-plugin) [](https://www.twelvetone.tv/docs/developer-tools/grav-plugins/grav-softsite-plugin)

---

## Navigation

- Parent: [Grav Plugins](https://www.twelvetone.tv/docs/developer-tools/grav-plugins.md)
- Previous: [Grav History Plugin](https://www.twelvetone.tv/docs/developer-tools/grav-plugins/grav-history-plugin.md)
- Next: [Grav SoftSite Plugin](https://www.twelvetone.tv/docs/developer-tools/grav-plugins/grav-softsite-plugin.md)
