Content structure for large site

Hello everyone!

I’m a new to Kirby, but have worked with WordPress and Ghost CMS a lot. I manage a large literature library, where poems, pictures and prose are organized by author, original publication date, tags, categories. Rough estimate is about 2,000 authors and 20,000 articles from the year 1400 to yesterday.

My end goal is to make all the content discoverable by showing random/shuffled articles (about 20) on the homepage, but have a few dedicated pages:

  1. List all authors on a page and have a page for each author that lists all their articles using pagination
  2. List all tags on a page and have a page for each tag that lists all articles for that tag
  3. An archive page that lists every single article by date

What is the best strategy to organize content long term? should I create author as a tag or as a user? Some authors may need to login to create new content.

  • Content
    • Library

      • Author A
        – [Date] Article 1 (tag1, tag2)

        – [Date] Article n
    • Author Z
      – [Date] Article 1 (tag1, tag2)

      – [Date] Article n

Thank you for all your suggestions!

Hi and welcome to the forum!

Since most of your authors are probably dead and only a few should actually have access to the Panel, I’d probably create them as subpages to a parent authors. That will also already give you the URLs for your individual authors, so you don’t have to create them, when you want to list articles by author.

Those authors who need access to the Panel, I would then create as additional users.

You could then put all articles that belong to an author under their author page (as outlined above), which would make sense if you have a 1:1 relationship, i.e. an article belongs to exactly 1 author. The advantage of this would be that you don’t have to fetch all articles and filter them when on the author page.

However, you will still have a lot of $site->index() calls when filtering your list by tag, therefore caching will be important.

Not sure the Starterkit is the best way to start this project. It’s main purpose is a learning resource, unless you really want to use it as a sort of theme. Otherwise, starting with a blank slate (i.e. the Plainkit) is the better option.

What is important to understand is the relation between the name of the content file in the page folder, the blueprint and the template. They are tied together by their file names.

Yes, that’s due to the styling, that’s why I suggested to start with the Plainkit.

Kirby doesn’t add anything automatically. You need to create the code to do that, in this case, by fetching the information from the parent page of the article (i.e. the author page, $page->parent()->whateverFieldYouWantToFetchHere()).