How to install a theme?

Hello, I’m new to Kirby.

I have installed the Starterkit and I would like to try the Baseblog theme. As far as I understand, I must replace the default /assets, /content and /site folders by the ones from Baseblog. But I don’t want to lose the default theme!

The only solution I see is to make a new installation of Kirby —reinstall the Panel, create a new user, etc.—, which seems impractical to me as long as I just want to test different themes.

Maybe it’s because I’m accustomed to the way themes in WordPress works but I don’t get the logic behind Kirby’s system.

How do you do it?

A theme in Kirby is really more of a complete installation consisting of the site, assets and content folders. The reasons for this is that content, templates, blueprints etc. are closely tied in Kirby not only by their file names, but also in what they render.

With Kirby, you are absolutely free to define your own content fields. To render these content fields, you need a corresponding template. And to show these fields in the Panel, a corresponding blueprint.

The small downside is that this makes switching between different themes rather difficult, as compared to Wordpress, where you only have one big field for all your content. The big advantage is that you get structured content that you can use in many different ways.

While it should be possible to install a lot of theme parts as a plugin now using Kirby’s extension registry, there are still limits as outlined above.

This was just to give you some background information.

To answer your question, if you want to install a theme, either replace your existing files with the ones from the theme (rename your old folders e.g. with an underscore), or use a new installation.

@texnixe, thank you very much for the detailed background information :slight_smile:
Your whole answer helped me a lot.

By the way, if you have to make a new installation, is there a way to preserve the user credentials so you don’t have to create a new user each time? I tried to preserve them by copying and pasting the whole directory, but this doesn’t seem to work :sweat_smile:

It should work if you copy/paste the /site/accounts folder? At least it works for me…

1 Like

Oh, you’re right, if I copy/paste the /site/accounts folder it works as expected. :ok_hand:

Thanks for answering this query. I am also new to Kirby and this was very helpful.


It should work if you copy/paste the /site/accounts folder? At least it works for me…

i did so, but it doesn’t work.



1 Like

@FUSS You posted another topic, if you can’t access the Panel, then that’s probably your issue? Or is the other one sorted out?

Hallo Sonja,

ich weiß nicht, ob die beiden Sachen zusammenhängen. Ich probiere mich gerade an meiner ersten Kirby-Installation. Soweit ich das hier verstanden habe, kann ich das Theme per FTP aus einer anderen Installation übertragen und dann ist das erledigt ohne das ich in das Panel rein muss.



Hm, if you can’t even access the Panel, then moving the site/accounts folder from one installation to another doesn’t help you any.

What theme do you want to install? Usually, a theme comes as a complete Kirby installation (or as an installation with just the Kirby and Panel folders missing).

Maybe you can provide some more information - in English, if possible, please (so that future non-German speaking visitors can follow along as well) - so that I can understand the problem better?

in English below

Mit dem anderen Theme möchte ich das Problem mit dem Panel nicht lösen.

Das Theme soll von einer anderen Gruppe übernommen werden, damit beide Seiten gleich aussehen. Ich konnte mir deren Seite per FTP runterladen und muss da das Theme rausfischen aus der mir noch nicht vertrauten Ordnerstruktur und übertragen. Ich möchte aber ansonsten eine frische Installation haben ohne z. b. die Inhalte der anderen Gruppe. Ich sehe ja auch ohne Panel das Beispiel-Frontend und das wird halt nicht wie erwünscht dargestellt, obwohl ich per FTP den Inhalt aus /site/accounts übertragen habe per FTP.

Das Theme ist eine Eigenentwicklung, die nicht frei verfügbar ist.

Ich tue mich damit schwer, das Problem in Englisch auszudrücken.

English summary: I have the website of an other group and my site should look the same way. Becauce of that, I will only copy the files, that a nessassary for the same look (the theme).After I copied the /site/accounts folder, the look of the website doesn’t change.


Ok, the site/accounts folder only holds the account files for the Panel. As long as you are not dealing with the Panel, you don’t need anything inside this folder.

A theme usually consists of:

  • snippets in /site/snippets
  • templates in /site/templates
  • (controllers in /site/controllers)
  • (page models in /site/models)
  • assets in /assets (stylesheets, fonts, images, scripts etc)

Additionally, a theme might have

  • plugins in /site/plugins
  • Panel fields in /site/fields
  • kirbytags in /site/tags

As you can see, the important folders for a theme are in the /site folder as regards the template logic/HTML presentation, and in the /assets folder for styles, scripts etc.

Please note that for the site to display anything, the content folder is necessary. Obviously, all the templates will only come into play once you add content files with the same file name.

The Getting Started Guide has an overview of Kirby’s folder structure that might also help.

German addendum:

Um das Theme jedoch sinnvoll nutzen zu können, müssen die entsprechenden Felder, die in den Templates verwendet werden, in den Content files jedoch existieren. Wenn du allen Content entfernst, wird das also möglicherweise nicht oder nicht wie erwartet funktionieren. Insbesondere dann, wenn in den Templates Seiten aufgerufen werden, die nicht existieren. Ein Beispiel für typischen Code.

<?= page('blog')->title() ?>

Wenn es keinen blog folder gibt, wird dieser Code einen Fehler ausgeben.

Dies nur als Warnung für Probleme, die auftauchen können. Möglich ist es natürlich schon, dann eben mit den entsprechenden Anpassungen.

I can’t believe that this is the way themes “work” in Kirby. Every thing else is nicely designed by @bastianallgeier but this mixed folder structure is a total mess. Is this really true? It is almost a killer criterion to not us Kirby.

Kirby is not comparable to Wordpress, where you switch “themes” all the time (even though I think there are limits as well, because shortags or plugins will not be supported in each template). Content and templates are closely related given the fact that each page can have a completely different structure with completely different fields. Therefore you can’t just swap templates around like you want. It’ sort of the price you pay for that freedom.

But yes, if you need a solution like Wordpress where you can switch themes with the click of a button, then Kirby might indeed not be the right solution.

Apart from that, you can create your own custom folder structure and register templates, blueprints etc. via a plugin, for example, if you want to reuse certain parts of a site in future projects. @jenstornell is a master of completely transforming Kirby (see this plugin:



know I have copied after I installed Kirby new:

  • snippets in /site/snippets
  • templates in /site/templates
  • assets in /assets (stylesheets, fonts, images, scripts etc)
  • plugins in /site/plugins
  • controllers in /site/controllers

There ist no /site/models.

But nothing chance in the look of the website.

I don’t find an explanation what fields means in Kirby. I only read everywhere, what to with them.

Good night


A field is a key in a content file that can take a value, for example

  • title
  • text


The value of such a field can then be queried in a template:

<?= $page->title()->html() ?>
<?= $page->text()->kt() ?>

Well, I don’t know what is in your theme files, whether you have just added differently named files or replaced existing files.

The important thing is to understand that a content file with a file name home.txt, for example, is rendered with a template home.php if that template exists. If not, the default template default.php is used. Check out the first few chapters of the documentation to get an overview at least.

So if you now have the starterkit with its content and added some other templates with different names that do not relate to anything in the content file, nothing is going to change.

As as regards the stylesheets etc, you would have to replace them as well as explained in the folder outline above.

English summary at the end of the posting


jetzt wechsle ich sicherheitshalber mal lieber in Deutsche, damit wir nicht tagelang aneinander vorbei reden:

Das ist mir soweit klar - ich habe im Handbuch halt keine Definition von Feld gefunden.

Ich möchte eine kleine Seite erstellen, die im Layout identisch zu einer anderen Webseite eines Vereins ist, nur halt andere Menüs hat. Ich habe ein paar Inhalte, bei deren Benennung ich mich an den vorgesehenen Templates orientieren kann.

Soweit ich Kirby verstanden habe, bedingt die enge Verbindung von Layout und Inhalt, die erst bestimmte Dinge möglich macht, dass man nicht wie bei Wordpress Themes austauschen kann, so dass es mir nun plausibel erscheint, dass ich einfach die Webseite komplett bekommen habe.

Aktuell läuft die Seite mit dem Standard-Theme und ich plage mich noch mit den anderen Herausforderungen. Ich habe aber die o. g. Ordner via FTP kopiert und kann durch Umbenennen der Ordner, halbwegs schnell umschalten, aber dann wird trotzdem weiterhin das Standard-Theme genommen und ich “schalte” wieder zurück, um bei den anderen Problemen mit einem möglichst wenig modifizierten System zu arbeiten, bis es endlich klick macht.

Hier ist also die Frage: Was muss ich von der Vorbildseite übernehmen, damit die mit dem gleiche Theme läuft (aus dem sich dann ergibt, welche Tamplates mir zur Verfügung stehen, solange ich keine ergänze). Bis dahin kann ich mit default.txt m. E. nicht viel falsch machen, wenn ich Menüs anlege - die Dateien kann man ja jederzeit schnell umbenennen. Andere Felder als Title und Text sind bei mir nicht im Einsatz.

Soweit ich die Programm-Logik verstanden habe, muss ich nur die o. g. Ordner übertragen. Aber das führt - wie gesagt - nicht zum erhofften Ergebnis. Also kann das nicht ausreichen. Ein Hilfe-Kapitel dazu habe ich nicht gefunden.



btw: Auf ist der Link nicht zum aktuellen Plugin-Account sondern zum alten.

English summary: There is no difference in the look of the website if I use the Kirby default theme or if I uses the named folders from the website, whose theme I want to adopt. If I don’t dealing with this problem, I use the Kirby default theme.

DE: Ehrlich gesagt würde ich als Ausgangspunkt nicht das Starterkit nehmen sondern das PlainKit, da ist einfach noch gar nichts drin. Dann den kompletten /site folder und den kompletten /assets folder rauswerfen und mit dem der Beispielseite ersetzen. Oder aber die Beispielseite als Ausgangspunkt nehmen und alles rauswerfen, was nicht gebraucht wird bzw. nur die Inhalte austauschen.

EN: In this case I’d rather use the PlainKit as a starting point instead of the Starterkit, because it doesn’t contain any content, templates or files but just the basics. Then replace the site and assets folders with the corresponding folders from the example site. Or, use the example site as starting point and throw out anything that is not needed.

Thanks for the hint regarding the links, I have updated them in the repo.

The only think, that realy works, is getting errors and problems.

  1. I do, what you suggest

In this case I’d rather use the PlainKit as a starting point instead of the Starterkit, because it doesn’t contain any content, templates or files but just the basics.

A added two folders in content from my first installation.

I see:


I think, thats right. But I miss my content.

Then replace the site and assets folders with the corresponding folders from the example site.


To solve this problem, I added a line in //kirby/.htaccess (the last one in the following excerpt).

# make sure to set the RewriteBase correctly
# if you are running the site in a subfolder.
# Otherwise links or the entire site will break.
# If your homepage is
# Set the RewriteBase to:
# RewriteBase /mysite

# In some enviroments it's necessary to
# set the RewriteBase to:
# RewriteBase /

RewriteBase /kirby

The same with

RewriteBase /

doesn’t help, too.

I saved the text as utf-8 in LibreOffice Writer then, becauce of LO can this.

Then I have a Internal Server Error.

I change back to the original file of .htaccess

DE: Ich drehe mich im Kreis und komme immer wieder mit den Lösungsorschlägen zu den Problemen, die gelöst werden sollen. Jetzt habe ich so viel durchprobiert, dass ich nicht mehr sagen kann, was ich schon in welcher Kombination durchprobiert hat. [Vor der Neuinstalltion Nr. 3 funktionierte auch der im Handbuch genannte Test, ob .htaccess geladen wird] ( Aber jetzt geht selbst das nicht. Hätte ich gewusst, dass es offensichtlich fortgeschrittene Server-Kenntnisse braucht, um das überhaupt lauffähig installiert zu bekommen, hätte ich Abstand davon genommen, mich damit zu beschäftigen.

I sent you am PM (and some more chars).

1 Like