Theme Structure
A fully-featured Pubvana theme uses the following directory layout:
themes/mytheme/
├── theme_info.json ← required: manifest
├── screenshot.png ← recommended: 1200×900px preview
├── assets/
│ ├── css/style.css
│ ├── js/theme.js
│ └── images/
└── views/
├── layout.tpl ← required
├── home.tpl ← required
├── post.tpl ← required
├── page.tpl ← required
├── category.tpl ← required
├── tag.tpl ← required
├── archive.tpl ← required
├── search.tpl ← required
└── partials/
├── sidebar.tpl
├── post-card.tpl
├── author-card.tpl
├── pagination.tpl
├── comments-list.tpl
├── _comment.tpl
└── comment-form.tpl
Required Files
| File | Purpose |
|---|---|
theme_info.json | Manifest with metadata, widget areas, options, and CSS class mapping |
views/layout.tpl | Master layout — all other templates extend this |
views/home.tpl | Blog homepage |
views/post.tpl | Single blog post |
views/page.tpl | Static page |
views/category.tpl | Category archive listing |
views/tag.tpl | Tag archive listing |
views/archive.tpl | Date-based archive |
views/search.tpl | Search results |
Recommended Partials
| Partial | Purpose |
|---|---|
partials/sidebar.tpl | Renders a named widget area |
partials/post-card.tpl | Card used in listing pages |
partials/author-card.tpl | Author profile block on post pages |
partials/pagination.tpl | Bootstrap pagination |
partials/comments-list.tpl | Comment thread container |
partials/_comment.tpl | Single comment (recursive for replies) |
partials/comment-form.tpl | Comment submission form |
Assets
Reference assets using the {! theme_url !} tag function:
{! theme_url "assets/css/style.css" !}
{! theme_url "assets/js/theme.js" !}