1. What you need
- A Ghost 6.0+ publication (Ghost(Pro) or self-hosted)
- Admin access to Ghost Admin
- The installable file
parma-violet.zipIf you receivedparma-violet-package.zip, extract it first and upload onlyparma-violet.zip- If you received
parma-violet-package.zip, extract it first and upload onlyparma-violet.zip
- If you received
- Optional: demo files from the customer package (
demo-data/)
Parma Violet does not require a custom routes.yaml for normal publishing.
2. Install the theme
- Sign in to Ghost Admin.
- Open Settings → Design & branding.
- Choose Change theme → Upload theme.
- Select
parma-violet.zip. - Activate Parma Violet.
- Stay in Design settings — the next sections configure branding and theme options.
After activation you should see:
- Homepage hero
- Featured posts (when posts are marked Featured)
- Latest posts grid with Load More
- Header with search / sign in / subscribe (when Members is enabled)
- Footer with theme toggle and “Published with Ghost”
3. Publication branding (Ghost Admin)
These values come from Ghost itself (not theme custom settings). Set them under Settings → Design → Brand (and related General / Site settings).
| Setting | Where it appears in Parma Violet | Tips |
| Site title | Logo text (if no logo), hero title fallback, browser title patterns | Keep it short for the header |
| Site description | Hero subtitle fallback, footer blurb, SEO description if used as publication description | Write a real sentence; avoid Ghost’s default placeholder |
| Publication logo | Header logo (light mode) | Transparent PNG/SVG works best |
| Publication icon | Browser favicon / app icon | Square image |
| Cover image | Used as hero image fallback when Hero style needs an image and no custom hero image is set | Wide landscape recommended |
| Accent colour | Buttons, links, highlights in light mode | Pick a colour with good contrast on white |
| Social accounts | Author cards and share destinations use Ghost social fields where applicable | Configure under author profiles and site social settings |
Logo behaviour
- Light / system-light: uses the publication logo when set; otherwise shows the site title as text.
- Dark mode: uses Dark mode logo (theme setting) when set; otherwise falls back to the publication logo / title.
4. Recommended SEO / meta
Configure under Ghost Admin (Settings → General and Design / metadata fields for your Ghost version). Do not hardcode these in the theme.
Suggested meta title
[object HTMLPreElement]
(Replace “Parma Violet” with your publication name when going live.)
Suggested meta description
[object HTMLPreElement]
Avoid leaving Ghost’s default description:
[object HTMLPreElement]
That placeholder should not appear on a production or marketplace demo site.
Verify after saving:
- Homepage
<title> - Meta description
- Open Graph / Twitter cards (Ghost outputs these via
{{ghost_head}})
5. Enable native Ghost features
Parma Violet is built around Ghost’s native features. Enable what you need:
| Feature | Ghost Admin | Theme behaviour |
| Members | Settings → Membership | Sign in / Subscribe / Account in the header |
| Portal | Membership → Portal | Signup, sign-in, account modals |
| Newsletters | Settings → Newsletters | Powers the footer/homepage email form |
| Search | Native Ghost search | Header search button (data-ghost-search) |
| Comments | Post settings / Membership | Comment UI on posts when enabled |
| Paid tiers | Membership → Tiers | Cards show “Members only” / “Paid members only” labels |
No third-party membership plugin is required.
6. Theme settings (Design → Theme)
Open Settings → Design → Site design → Theme (wording may vary slightly by Ghost version).
Every custom setting shipped with Parma Violet is listed below. Labels in Admin are derived from the setting keys (for example hero_style → Hero style).
Homepage
| Setting | Type | Default | What it does |
| Hero style | Select: Default, Image, Background Image | Default | Layout of the homepage hero |
| Hero text | Text | (empty) | Overrides site title in the hero when set |
| Hero subtext | Text | (empty) | Overrides site description in the hero when set |
| Hero image | Image | (empty) | Used when style is Image or Background Image. If empty, Ghost cover image may be used as fallback |
| Hero button text | Text | Subscribe | Label on the hero CTA button |
| Hero button link | Text | /#/portal/signup/ | URL for the hero CTA (Portal signup by default) |
| Show tag list | Boolean | Off | Shows popular public tags under the hero |
| Show about section | Boolean | Off | Shows the Featured Author block near the bottom of the homepage |
| About section author slug | Text | (empty) | Exact author slug to feature (e.g. ava-meridian). Visible only when Show about section is on. If the slug does not match an author, the section is hidden |
Homepage sections (in order):
- Hero
- Popular tags (optional)
- Featured posts (posts marked Featured)
- Latest posts (paginated / Load More; 12 posts per page by default)
- Featured Author (optional)
- Newsletter CTA (via site layout)
- Footer
Post
| Setting | Type | Default | What it does |
| Default post style | Select: Default, Image left, Image right, Background image | Default | Default header layout for posts that do not use a custom template |
Site-wide / footer / newsletter
| Setting | Type | Default | What it does |
| CTA text | Text | Subscribe to our Newsletter | Heading above the email signup form |
| CTA subtext | Text | Get updates every week. No spam ever. | Supporting text under the CTA heading |
| Authors page slug | Text | (empty) | Slug of your Authors directory page (no leading slash), e.g. authors. Enables breadcrumbs: Home › Authors › Name |
| Tags page slug | Text | (empty) | Slug of your Tags directory page, e.g. tags. Enables breadcrumbs and the All Tags link in the tag list |
| Copyright text | Text | (empty) | Optional note shown beside the required “Published with Ghost” credit |
| Dark mode accent color | Colour | #a5a0ff | Accent for dark / system-dark mode |
| Dark mode logo | Image | (empty) | Logo used in dark mode; falls back to publication logo |
7. Navigation and dropdowns
Configure under Settings → Navigation.
Primary navigation
Shown in the header. Typical links:
| Label | URL | Notes |
| Home | / | |
| Authors | /authors/ | After you create the Authors page |
| Tags | /tags/ | After you create the Tags page |
| About | /about/ | Ordinary page |
Secondary navigation
Shown in the footer (and related secondary nav areas). Good for Sign up, privacy, contact, etc.
Dropdown menus
Parma Violet builds accessible dropdowns from Ghost’s flat navigation list using a label convention:
- Parent label ends with
[-]— example:Custom Pages [-] - Parent URL must be
#only (hash only). Do not use Portal paths like/#/portal/signup/as a dropdown parent. - Child labels start with
[--]— example:[--] Authors,[--] Tags - Place children immediately after the parent in the navigation list.
What the theme does:
- Hash-only parents become a real
<button>(nothref="#") - Sets
aria-expanded,aria-haspopup="true", andaria-controls - Supports Enter / Space to toggle, Escape to close, Tab navigation, click-outside and focus-out to close
- Parents that are real links (not hash-only) stay as links and can still open a submenu
Example primary nav order:
[object HTMLPreElement]
The [-] / [--] markers are removed from the visible labels automatically.
8. Pages and custom templates
Create pages under Pages → New page, then choose Template in the page/post settings sidebar.
| Template name in Admin | File | When to use | Typical slug |
| Authors | custom-authors.hbs | Directory of all authors | authors |
| Tags | custom-tags.hbs | Directory of public tags | tags |
| Table of Content | custom-table-of-content.hbs | Long-form posts with a sticky TOC | assign on the post |
| Post Header Image Left | custom-post-header-image-left.hbs | Post with image on the left | assign on the post |
| Post Header Image Right | custom-post-header-image-right.hbs | Post with image on the right | assign on the post |
| Post Header Background Image | custom-post-header-background-image.hbs | Post with background-image header | assign on the post |
Recommended setup for Authors and Tags
- Create a page titled Authors, slug
authors, template Authors. - Create a page titled Tags, slug
tags, template Tags. - In theme settings, set:Authors page slug =
authorsTags page slug =tags - Add both pages to primary navigation.
Alternate homepage templates (optional)
home-2 and home-3 exist for demo-style alternate homepages. They are only routed when you upload the optional routes.yaml from the customer package (see Demo content). Normal sites can ignore them.
9. Posts, featured content, and layouts
Featured posts
- Edit a post → enable Featured.
- Featured posts appear in the homepage Featured Posts section.
- If more than two featured posts exist, a slider with previous/next controls appears.
Default vs per-post layout
- Default post style (theme setting) applies to standard
posttemplate posts. - Override any post by assigning a custom header template (Image Left / Right / Background) or Table of Content.
Post cards and archives
- Homepage, tag, and author archives use card layouts with feature image, title, excerpt, tags, and author meta.
- Posts without a feature image still render cleanly (no broken image URLs).
- Visibility labels appear for members-only / paid content when applicable.
Related posts
On post templates, related posts prefer the same primary tag; if none are available, recent posts are shown instead.
Pagination
Latest posts use Ghost pagination with a Load More button. Theme default: 12 posts per page (posts_per_page in the theme package).
10. Membership, Portal, newsletter, and CTA
- Enable Members and configure Portal.
- Keep hero button link as
/#/portal/signup/or point it to your preferred signup URL. - Edit CTA text and CTA subtext in theme settings for the site newsletter block.
- Form labels such as “Email address”, “Sign Up”, success/error messages are controlled by
locales/en.json(see below). - Header buttons:Logged out: Sign in + SubscribeLogged in: Account
Comments and search use Ghost’s native UI when those features are turned on.
11. Authors, tags, and breadcrumbs
Authors
- Fill each author’s name, bio, profile image, cover image, website, and social profiles in Ghost Admin.
- Author archive:
/author/{slug}/ - Featured Author homepage block uses the author slug exactly (copy from the author URL).
Tags
- Public tags appear on cards and in the optional homepage tag list.
- Tag archive:
/tag/{slug}/ - All Tags links to
/{tags_page_slug}/when Tags page slug is set.
Breadcrumbs
Breadcrumbs appear on posts, tags, and authors.
- Tag pages:
Home › Tags › {Tag}when Tags page slug is set - Author pages:
Home › Authors › {Author}when Authors page slug is set - Posts:
Home › {Primary tag} › {Title}when a primary tag exists
12. Dark mode and accent colours
- Visitors can choose Light, Dark, or System in the footer theme toggle.
- Accent colour (Brand settings) drives light-mode accents.
- Dark mode accent color (theme setting) drives dark-mode accents (default
#a5a0ff). - Upload a Dark mode logo if your primary logo is dark-on-transparent.
Test both modes after configuring buttons, links, and membership cards.
13. Editing static UI text (locales/en.json)
Many labels are not theme settings. They come from Ghost’s theme translation file:
[object HTMLPreElement]
When to use locales vs theme settings
| Change this… | Use |
| Hero title/subtitle overrides, CTA heading/subtext, copyright note, author slug, hero button label | Theme settings in Ghost Admin |
| “Latest Posts”, “Featured Posts”, “Load More”, “Sign in”, “Featured Author”, form messages, share labels, 404 text, etc. | locales/en.json |
How to edit (publisher-friendly)
- Download / unzip
parma-violet.zip(keep a backup). - Open
locales/en.jsonin a text editor. - Change only the values on the right-hand side. Keep the left-hand keys exactly the same.
- Save as UTF-8 JSON (valid JSON, no trailing commas).
- Re-zip the theme so
package.jsonis still at the root of the ZIP (do not wrap files in an extra folder). - Re-upload the ZIP in Ghost Admin and activate it.
Correct ZIP root:
[object HTMLPreElement]
Translation keys shipped with Parma Violet
Edit the quoted values as needed:
| Key | Default English value | Typical location |
homepage | homepage | Logo accessibility label |
Main navigation | Main navigation | Header nav aria-label |
Toggle navigation | Toggle navigation | Mobile menu button |
Secondary navigation | Secondary navigation | Footer nav |
Main site navigation | Main site navigation | Primary nav |
Sign in | Sign in | Header |
Subscribe | Subscribe | Header |
Account | Account | Header (logged in) |
User actions | User actions | Header actions group |
Search | Search | Search button |
Theme: | Theme: | Footer theme toggle |
Light / Dark / System | Light / Dark / System | Theme toggle options |
Load More | Load More | Post pagination button |
No more posts | No more posts | Pagination empty state |
Latest Posts | Latest Posts | Homepage / 404 suggestions |
Featured Posts | Featured Posts | Homepage |
Previous featured posts | Previous featured posts | Featured slider |
Next featured posts | Next featured posts | Featured slider |
No posts | No posts | Empty plural helper |
No authors found. | No authors found. | Authors template |
No tags found. | No tags found. | Tags template |
1 post / % post / % posts | 1 post / % post / % posts | Counts |
Table of Contents | Table of Contents | TOC template |
About The Author | About The Author | (legacy string; homepage block uses Featured Author) |
Featured Author | Featured Author | Homepage featured author heading |
Visit {name}'s website | Visit {name}'s website | Author website link |
Other authors | Other authors | Multi-author tooltip |
Author Posts | Author Posts | Author archive labelling |
tagged posts | Tagged posts | Tag archive labelling |
1 min read / % mins read | 1 min read / % mins read | Reading time |
Home | Home | Breadcrumbs |
Copy link | Copy link | Post share |
Share on X / Facebook / LinkedIn | Share on … | Post share |
Copy link to clipboard | Copy link to clipboard | Share control |
Link copied! / Copy failed | Link copied! / Copy failed | Share feedback |
Related Posts | Related Posts | Post footer |
Email address | Email address | Newsletter field |
Sign Up | Sign Up | Newsletter button |
Please enter a valid email address. | Please enter a valid email address. | Newsletter error |
Thanks for subscribing! | Thanks for subscribing! | Newsletter success |
Popular Tags | Popular Tags | Homepage tag list heading |
All Tags | All Tags | Tag list link |
View all posts → | View all posts → | Author card |
Social labels (Instagram, YouTube, TikTok, Mastodon, Threads, Bluesky, LinkedIn, Facebook, X, Website) | same | Author social aria-labels |
Members only / Paid members only / Tier-restricted post / Available to: | same | Visibility badges |
Authors / Tags | Authors / Tags | Breadcrumbs |
Skip to content | Skip to content | Accessibility skip link |
Go to the front page → | Go to the front page → | 404 / error pages |
Theme errors | Theme errors | Error template |
The page you were looking for doesn't exist or has been moved. | … | 404 message |
Published with {ghostLink} & {parmaVioletLink} | Published with … | Footer attribution (keep {ghostLink} and {parmaVioletLink} placeholders) |
Adding another language
- Copy
locales/en.jsontolocales/xx.json(Ghost language code, e.g.de,fr). - Translate the values.
- Set the publication language in Ghost Admin to match.
- Re-package and upload the theme.
Important
- Do not rename keys.
- Do not remove the “Published with Ghost” attribution requirement; you may adjust nearby copyright via Copyright text theme setting.
- After editing locales, always re-upload a valid theme ZIP.
14. Optional demo content and routes
If your download includes demo-data/:
| File | Purpose |
parma-violet-demo.json | Ghost content export (posts, pages, tags, authors, Style Guide) |
routes.yaml | Optional routes for /home-2/ and /home-3/ |
README.md | Import warnings and steps |
Warning
Importing demo data can add or modify content. Create a backup first. Prefer a fresh or staging site. Do not import into production unless you intend to keep or carefully clean up the content.
Import steps
- Install and activate
parma-violet.zip. - Ghost Admin → Settings → Advanced → Import/Export.
- Import
parma-violet-demo.json. - Review posts, pages, authors, tags, and navigation.
- Upload
routes.yamlonly if you want the alternate demo homepages. - Restart Ghost if your host requires it after route changes.
- Configure branding, theme settings, Portal, and navigation as in this guide.
- Replace demo content before a real launch.
After importing demo data
Suggested theme options for a demo-like homepage:
- Show tag list: on
- Show about section: on
- About section author slug: a real imported author slug
- Authors page slug:
authors - Tags page slug:
tags
15. Style Guide page
The demo export includes a Style Guide page (/style-guide/) that shows native Ghost editor cards (headings, lists, images, gallery, bookmark, button, callout, toggle, product, file, audio, video, embeds, headers, signup, tables, code, and more).
- The Style Guide intentionally includes a native editor H1 as a content demonstration.
- Ordinary posts and pages should still use a single sensible page-level H1 (usually the post/page title).
- Use the Style Guide to verify
card_assets, content width, and light/dark contrast after install.
16. Updating the theme
- Download the latest
parma-violet.zipfrom Visioun. - Ghost Admin → Design → Change theme → Upload.
- Activate the new version.
- Re-check theme settings (Ghost usually preserves custom settings, but verify after major updates).
- If you customized
locales/en.json, re-apply your edits to the new package before uploading.
17. Launch checklist
Use this before going live:
- Theme uploaded and activated
- Site title, description, logo, icon, accent colour set
- Meta title/description are unique (no “Thoughts, stories and ideas.”)
- Members + Portal configured (if using subscriptions)
- Newsletters connected to the signup form
- Primary + secondary navigation complete
- Dropdowns tested with keyboard (Enter, Space, Escape, Tab)
- Authors + Tags pages created and theme slugs set
- Homepage hero, featured posts, and Featured Author reviewed
- CTA text/subtext match your brand
- Dark mode accent + optional dark logo checked
- Sample post with comments/search verified if those features are on
- 404 page returns a proper not-found experience
- Mobile layout checked around 320–390px width
- Locale strings customized if you need non-default English labels
- Demo content removed or replaced for production
18. Troubleshooting
| Problem | What to try |
| Hero shows site title/description instead of custom copy | Set Hero text / Hero subtext, or change Brand title/description |
| Hero image missing | Set Hero style to Image or Background Image, upload Hero image, or set a publication cover image |
| Featured Author section missing | Turn Show about section on and set a valid About section author slug |
| All Tags link 404s | Create Tags page and set Tags page slug |
| Breadcrumbs skip Authors/Tags | Set Authors page slug / Tags page slug to match page slugs |
| Dropdown parent navigates away or looks broken | Parent URL must be exactly #; label must end with [-] |
| Subscribe / Sign in missing | Enable Members and Portal |
| Newsletter form does nothing | Enable Members + at least one newsletter; check Portal/site URL |
| TOC empty on TOC template | Post needs h2/h3 headings in content; template loads local Tocbot from theme assets |
| Edited English strings not showing | Confirm you edited locales/en.json, re-zipped with correct root, and re-uploaded |
| GScan / upload errors | Ensure package.json is at the ZIP root; do not upload parma-violet-package.zip |
| Dark mode contrast odd on buttons | Set Dark mode accent color separately from the light Brand accent |
Support
- Documentation: https://visioun.com/support/docs/parma-violet/
- Support: https://visioun.com/support/
- Live demo: https://parma-violet.visioun.com/
- Visioun: https://visioun.com/
When contacting support, include: theme name Parma Violet, theme version (from package.json), Ghost version, publication URL, and a short description of the issue. Do not send passwords or API keys.
License
Parma Violet is a commercial Visioun theme. Purchasing or downloading the theme does not transfer copyright or permit redistribution except where explicitly allowed by the supplied licence.