# Aspire Themes
> Premium Ghost themes for independent publishers building blogs, newsletters, magazines, news sites, and membership publications.
Aspire Themes sells individual Ghost themes for $149 and a complete bundle for $499. Product facts, prices, versions, documentation, and policies are generated from the same sources as the public website. Expanded context is available in [llms-full.txt](https://aspirethemes.com/llms-full.txt).
## Products
- [Pricing](https://aspirethemes.com/pricing.md): Current individual-theme and bundle pricing.
- [Complete Themes Bundle](https://aspirethemes.com/bundle.md): Every current Aspire theme and future themes.
- [Beirut](https://aspirethemes.com/themes/beirut.md): A Ghost portfolio theme for independent creatives, with project, services, testimonials, writing, and about sections in one focused site.
- [Hakone](https://aspirethemes.com/themes/hakone.md): A Ghost theme for writers who want complete posts on the homepage, with per-post styling, image lightboxes, memberships, and reading controls.
- [Hanoi](https://aspirethemes.com/themes/hanoi.md): Build a visual magazine in Ghost with media-rich layouts, navigation previews, reader tools, memberships, and newsletter sections.
- [Hue](https://aspirethemes.com/themes/hue.md): Build a podcast website in Ghost with numbered episodes, separate blog posts, embedded players, listening links, memberships, and dark mode.
- [Krabi](https://aspirethemes.com/themes/krabi.md): Magazine‑style Ghost theme with two‑column layout, sidebar newsletter, tags menu, authors page, translations, and native search.
- [Marsa](https://aspirethemes.com/themes/marsa.md): Build a configurable Ghost publication with 23 color palettes, post modal, topic sections, memberships, newsletters, testimonials, and sortable archive.
- [Moshi](https://aspirethemes.com/themes/moshi.md): A Ghost newsletter theme with configurable signup, introduction, logos, testimonials, statistics, and recent-post sections.
- [Nubia](https://aspirethemes.com/themes/nubia.md): A Ghost theme for image-led blogs and small magazines, with a varied post grid, article sidebar, dark mode, memberships, and comments.
- [Penang](https://aspirethemes.com/themes/penang.md): Build a Ghost membership publication with signup forms, account links, gated-content prompts, topic sections, author pages, and dark mode.
- [Petra](https://aspirethemes.com/themes/petra.md): A Ghost theme for personal blogs and newsletters, with an introduction, visual highlights, featured stories, recent posts, and subscriptions.
- [Sinai](https://aspirethemes.com/themes/sinai.md): Build a minimal Ghost blog or simple magazine with readable layouts, tag sections, comments, search, memberships, six color schemes, and custom colors.
- [Siwa](https://aspirethemes.com/themes/siwa.md): Siwa is a Ghost theme for personal blogs and newsletters. Introduce yourself, guide readers into your stories, and invite them to subscribe.
- [Taba](https://aspirethemes.com/themes/taba.md): Build a Ghost newsroom or magazine with editorial sections, video publishing, memberships, newsletters, stock tickers, and reader tools.
- [Tripoli](https://aspirethemes.com/themes/tripoli.md): A Ghost theme for news and multi-author magazines, with Editors' Picks, topic sections, author and tag directories, dark mode, and memberships.
- [Ubud](https://aspirethemes.com/themes/ubud.md): A Ghost theme for personal newsletters, with six homepage styles, featured and recent posts, subscription forms, archives, and memberships.
## Documentation
- [Documentation index](https://aspirethemes.com/docs/): Setup guides for Aspire Ghost themes.
- [Beirut Ghost Theme — Documentation](https://aspirethemes.com/docs/beirut.md): Set up Beirut as a portfolio with project, services, testimonials, writing, about, and contact sections.
- [Hakone Ghost Theme — Documentation](https://aspirethemes.com/docs/hakone.md): Set up Hakone's full-post homepage, per-post styles, image lightbox, memberships, and reading controls.
- [Hanoi Ghost Theme — Documentation](https://aspirethemes.com/docs/hanoi.md): Set up Hanoi Ghost theme with homepage sections, navigation previews, video story layouts, reader tools, memberships, and newsletters.
- [Hue Ghost Theme — Documentation](https://aspirethemes.com/docs/hue.md): Set up Hue's podcast homepage, episode pages, embedded players, listening links, memberships, and dark mode.
- [Krabi Ghost Theme — Documentation](https://aspirethemes.com/docs/krabi.md): Set up Krabi's two-column layout, tag navigation, featured posts, sidebar newsletter, dark mode, and memberships.
- [Marsa Ghost Theme — Documentation](https://aspirethemes.com/docs/marsa.md): Set up Marsa's 23 color palettes, topic sections, post modal, newsletters, testimonials, archive, and memberships.
- [Moshi Ghost Theme — Documentation](https://aspirethemes.com/docs/moshi.md): Set up Moshi's newsletter homepage, signup section, introduction, logos, testimonials, statistics, and recent posts.
- [Nubia Ghost Theme — Documentation](https://aspirethemes.com/docs/nubia.md): Set up Nubia's image-led post grid, article sidebar, navigation, search, comments, dark mode, and memberships.
- [Penang Ghost Theme — Documentation](https://aspirethemes.com/docs/penang.md): Set up Penang's signup forms, account links, gated-content prompts, topic sections, author pages, and dark mode.
- [Petra Ghost Theme — Documentation](https://aspirethemes.com/docs/petra.md): Set up Petra's introduction, visual highlights, featured stories, recent posts, colors, and subscriptions.
- [Sinai Ghost Theme — Documentation](https://aspirethemes.com/docs/sinai.md): Configure the Sinai Ghost theme for minimal blogs and magazines, including layouts, colors, fonts, search, social links, navigation, and memberships.
- [Siwa Ghost Theme — Documentation](https://aspirethemes.com/docs/siwa.md): Set up Siwa in Ghost with homepage sections, post layouts, navigation previews, newsletters, reader tools, and inline stock quotes.
- [Taba Ghost Theme — Documentation](https://aspirethemes.com/docs/taba.md): Set up Taba with homepage sections, video publishing, voice reader, custom post layouts, memberships, and Ghost theme settings.
- [Tripoli Ghost Theme — Documentation](https://aspirethemes.com/docs/tripoli.md): Set up Tripoli with homepage sections, featured posts, tag pages, dark mode, memberships, and Ghost theme customization options.
- [Ubud Ghost Theme — Documentation](https://aspirethemes.com/docs/ubud.md): Set up Ubud's six homepage styles, featured and recent posts, author details, subscription forms, archives, and memberships.
## Company and policies
- [Company details](https://aspirethemes.com/company.md): Legal registration and contact details for Aspire Themes, LLC.
- [Frequently asked questions](https://aspirethemes.com/faq.md): Purchasing, setup, updates, and support answers.
- [License and terms](https://aspirethemes.com/terms.md): License scope, support, updates, and refund terms.
- [Contact](https://aspirethemes.com/contact): Contact Aspire Themes for product and support questions.
## Optional
- [Hanoi vs Beirut: Choosing a Ghost Theme for Photography](https://aspirethemes.com/blog/hanoi-vs-beirut.md): Aspire Themes article published 2026-10-15.
- [2 Music Blog Examples Built with Ghost](https://aspirethemes.com/blog/music-website-examples.md): Aspire Themes article published 2026-10-12.
- [What to Check Before Buying a Ghost Theme](https://aspirethemes.com/blog/ghost-theme-buyer-checks.md): Aspire Themes article published 2026-10-12.
- [Why Your Ghost Tag Page Returns 404](https://aspirethemes.com/blog/ghost-tag-page-404.md): Aspire Themes article published 2026-10-12.
- [How Multiple Ghost Newsletters Work](https://aspirethemes.com/blog/ghost-multiple-newsletters.md): Aspire Themes article published 2026-10-12.
- [Ghost Inline Stocks: Add Stock Quotes to Ghost Posts](https://aspirethemes.com/blog/ghost-inline-stocks.md): Aspire Themes article published 2026-10-12.
- [Designing Tripoli: Bringing Order to a Magazine Homepage](https://aspirethemes.com/blog/designing-tripoli.md): Aspire Themes article published 2026-10-08.
- [Designing Hakone: Letting the Reader Stay With the Writing](https://aspirethemes.com/blog/designing-hakone.md): Aspire Themes article published 2026-10-08.
- [Designing Taba: Giving a Busy Front Page a Clear Order](https://aspirethemes.com/blog/designing-taba.md): Aspire Themes article published 2026-10-06.
- [Designing Hanoi: From the Cover Story to the Archive](https://aspirethemes.com/blog/designing-hanoi.md): Aspire Themes article published 2026-10-06.
- [Sinai vs Hakone: Cards or Complete Posts?](https://aspirethemes.com/blog/sinai-vs-hakone.md): Aspire Themes article published 2026-10-05.
- [3 Photography Website Examples Built with Ghost](https://aspirethemes.com/blog/photography-website-examples.md): Aspire Themes article published 2026-10-05.
- [How to Schedule a Ghost Post or Newsletter](https://aspirethemes.com/blog/ghost-schedule-posts.md): Aspire Themes article published 2026-10-05.
- [Why Your Ghost Page Is Not on the Homepage](https://aspirethemes.com/blog/ghost-page-not-on-homepage.md): Aspire Themes article published 2026-10-05.
- [Designing Siwa: From First Visit to Newsletter](https://aspirethemes.com/blog/designing-siwa.md): Aspire Themes article published 2026-10-05.
- [Tripoli vs Taba: Choosing a Ghost Theme for a Magazine](https://aspirethemes.com/blog/tripoli-vs-taba.md): Aspire Themes article published 2026-10-04.
- [Siwa vs Ubud: Choosing a Ghost Theme for Your Writing](https://aspirethemes.com/blog/siwa-vs-ubud.md): Aspire Themes article published 2026-10-04.
- [Why Ghost Newsletter Emails Look Different](https://aspirethemes.com/blog/ghost-newsletter-email-design.md): Aspire Themes article published 2026-10-04.
- [Ghost Post Access: Public, Members, Paid and Tiers](https://aspirethemes.com/blog/ghost-content-access.md): Aspire Themes article published 2026-10-04.
- [How to Choose a Ghost Theme for Your Newsletter](https://aspirethemes.com/blog/ghost-newsletter-themes.md): Aspire Themes article published 2026-09-30.
- [6 Technology Website Examples Built with Ghost](https://aspirethemes.com/blog/technology-website-examples.md): Aspire Themes article published 2026-09-30.
- [10 Sports News Website Examples Built with Ghost](https://aspirethemes.com/blog/sports-website-examples.md): Aspire Themes article published 2026-09-30.
- [6 Podcast Website Examples Built with Ghost](https://aspirethemes.com/blog/podcast-website-examples.md): Aspire Themes article published 2026-09-30.
- [6 Personal Blog Examples Built with Ghost](https://aspirethemes.com/blog/personal-blog-examples.md): Aspire Themes article published 2026-09-30.
- [6 Newsletter Website Examples Built with Ghost](https://aspirethemes.com/blog/newsletter-website-examples.md): Aspire Themes article published 2026-09-30.
- [6 Business Blog Examples Built with Ghost](https://aspirethemes.com/blog/business-blog-examples.md): Aspire Themes article published 2026-09-30.
- [Ghost Voice Reader: A Free Post Listen Button](https://aspirethemes.com/blog/ghost-voice-reader.md): Aspire Themes article published 2026-08-11.
- [Aqua: A Free Mac-Inspired Ghost Theme](https://aspirethemes.com/blog/aqua-free-ghost-theme.md): Aspire Themes article published 2026-07-30.
- [My Ghost Theme Demo Setup on DigitalOcean](https://aspirethemes.com/blog/digitalocean-ghost-themes-setup.md): Aspire Themes article published 2024-12-15.
- [Install Multiple Ghost Sites on DigitalOcean](https://aspirethemes.com/blog/digitalocean-ghost-multiple-sites-installation.md): Aspire Themes article published 2024-11-01.
- [Ghost RTL Support: Arabic, Hebrew and More](https://aspirethemes.com/blog/ghost-rtl.md): Aspire Themes article published 2024-07-01.
- [Ghost 5.59 — Header Card Enhancements](https://aspirethemes.com/blog/ghost-5-59.md): Aspire Themes article published 2024-03-01.
- [Anatomy of a Ghost Theme — Part 1](https://aspirethemes.com/blog/anatomy-of-ghost-theme.md): Aspire Themes article published 2023-01-01.
- [Change Casper Fonts with Google Fonts](https://aspirethemes.com/blog/casper-google-fonts.md): Aspire Themes article published 2022-12-01.
- [How to Deploy Your Ghost Theme Using GitHub Actions](https://aspirethemes.com/blog/deploy-ghost-theme.md): Aspire Themes article published 2022-11-01.
- [Download and Upload Ghost Images with SCP](https://aspirethemes.com/blog/download-upload-ghost-images-digitalocean.md): Aspire Themes article published 2022-08-01.
- [How to Use Ghost Author Context](https://aspirethemes.com/blog/ghost-author-context.md): Aspire Themes article published 2022-05-01.
- [Ghost Authors: Practical Theme Examples](https://aspirethemes.com/blog/ghost-author-examples.md): Aspire Themes article published 2022-04-01.
- [How to Use Ghost Code Injection](https://aspirethemes.com/blog/ghost-code-injection.md): Aspire Themes article published 2022-03-01.
- [How to Add a Contact Form to Your Ghost Site](https://aspirethemes.com/blog/ghost-contact-form.md): Aspire Themes article published 2022-02-01.
- [How to Display a List of Primary Tags in Ghost](https://aspirethemes.com/blog/ghost-list-of-primary-tags.md): Aspire Themes article published 2022-01-27.
- [Add Custom Social Links to a Ghost Theme](https://aspirethemes.com/blog/ghost-social-media-custom-settings.md): Aspire Themes article published 2022-01-17.
- [Show Ghost Post Times in AM/PM Format](https://aspirethemes.com/blog/ghost-date-am-bm.md): Aspire Themes article published 2022-01-01.
- [How I Load JavaScript Libraries in Ghost Themes](https://aspirethemes.com/blog/ghost-theme-load-scripts.md): Aspire Themes article published 2021-12-15.
- [Using the Ghost Handlebars Match Helper](https://aspirethemes.com/blog/ghost-match-helper.md): Aspire Themes article published 2021-12-15.
- [Troubleshoot Ghost Membership Forms](https://aspirethemes.com/blog/ghost-membership-troubleshooting.md): Aspire Themes article published 2021-10-01.
- [How to Create a Tags List Page in Your Ghost Theme](https://aspirethemes.com/blog/ghost-tags-page.md): Aspire Themes article published 2021-06-01.
- [Ghost Tags: Practical Theme Examples](https://aspirethemes.com/blog/ghost-tags.md): Aspire Themes article published 2021-05-01.
- [How to Edit a Ghost Theme](https://aspirethemes.com/blog/ghost-theme-editing.md): Aspire Themes article published 2021-04-01.
- [How to Update Your Ghost Theme](https://aspirethemes.com/blog/ghost-theme-update.md): Aspire Themes article published 2021-03-10.
- [Behind the Scenes of the Ubud Ghost Theme](https://aspirethemes.com/blog/ubud-behind-the-scenes.md): Aspire Themes article published 2021-01-01.
- [How to Add a Custom Homepage to the Krabi Ghost Theme](https://aspirethemes.com/blog/krabi-custom-home.md): Aspire Themes article published 2020-11-06.
- [How to Change a Ghost Theme Font Using Google Fonts](https://aspirethemes.com/blog/google-font-ghost-theme.md): Aspire Themes article published 2020-05-30.
- [How to Create an Authors Page in Your Ghost Theme](https://aspirethemes.com/blog/ghost-authors-page.md): Aspire Themes article published 2018-05-08.
## Full content
---
Resource: https://aspirethemes.com/blog/anatomy-of-ghost-theme.md
# Anatomy of a Ghost Theme — Part 1
> Understand a Ghost theme's essential files, template hierarchy, package metadata, and Handlebars structure.
- Canonical page: [Anatomy of a Ghost Theme — Part 1](https://aspirethemes.com/blog/anatomy-of-ghost-theme)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2023-01-01
In this post, I want to discuss what makes a Ghost theme, the theme structure, the essential files, and what each file does. If you're looking for premium Ghost themes, browse the [Ghost themes collection](https://aspirethemes.com/themes/), used by 3,000+ customers.
## Handlebars
First, Ghost uses [Handlebars](https://handlebarsjs.com/) as a template language; that’s why the theme file extension is `.hbs`. For example, `index.hbs`, `post.hbs` or `author.hbs`. There is no need to install Handlebars in a Ghost theme; it is part of Ghost.
Let’s take a quick example of how Handlebars integrated with Ghost to output data from a Ghost website.
Suppose we want to output your post content, we can use the [`content`](https://docs.ghost.org/themes/helpers/data/content) helper enclosed by double curly braces ``, which will give us a Handlebars expression. So, adding the complete `` expression to a theme will generate the post content.
In addition to Handlebars, Ghost uses the [express-hbs](https://github.com/TryGhost/express-hbs) library to extend Handlebars features. For example, to add partials and layout support.
## File Hierarchy
An essential concept to how a Ghost theme works is how Ghost chooses which file to use to render the content. For example, for the website Homepage, Ghost first checks if a theme file called `home.hbs` exists; use it; if not, Ghost will look for another file, in this case, the `index.hbs` file.
Another example for the Author page, Ghost will look for the `author.hbs` first and use it if it exists. If not, Ghost will use `index.hbs`.
From the two examples above, we can see that the `index.hbs` file is necessary for any Ghost theme.
## Essential Files
The `package.json`, `index.hbs`, and `post.hbs` files are three essential files in any Ghost theme.
Let’s consider that we have a theme called **anatomy**; the file structure would be.
```shell
anatomy
|__index.hbs
|__post.hbs
|__package.json
```
Let’s see each file in more detail.
### ➊ **`package.json`**
The `package.json` is a JSON file with the `.json` extension. It contains name/value pairs of data. What kind of data can we add?
- Theme name and version
- Theme author data
- Ghost and [Content API](https://docs.ghost.org/faq/api-versioning) versions
- Theme configuration like [how many posts per page](https://docs.ghost.org/themes/helpers/data/config#providing-config) to display
- Dynamic [image sizes](https://docs.ghost.org/themes/assets#responsive-images-configuration) for uploaded images
- Theme NPM dependencies
Some of this data is visible on the admin side. For example, when you go to your Ghost admin **Settings → Site → Theme** section, you can see a list of the available themes on your blog. For each theme, you can see the theme `name` and `version`.
The `name` and `version` are available as name/value pairs in the `package.json` file.
The `name` field is, of course, the name of the theme. The `version` is the theme version.
Apply this to the **anatomy** theme and add the following data to the `package.json` file.
```
{
"name": "anatomy",
"version": "1.0.0"
}
```
Now, Ghost will use this information to list the theme under the **INSTALLED THEMES** section with `anatomy` as the theme name and `1.0.0` as the theme version.
We created our first theme by adding the `package.json` file, which is visible in the available themes list. But if we try to activate this theme, Ghost will throw a fatal error complaining that the other two files are missing, the `index.hbs`, and `post.hbs`.
### ➋ **`index.hbs`**
The `index.hbs` is the second essential file used to show a list of posts.
We discussed hierarchy earlier in this post and mentioned that Ghost would use the `index.hbs` for the Author page to list the author’s posts if the `author.hbs` file does not exist. In addition to the Author page, Ghost will use it for the Tag page if the `tag.hbs` file does not exist.
### ➌ **`post.hbs`**
The third essential theme file is `post.hbs`, which outputs the post details.
We can now activate the theme after adding both `index.hbs` and `post.hbs`. However, we will see missing CSS classes and `package.json` missing properties while activating the theme. If you went to the website homepage, you would see an empty page. But as a starting point and at this stage, we were able to activate the theme with the must-have files.
## Further Reading
- See real‑world Ghost website examples → [Showcase](https://aspirethemes.com/showcase/)
- Read the docs to build and customize → [Ghost theme documentation](https://aspirethemes.com/docs/)
That’s all that I wanted to share today, and I hope you find this post helpful.
Source: https://aspirethemes.com/blog/anatomy-of-ghost-theme
---
Resource: https://aspirethemes.com/blog/aqua-free-ghost-theme.md
# Aqua: A Free Mac-Inspired Ghost Theme
> Aqua is a free, open-source Ghost theme with a Finder-style homepage, reading windows, Dock navigation, and responsive layouts.
- Canonical page: [Aqua: A Free Mac-Inspired Ghost Theme](https://aspirethemes.com/blog/aqua-free-ghost-theme)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2026-07-30
I made a new Ghost theme called [Aqua](https://github.com/aspirethemes/aqua). It is free, open source, and inspired by the visual language of early Mac OS X.
The idea was to make a publication feel more like using a desktop interface. The homepage uses Finder-style columns for topics and stories, with a preview that changes as you browse.
Posts open in a focused document window, while the Dock keeps Home, Search, Latest, and membership actions close by. The Latest page turns the archive into a simple visual grid.
Aqua supports Ghost 6, memberships, search, comments, custom fonts, and responsive layouts. It is built with Ghost templates, plain CSS, and vanilla JavaScript.
[Try the live demo](https://aqua.aspirethemes.com/) or [download Aqua from GitHub](https://github.com/aspirethemes/aqua/releases).
Source: https://aspirethemes.com/blog/aqua-free-ghost-theme
---
Resource: https://aspirethemes.com/blog/business-blog-examples.md
# 6 Business Blog Examples Built with Ghost
> See how six businesses use Ghost for customer stories, technical articles, educational content, and product news, with real website screenshots.
- Canonical page: [6 Business Blog Examples Built with Ghost](https://aspirethemes.com/blog/business-blog-examples)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2026-09-30
A business blog should give a reader something useful before asking them to visit a shop, explore a product, or book a demo. Its layout needs to make the relevant articles easy to find and keep the relationship with the business clear.
These six blogs from the [customer showcase](https://aspirethemes.com/showcase/) use Krabi, Penang and Marsa. Their shops, booking tools and other external services need separate setup.
## [Tap Payments](https://blog.tap.company/)
Tap Payments publishes customer stories, payment education, partnerships, and product updates. Topic links such as Success Stories, Announcements, and Payments Academy separate examples of the service in use from lessons about payments and company news. Readers can choose the kind of information they need before opening an article.
Theme: [Krabi](https://aspirethemes.com/themes/krabi).
## [Wonderful.org](https://blog.wonderful.org/)
Wonderful.org publishes fundraising guidance for charities, donors, and fundraisers. Its topic links address those audiences separately. Someone organizing a fundraiser can start with that role instead of sorting through advice written for donors. This is a different organizing choice from Tap’s article-purpose labels.
Theme: [Krabi](https://aspirethemes.com/themes/krabi).
## [Skill Samurai Lane Cove](https://blog.skillsamurailc.com.au/)
Skill Samurai Lane Cove publishes articles about coding education for children, including guidance for parents and student stories. Homepage sections for Parents, Pedagogy, and Spotlight bring several stories from each area together. Families can sample the teaching approach and student work on the homepage before choosing a full article.
Theme: [Marsa](https://aspirethemes.com/themes/marsa).
## [Nuvotex](https://blog.nuvotex.de/)
Nuvotex publishes technical articles about infrastructure and software. Navigation by technologies such as Linux, Azure, and Kubernetes lets readers begin with a tool they already use. That works for a specialist audience who recognizes those names; audience labels like Wonderful’s would answer a different question.
Theme: [Krabi](https://aspirethemes.com/themes/krabi).
The next two blogs keep a route to the business alongside their educational articles.
## [Rua do Café](https://blog.ruadocafe.com.br/)
Rua do Café publishes coffee articles in Portuguese about preparation, origins, producers, equipment, and recipes. Its coffee topics remain available alongside a separate shop link. A visitor can continue learning or go to the store without the article feed becoming a product catalogue.
Theme: [Penang](https://aspirethemes.com/themes/penang).
## [Opinew](https://www.opinew.com/blog/)
Opinew publishes articles about ecommerce, Shopify, customer reviews, and marketing. Header links to pricing, demo booking, and the app remain separate from the article topics. Readers who want to evaluate the product have a direct route, while someone researching a question can stay with the blog.
Theme: [Krabi](https://aspirethemes.com/themes/krabi).
## The Customer’s Next Step
Choose labels from the way customers approach your material: their role, the subject they work with, or the type of article they need. Keep the route to your shop or product distinct from those reading choices.
For the publishing layout, compare [Krabi](https://krabi.aspirethemes.com/) for an article feed with a sidebar, [Penang](https://penang.aspirethemes.com/) for an introduction and topic navigation, or [Marsa](https://marsa.aspirethemes.com/) for featured posts and homepage topic sections.
Source: https://aspirethemes.com/blog/business-blog-examples
---
Resource: https://aspirethemes.com/blog/casper-google-fonts.md
# Change Casper Fonts with Google Fonts
> Learn how to change fonts in the Ghost Casper theme with Google Fonts, Code Injection, custom CSS, and browser tools for finding selectors.
- Canonical page: [Change Casper Fonts with Google Fonts](https://aspirethemes.com/blog/casper-google-fonts)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2022-12-01
In this tutorial, I will show you how to change the Casper Ghost CMS theme’s fonts using Google Fonts.
The Casper theme is using two different fonts:
- *Georgia* for the post content and excerpts.
- *UI System Fonts* for everything else.
Suppose you want to use the [Roboto](https://fonts.google.com/specimen/Roboto) Google font instead of the theme *UI System Fonts*.
In your Ghost admin, using the *Code Injection* *Site Header* section, embed the font code given from Google Fonts as follows.
```html
```
You can choose different font styles depending on your needs. In this example, I chose the *300* and the *700* weights.
The next step is to assign the Roboto font to the `body` element using CSS.
```html
```
The *Code Injection* area will look similar to the below screenshot.
## Change the Font of a Specific Element
If you want to change the font of a specific element, you need to get the element’s class name. You can use the browser development tools to do that.
You can use [Chrome DevTools](https://developer.chrome.com/docs/devtools/) or [Firefox Developer Tools](https://firefox-source-docs.mozilla.org/devtools-user/index.html). To open the DevTools, right-click on an element on the page and choose **Inspect**, then the **Elements** panel will open. Also, you can press `Command+Option+C` (Mac) or `Control+Shift+C` (Windows, Linux, Chrome OS) to open the **Elements** panel.
You can then get the element CSS selector class, in our case, the post excerpt class `.post-card-excerpt`, and you can assign the new font to it as follows.
```html
```
To move around the web page elements or to go to a more specific element class, you can click the **Inspect** icon to select an element on the page.
If you want to set the font size for an element, you can use the [CSS font-size](https://www.w3schools.com/cssref/pr_font_font-size.php) property to do that. For example, to set the font family and font size for the previous example, you can do something like the following.
```html
```
To wrap all the code, we have done so far; it could look like the following in Code Injection.
```html
```
Don't worry if you didn't grasp how the CSS code works at first. If you are curious to learn more, I would recommend the [Learn web development](https://developer.mozilla.org/en-US/docs/Learn_web_development) resource by Mozilla.
Source: https://aspirethemes.com/blog/casper-google-fonts
---
Resource: https://aspirethemes.com/blog/deploy-ghost-theme.md
# How to Deploy Your Ghost Theme Using GitHub Actions
> Configure the Deploy Ghost Theme GitHub Action to upload theme changes to a Ghost site when you push to the repository.
- Canonical page: [How to Deploy Your Ghost Theme Using GitHub Actions](https://aspirethemes.com/blog/deploy-ghost-theme)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2022-11-01
Last week I tried the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub action. This is an excellent tool for theme deployment and a time saver. This tool helps with theme deployment. This means that instead of uploading your theme to your Ghost blog every time you make a change. You can now deploy your theme every time you push a new update to your theme repository main branch. So, the purpose of the GitHub action is to take the theme from the GitHub repo and send it to your website.
I assume you are familiar with using Git and GitHub, and your theme is already on GitHub.
## ➊ Create a Custom Ghost Integration
The first step is creating a new Custom Integration in Ghost Admin → Integrations.
You can give the new integration a new name—for example, Deploy Ghost Theme.
Once created the integration, two values will be available, `Admin API Key`, and `API URL`.
## ➋ Create GitHub Repository Secrets
On the GitHub theme repository, navigate to **Settings → Secrets and variables → Actions**.
Create two new secrets. The first is `GHOST_ADMIN_API_KEY`, containing the `Admin API Key`. The second is `GHOST_ADMIN_API_URL`, including the `API URL`.
## ➌ Add the Github Deployment Config File
Inside your local theme repository, create a config file called `.github/workflows/deploy-theme.yml` and copy the following code. Once you have added this file, commit and push your changes to the remote repository.
```yaml
name: Theme Deploy
on:
push:
branches:
- master
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Deploy Ghost Theme
uses: TryGhost/action-deploy-theme@v2
with:
api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}
```
You are now ready to test and do your first theme deployment. The theme will automatically be deployed whenever you push a new commit to the main repository branch.
On the GitHub theme repository, navigate to *Settings > Actions* to check the theme deployment actions list.
You can click any action and see more details about it.
Looking for a professional design? Explore [premium Ghost themes](https://aspirethemes.com/themes/).
Or get them all in the [Aspire Themes bundle](https://aspirethemes.com/bundle).
I hope you find this tutorial helpful.
Source: https://aspirethemes.com/blog/deploy-ghost-theme
---
Resource: https://aspirethemes.com/blog/designing-hakone.md
# Designing Hakone: Letting the Reader Stay With the Writing
> How Hakone displays complete posts on its homepage, with individual post colors, image backgrounds, a lightbox and a compact archive.
- Canonical page: [Designing Hakone: Letting the Reader Stay With the Writing](https://aspirethemes.com/blog/designing-hakone)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2026-10-08
On the [Hakone demo](https://hakone.aspirethemes.com/), you can start reading The Library as soon as the homepage opens. The text is there beneath the title, followed by artwork and the rest of the story. You don’t have to open a preview first.
[Hakone](https://aspirethemes.com/themes/hakone) is a Ghost theme I make at Aspire Themes. Its homepage brings complete posts together, including their colors, quotations and images. The screenshots below use the demo’s sample content.
## Full Posts on the Homepage
The Library opens with a title and an italic introduction, then a narrow column of text. Further down, images and a quotation break up the paragraphs. These are the contents of the post itself, displayed on the homepage.
The title links to a separate post page for sharing and comments. Readers can also stay on the homepage, continue into the next entry and use Load More to see older posts.
Ghost’s membership rules still apply. A restricted post shows the content available to that visitor and a membership prompt. The full-post layout does not give public visitors access to members-only writing.
## Post Colors
Hakone lets publishers choose background and text colors for individual posts. The demo uses yellow for The Library and black with light text for the entry above. Each background extends across the post, so the change is visible as readers move between entries.
The white-background example uses a narrow quotation above a wider artwork. Both appear directly in the feed. A post can contain a brief quotation, an image collection or an essay; it does not need a conventional title-and-thumbnail presentation to appear on the homepage.
## Image Backgrounds
A feature image can fill the post’s background, with the writing placed over it. In this example, the painting extends behind the quotation and paragraphs instead of sitting above them.
The image needs to leave the text readable. A photograph with busy detail or sharp changes in brightness may work better as an image inside the post. Background images are an option for individual entries, so a publisher can reserve them for pieces that suit the treatment.
## Image Lightbox
Readers can open content images in an optional lightbox, a larger viewer over the page, and move through them with the arrows. In the example above, the painting fills the viewing area, with a counter showing its place in the image sequence.
This gives a photo essay or artwork collection a larger view while keeping its images within the post’s text when the lightbox is closed.
## The Archive
Reading complete entries is less convenient when someone is looking for a particular older post. Hakone’s [archive page](https://hakone.aspirethemes.com/archive/) provides a compact list of titles grouped by month. It lists up to 100 posts; it is not a complete index for a larger collection.
That gives readers two ways to use the site: read the posts on the homepage or go straight to a title in the archive. For a closer look at how this differs from a preview-based blog, see the [Sinai and Hakone comparison](https://aspirethemes.com/blog/sinai-vs-hakone).
Source: https://aspirethemes.com/blog/designing-hakone
---
Resource: https://aspirethemes.com/blog/designing-hanoi.md
# Designing Hanoi: From the Cover Story to the Archive
> How Hanoi’s cover story, visual topics, navigation previews and article layouts connect discovery to reading in a Ghost magazine.
- Canonical page: [Designing Hanoi: From the Cover Story to the Archive](https://aspirethemes.com/blog/designing-hanoi)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2026-10-06
The first screen of the [Hanoi demo](https://hanoi.aspirethemes.com/) belongs to a story. A photograph fills the opening, with the title and excerpt placed over it. Before a visitor has browsed the magazine’s topics, they have something specific to read.
For a visual magazine, photographs have several jobs. They introduce a subject, distinguish one story from another, and sometimes become the story itself. Hanoi changes their scale and position as the reader moves through the publication.
[Hanoi](https://aspirethemes.com/themes/hanoi) is a Ghost theme I make at Aspire Themes. These examples use its sample magazine.
## The Cover Story
The opening can hold up to five Featured stories. Each selection takes the same large stage, with controls for moving between them. The first story sets the initial impression; the others let an editor offer more than one starting point without putting several equally large panels on screen at once.
That arrangement asks something of the photograph. It needs to work as a broad crop, and the words still need to remain readable over it. A closely framed subject may suit a different article opening better. The large lead is useful when the picture and title can carry the first encounter together.
The editorial introduction follows the lead. This order lets the work introduce the magazine before its own description explains what holds the stories together. Where [Siwa introduces its writer first](https://aspirethemes.com/blog/designing-siwa), Hanoi starts with a piece of the publication.
## Topics and Recent Stories
A cover story offers an editorial choice. The next reader may want a subject of their own. Homepage topic cards pair tag names with images, giving someone interested in food, travel or interiors a route beyond the lead.
The Tags directory extends that approach to a separate browsing page. The name identifies the subject; the image gives it a visual character. A publisher can select the homepage topics rather than putting every tag in that space.
Latest Stories follows the homepage topics, broadening the selection to recent work. The five Featured selections are excluded from that feed when present, so the lead does not immediately reappear as another card. Farther down, Editor’s Pick gives one additional story a distinct place. These changes in scale separate a subject choice, a recent story and an editorial recommendation.
## Navigation Previews
Hanoi’s desktop dropdown places an available image beside its text links. Internal posts, pages, tags and authors can supply that preview; supported video stories can add muted movement. A reader gets a glimpse of the destination while the link remains the way to reach it.
On mobile, the navigation keeps its links in a drawer without the desktop preview panel.
## Article Openings
Once a reader chooses a story, the photograph can take another role. Hanoi’s Default, Hero, Fullscreen, Split and Video layouts give the publisher different ways to begin the article.
Split places the image and introduction alongside each other. Both can be read together: the photograph supplies context while the title and excerpt explain the piece. A Fullscreen opening gives the cover more of the first view, which suits a photograph that needs room before the writing begins.
The Video layout makes playback the opening media. Its expanding presentation gives motion a larger stage as the reader scrolls. This is a different commitment from a muted preview in navigation: the visitor has now opened the story and can choose to watch it.
An essay can use the Default layout while a photographic report uses a larger opening image.
## Reading Tools
The cover attracts attention; the article still needs to hold readable text. After the opening, controls for listening, text size, comments and sharing stay near the writing.
Text-size controls let the reader adjust the article rather than relying on the publisher’s preferred size. Listen uses browser speech support, so the available voice depends on the reader’s device. It is an alternative way to follow the text, not a recorded narration.
The lightbox opens photographs in a larger viewer over the article, so readers can inspect a photograph or gallery and return to the text.
## The Archive
The [Archive](https://hanoi.aspirethemes.com/archive/) collects titles and dates in a compact list, with image previews available for recognition. The reader can scan the words without opening a grid of large photographs. [Latest](https://hanoi.aspirethemes.com/latest/) offers the more visual alternative for browsing recent work.
Source: https://aspirethemes.com/blog/designing-hanoi
---
Resource: https://aspirethemes.com/blog/designing-siwa.md
# Designing Siwa: From First Visit to Newsletter
> Explore the design decisions behind Siwa’s introduction, story discovery, reading tools, video layouts, color system, and newsletter invitation.
- Canonical page: [Designing Siwa: From First Visit to Newsletter](https://aspirethemes.com/blog/designing-siwa)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2026-10-05
Before you reach the stories on the [Siwa demo](https://siwa.aspirethemes.com/), you meet the publication. A large introduction sits beside a portrait video, with enough room for a few paragraphs and a direct invitation to subscribe. Below it, selected stories lead into the latest writing. Farther down, the newsletter has its own introduction and choices.
A personal publication needs room to introduce its writer, but visitors may arrive ready to read or subscribe. Siwa gives the introduction space while keeping those other routes visible. The same balance continues through its story layouts and newsletter section.
[Siwa](https://aspirethemes.com/themes/siwa) is a Ghost theme I make at Aspire Themes. The examples here use its sample publication, rather than a customer site.
## The Introduction
The homepage opens with words before it opens with a collection of posts. The heading, short introduction and longer body have distinct roles: identify the publication, explain what it offers, and give the writer space to say more.
The media column is narrower than the text column. A portrait can accompany the writing without pushing it into a small caption. On a smaller screen, the columns stack; with no image or supported introduction video, the text takes a single column.
This flexibility also shapes how the section is edited. Its content comes from a Ghost page, so the publisher can use the editor for paragraphs, links and buttons. The introduction can grow or become shorter as the publication changes. It is not limited to a fixed sentence in a theme setting.
Video uses the same space as the portrait. A Play control opens it with sound in a lightbox, a viewer over the page, leaving the visitor to choose when to watch. The introduction can establish a voice in writing or let the visitor hear it, while preserving the same overall composition.
## Reader Quotes
The introduction tells visitors what the publication offers. Reader quotes can add another perspective before the stories begin. Siwa places them between the introduction and Featured, where the publisher’s words give way to someone else’s account of reading the work.
The rounded cards have a small speech-bubble tail, making a quote visually different from a story card. Each carries its own attribution and optional role. These are sample endorsements in the demo; a publisher would supply their own reader quotes.
Longer quotes remain readable without a fixed-height text box. Publishers without reader quotes can leave the section out and move directly to Featured.
## Featured and Latest
Once the introduction has established the publication, the next question is which story to open. Featured gives selected posts more space than the latest grid: a large image or video sits beside the title and excerpt, with text and media alternating sides across the cards.
That difference in scale separates an editorial selection from a chronological feed. Featured holds up to three posts marked Featured in Ghost. The latest stories follow, excluding those selections so the homepage does not immediately repeat them.
The composition changes with the content. A Featured story without an image or supported video becomes a full-width text card. The selected story keeps its place in the sequence on smaller screens.
## Navigation Previews
A small homepage selection cannot show everything a publication contains. Navigation gives readers a route to the rest, and its desktop previews add a glimpse of the destination before they leave the page.
The image sits beside the links inside the same panel. A reader can move through the titles and see the associated media without opening each page. For supported video stories, that slot can show muted movement.
The menu remains a list of usable links. A missing image, an external destination or unavailable preview data does not prevent navigation. On mobile, a drawer keeps the grouped links without the preview panel.
## The Archive
A preview helps when the reader is deciding what looks interesting. Finding a particular older piece calls for another view. Siwa’s Archive keeps titles and dates together in a compact list, giving the words more weight than the photographs.
This gives a returning reader a way to scan for a title they remember. On devices with hover support, or when a row receives keyboard focus, an available feature image can appear beside it. A story without an image still has a complete title and date; pictures help recognition without becoming a requirement for the list.
Latest offers the more visual alternative, while tag and author pages let readers follow a subject or a person. These views lead to the same stories through different clues.
## Article Openings
Finding a story leads to another design decision: what should the reader encounter first? A title, a photograph or a video can each provide the opening, and they ask for different arrangements.
Siwa’s Default layout centers the article opening. Hero places the title over the image, Fullscreen gives the cover more of the first screen, and Split puts the photograph beside the title and introduction. Post Video reserves the opening media area for playback.
Native Ghost video, YouTube and Vimeo can appear in the introduction, story cards, navigation previews and video articles. A publisher selects Post Video when the first supported video in the content should become the primary media. Video can also remain within an ordinary article when it belongs later in the piece.
There is a distinction between a glimpse and a viewing session. Eligible card and navigation previews stay muted; primary playback begins with an explicit Play action. Reduced-motion preferences keep previews static. Movement can help a reader recognize a story without requiring every visitor to watch it.
## Reading Tools
Siwa puts text size and Listen beside comments and sharing in the article’s action bar. Readers can adjust the text or listen while staying on the story.
A reader can enlarge the text, and the browser remembers their choice. For a longer article, the table of contents offers a route back to a particular section. It appears only when there are headings to navigate.
Listen uses the browser’s text-to-speech support to read the story aloud. Its voice depends on the browser and device, and the control is removed when native speech is unavailable. This is a reading option, rather than a recorded audio edition supplied by the publisher.
The same approach extends to photographs and conversation. Unlinked images and galleries open in a fullscreen viewer; linked images keep their destinations. Available comments open beside the article in a side panel. A reader can look closer or respond while keeping their place in the story.
## Page and Story Colors
These different openings still need to feel like parts of one site. Siwa separates the overall page palette from the surfaces used for individual stories and sections.
The examples below keep the same stories and layout while changing the page palette: light Cloud Dancer, olive Kombu Green and burgundy Port Royale. That makes the two layers of color visible.
The surrounding page changes while the colored story cards remain recognizable. Publishers can give a story or section its own background, with a contrasting text color. The introduction, reader quotes and newsletter use that same approach.
A mint introduction and a peach Featured card can share a dark site without every element taking on the same accent.
Smaller surfaces also follow the page palette, so a panel does not carry a fixed light background into a dark scheme. The [Siwa color guide](https://aspirethemes.com/docs/siwa#color-scheme) covers the available palettes and custom settings.
## The Newsletter Invitation
The newsletter section has room to explain what readers will receive before asking them to subscribe.
Its title, description and optional image come from a Ghost page. The choices come from the publication’s actual [Ghost newsletters](https://ghost.org/help/setup-email-newsletters/). Each can have a description, so a visitor can distinguish a weekly collection from occasional notes before selecting what to receive. The sample publication shows several choices; a publisher can configure their own offer.
The optional image accompanies the description; without it, the copy and form use a centered column. Publishers can explain the newsletter without supplying artwork.
This is one shared section across the homepage, archives and article layouts. A Split article and a video article can have different openings and arrive at the same newsletter presentation. Signed-in members do not see the repeated signup section. For signed-out visitors, it appears when Ghost Members is enabled and the newsletter page exists. The [Siwa setup guide](https://aspirethemes.com/docs/siwa#site-newsletter) covers those requirements.
The theme shapes this invitation on the website; [Ghost’s newsletter settings](https://ghost.org/help/email-design/) shape the email itself.
Siwa leaves a subscription link in the header for visitors who are already ready. The larger invitation remains available farther down, with room to explain each newsletter.
Source: https://aspirethemes.com/blog/designing-siwa
---
Resource: https://aspirethemes.com/blog/designing-taba.md
# Designing Taba: Giving a Busy Front Page a Clear Order
> How Taba’s lead stories, topic sections, columns and video coverage help readers choose their way through a Ghost newsroom or magazine.
- Canonical page: [Designing Taba: Giving a Busy Front Page a Clear Order](https://aspirethemes.com/blog/designing-taba)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2026-10-06
A magazine that covers several subjects has more than one answer to “what should I read?” There is the lead story, the latest report, a subject the reader follows, and a video they might want to watch. A front page needs to distinguish those answers before the reader opens anything.
On the [Taba demo](https://taba.aspirethemes.com/), the lead gets a large image and its own text panel. Three supporting stories follow. Further down, recent posts, topics, an editorial pick and video coverage offer different ways to continue. The page changes its arrangement as the reason for choosing a story changes.
[Taba](https://aspirethemes.com/themes/taba) is a Ghost theme I make at Aspire Themes. The screenshots use its sample publication.
## Featured and Latest
Taba’s Featured section holds one large lead and up to three supporting stories. The lead pairs media with a title and excerpt, giving the editor room to explain why that story deserves attention. The smaller cards let other selections remain visible without taking the same space.
Latest then answers a different need: what has been published recently? Keeping it separate from Featured gives editorial selection and publication order their own roles. A story can be important without being the newest thing on the site.
## Topic Sections and Columns
Recent work can range across subjects. A reader following one of those subjects needs a collection that stays together.
Homepage topic sections give selected subjects a heading and a row of up to four stories. The heading links to the topic’s archive. A single subject can therefore offer an immediate selection and a route into its wider coverage.
Topic columns use the space differently. Each column starts with an image-led story and follows it with a compact list of titles. Several subjects can sit alongside one another without each requiring a full-width section. The two lists of homepage topics are independent: a publisher can give a major beat a broad section and place other regular subjects in columns.
The header’s Topics menu keeps subjects within reach after the reader leaves the front page. The homepage can stay selective because it is not the only route into the archive.
## Editors’ Pick and Video
Between topic coverage and the lower columns, Editors’ Pick gives one selected story another large presentation. It excludes the four Featured selections, allowing the recommendation to introduce something beyond the opening group.
Video has a different reason to be separate. The homepage Video section collects video-tagged stories, while the standard Featured and topic groups exclude those entries. A visitor choosing to watch can find that format together, instead of discovering only after opening a card that the main story is a video.
The [video archive](https://taba.aspirethemes.com/video/) continues that route. The separation is useful when video is a recurring part of the publication. A magazine publishing mainly written stories can let its topic coverage do more of the work.
## Article Openings
Taba’s article templates let editors choose how much of the opening to give to photographs, galleries or video.
Image Cover gives a photograph a large opening presence, with the story title over the image.
A report with one supporting image does not need the same opening as a photographic feature. The distinction lets the editor give a major visual story more space while retaining a simpler arrangement for everyday writing.
The Video Theater layout gives the player a large stage before the written story. It suits a feature whose main material is something to watch.
For a comparison of these layouts with a consistent written-article opening, see [Tripoli vs Taba](https://aspirethemes.com/blog/tripoli-vs-taba).
## Reading Tools
A front page needs many routes. Once a reader opens an article, that density can recede so the text has room.
Text-size controls, browser voice playback and sharing sit with the article. Reading progress gives a sense of position in a longer piece. Listen relies on browser speech support; it does not mean the publisher has recorded an audio edition.
## Newsletter Choices
A broad magazine may publish more than one newsletter. Asking a reader to subscribe becomes clearer when the site explains what each one contains.
Taba’s [newsletters page](https://taba.aspirethemes.com/newsletters/) presents the publication’s Ghost newsletters as separate choices with descriptions. A signed-out visitor selects what to receive; a signed-in member can manage preferences through Ghost Portal. These choices depend on the newsletters the publisher has configured.
Readers can follow one newsletter without subscribing to every subject the magazine covers.
Source: https://aspirethemes.com/blog/designing-taba
---
Resource: https://aspirethemes.com/blog/designing-tripoli.md
# Designing Tripoli: Bringing Order to a Magazine Homepage
> How Tripoli brings featured stories, recent posts and topic coverage together, then gives readers a quieter space for the article they choose.
- Canonical page: [Designing Tripoli: Bringing Order to a Magazine Homepage](https://aspirethemes.com/blog/designing-tripoli)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2026-10-08
The [Tripoli demo](https://tripoli.aspirethemes.com/) opens with three featured stories and a list of recent posts. Below them, topics such as Politics and Technology have their own sections. A reader can start with the editor’s lead, catch up on new work or browse a subject.
[Tripoli](https://aspirethemes.com/themes/tripoli) is a Ghost theme I make at Aspire Themes. Its magazine layout separates these choices instead of putting every story into one chronological list. The screenshots below use the demo’s sample content.
## Featured and Latest
On desktop, the lead story sits in the center, between two smaller featured stories and the Latest column. Its larger image, title and excerpt give it more space than the supporting cards.
Latest uses compact entries with small thumbnails. The three featured stories are excluded from that list, so readers see more of the publication’s work in the opening view.
The editor can keep a feature in the lead position while newer reports appear beside it. An important story does not have to disappear from the opening selection simply because something else has been published.
## Topic Sections
Below the featured stories, each selected topic has a heading and a row of story cards. The Politics row shows four stories from that subject. Images, titles and excerpts give readers a selection from each subject.
These sections let a reader follow one area of coverage without sorting through unrelated posts. The topic heading links to its archive. A See All link appears when there are more posts than the homepage section displays.
The homepage can show a few stories from an active subject while its archive holds the rest. The [Tripoli and Taba comparison](https://aspirethemes.com/blog/tripoli-vs-taba) looks more closely at the different ways the two themes arrange topic coverage.
## Editors’ Picks
Editors’ Picks appears near the bottom of the homepage as a numbered group of stories. Unlike the topic rows, it can bring selections from different subjects together.
This gives the editor a place to recommend older work alongside recent coverage. A featured story can also appear here; the selections do not automatically exclude stories used elsewhere on the homepage.
## Inside the Article
After choosing from the homepage’s story groups, the reader reaches a narrower article column. The title, introduction and author details establish the selected story before the feature image and writing.
For a longer article, the table of contents above the opening paragraph lets readers go directly to a section or return to one later.
## Authors and Topics
The authors directory pairs contributor portraits and biographies with links to their stories. A reader who recognizes a writer can find their work without searching through the homepage’s topic sections.
The [topics directory](https://tripoli.aspirethemes.com/tags/) offers another way into the publication, organized by subject. These pages keep writers and subjects accessible beyond whichever stories the editor has selected for the front page.
Source: https://aspirethemes.com/blog/designing-tripoli
---
Resource: https://aspirethemes.com/blog/digitalocean-ghost-multiple-sites-installation.md
# Install Multiple Ghost Sites on DigitalOcean
> Install an additional Ghost site on an existing DigitalOcean droplet while keeping its domain, database, files, and service separate.
- Canonical page: [Install Multiple Ghost Sites on DigitalOcean](https://aspirethemes.com/blog/digitalocean-ghost-multiple-sites-installation)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2024-11-01
If you’re already using Ghost on a DigitalOcean droplet and want to add more Ghost instances to the same server, this guide is for you.
Prerequisites:
Your server uses Ghost’s supported Ubuntu, MySQL, NGINX, and systemd stack.
The server has enough memory and storage for another Ghost process and database.
You are logged into the droplet via SSH as a user with sudo access.
Your domain name is connected to the droplet’s IP address.
You have backed up every existing Ghost site on the server.
Before continuing, read Ghost’s current [Ubuntu installation requirements](https://docs.ghost.org/install/ubuntu) and [Ghost CLI documentation](https://docs.ghost.org/ghost-cli). Multiple sites share the server’s CPU, memory, disk, MySQL, and NGINX, so monitor resource use after adding the site.
1. Back Up the Existing Site
Run the backup command inside the existing Ghost installation:
sudo -i -u ghost-mgr
cd /var/www/ghost
ghost backup
exit
Repeat this for any other Ghost installations on the server.
2. Create a Directory for the New Site
Create a separate directory and give the DigitalOcean Ghost manager account ownership:
sudo mkdir /var/www/new-blog
sudo chown ghost-mgr:ghost-mgr /var/www/new-blog
Replace new-blog with a short name for the new publication.
3. Switch to the Ghost Manager Account
DigitalOcean’s Ghost image uses ghost-mgr for Ghost maintenance:
sudo -i -u ghost-mgr
Then enter the directory:
cd /var/www/new-blog
4. Install the New Ghost Site
Run the supported production installer:
ghost install
Follow the prompts for the new domain, MySQL administrator credentials, NGINX, SSL, systemd, and starting Ghost. Choose a unique database name when prompted.
Do not reuse the application database account from the existing site’s configuration. Ghost CLI’s MySQL setup creates a dedicated, minimally privileged database user for the new installation.
5. Verify Both Sites
List the Ghost installations and confirm both are running:
ghost ls
Open both domains over HTTPS and sign in to the new site’s admin immediately to claim its owner account.
See also: [Ghost Theme Demo Setup on DigitalOcean](https://aspirethemes.com/blog/digitalocean-ghost-themes-setup).
Source: https://aspirethemes.com/blog/digitalocean-ghost-multiple-sites-installation
---
Resource: https://aspirethemes.com/blog/digitalocean-ghost-themes-setup.md
# My Ghost Theme Demo Setup on DigitalOcean
> See how Aspire Themes organizes multiple Ghost theme demos on one DigitalOcean droplet and what each site keeps separate.
- Canonical page: [My Ghost Theme Demo Setup on DigitalOcean](https://aspirethemes.com/blog/digitalocean-ghost-themes-setup)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2024-12-15
As a [Ghost theme](https://aspirethemes.com/themes/) developer, I've opted to host all of my Ghost theme demos on a single DigitalOcean droplet.
## Droplet Configuration
* **CPU Type:** Regular Intel
* **Plan:** Basic
* **RAM:** 16 GB
* **vCPUs:** 8
* **Storage:** 100 GB SSD
## Benefits of Hosting Demos on One Droplet
1. I can manage all my demos in one place, saving time and effort.
2. Hosting multiple sites on a single droplet is often more affordable than using individual hosting plans for each demo.
3. With resources dedicated to all demos, I can fine-tune the server environment for optimal Ghost performance.
For a detailed guide on setting up multiple Ghost installations on a single DigitalOcean droplet, check out my post on [How I Install Multiple Ghost Installations on DigitalOcean](https://aspirethemes.com/blog/digitalocean-ghost-multiple-sites-installation).
## Further Reading
- Explore premium Ghost themes → [Themes](https://aspirethemes.com/themes/)
- See real‑world Ghost website examples → [Showcase](https://aspirethemes.com/showcase/)
- Build and customize with the docs → [Ghost theme documentation](https://aspirethemes.com/docs/)
Source: https://aspirethemes.com/blog/digitalocean-ghost-themes-setup
---
Resource: https://aspirethemes.com/blog/download-upload-ghost-images-digitalocean.md
# Download and Upload Ghost Images with SCP
> Download or upload a Ghost site's images directory with SCP when Ghost runs on a DigitalOcean droplet.
- Canonical page: [Download and Upload Ghost Images with SCP](https://aspirethemes.com/blog/download-upload-ghost-images-digitalocean)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2022-08-01
You can download and upload your Ghost CMS images folder using the command line. I assume you can already locally access your DigitalOcean Ghost droplet from the command line from your computer.
I will use the SCP command-line tool. SCP term is shorthand for secure copy. It allows to securely transfer of files between a remote server and a local machine. In our case, it will copy the images from the Ghost server to the local computer and vice versa.
Zip Images Folder
The first step for downloading the images is to log in to your DigitalOcean Ghost server and zip the images folder.
Login to your DigitalOcean remote server with your droplet IP address.
Replace 207.154.195.220 with your IP.
ssh root@207.154.195.220
Go to the Ghost installation content path.
cd /var/www/ghost/content/
Zip the images folder using the zip command.
zip -r images.zip images
You may need to install the zip command tool if it is unavailable on your server.
The command line will check whether the zip tool is available or not and then give you instructions to install it if it is not available.
Now, you have the images.zip file ready for download.
Working with SCP
The SCP command needs two parameters, the first is the remote location file path, and the second is the local path.
scp REMOTE_PATH LOCAL_PATH
In our case, the remote path will be something like this:
root@207.154.195.220:/var/www/ghost/content/images.zip
And the local bath, for example, will be on my desktop.
/Users/ahmadajmi/Desktop
Download Images
Combining the previous parameters, you can use the following command to download the images zipped file.
scp root@207.154.195.220:/var/www/ghost/content/images.zip /Users/ahmadajmi/Desktop
Upload Images
The other scenario is to upload the images from your local machine to the remote server; you can use the same concept. Flip the parameters to make the local path comes first and then the remote path last.
So, I assume the images.zip is on the desktop; the upload command will be.
scp /Users/ahmadajmi/Desktop/images.zip root@159.65.227.236:/var/www/ghost/content/
Unzip Images
After uploading the images.zip to the remote server, you can use the unzip command to unzip it.
unzip -o images.zip
That’s all I wanted to share today, and I hope you find this post helpful.
Source: https://aspirethemes.com/blog/download-upload-ghost-images-digitalocean
---
Resource: https://aspirethemes.com/blog/ghost-5-59.md
# Ghost 5.59 — Header Card Enhancements
> See the layout, background, image, button, and size controls introduced for Header cards in Ghost 5.59.
- Canonical page: [Ghost 5.59 — Header Card Enhancements](https://aspirethemes.com/blog/ghost-5-59)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2024-03-01
In version 5.59.0, Ghost introduced enhancements to the Header Card. These enhancements allow for layout and color customization, similar to what can be done with the Signup card. However, the main difference is that the Signup card contains a signup form, while the Header Card does not.
To add a Header card to your content, click the + button to open the Cards menu and choose **Header**.
Some examples of what you can do with the Header card.
Make sure that the [new Ghost editor](https://ghost.org/changelog/editor-beta/) is enabled.
Source: https://aspirethemes.com/blog/ghost-5-59
---
Resource: https://aspirethemes.com/blog/ghost-author-context.md
# How to Use Ghost Author Context
> Use Ghost author context and Handlebars helpers to display author data in posts and custom author templates.
- Canonical page: [How to Use Ghost Author Context](https://aspirethemes.com/blog/ghost-author-context)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2022-05-01
This post will discuss Ghost Author’s context and how Ghost decides to select which theme file to show author data with some examples.
Every Ghost author has its page to show the author’s information like name, photo, and a list of posts written by that author. So, when you visit your author page on your website, for example, `/author/ahmad`, you are now in the author context.
The `index.hbs` theme file is used as the default author context template.
So, how can we know if we're on the blog home page or the author page? We can use the `{}` helper to know that.
So, in the `index.hbs` file, we can do.
```html
{{#is 'author'}}
{{/is}}
```
Between these two lines, we can show the author’s information, like name and photo. But first, we need to use the `{}` block helper. Within that helper, we can access the author properties we need.
```html
{{#is 'author'}}
{{#author}}
{{ name }}
{{/author}}
{{/is}}
```
You might say that you don't want to use the `index.hbs` file for the author page. Is there another solution? Yes, we can create a new template file and call it `author.hbs`.
How does Ghost choose between `index.hbs` and `author.hbs`? Well, Ghost will look for the `author.hbs` first and select it if it exists. If not, Ghost will choose `index.hbs`. That’s why the `index.hbs` file is necessary for any Ghost theme.
So, in the `author.hbs` file, the previous example will be.
```html
{{#author}}
{{ name }}
{{/author}}
```
Note that I removed the `{}` helper as we are now in a dedicated author context page.
You can access more author attributes; besides the `name` and `profile_image` we used above, see a list of all the author attributes at [Author object attributes](https://docs.ghost.org/themes/contexts/author#author-object-attributes)
Suppose you want to go deeper and create a dedicated page for a single author. For example, if you want to design a unique page for every author. You can name the template file as `author-:slug.hbs` where the `:slug` part will be the author slug. So, if your user URL is `/author/ahmad/`, create the `author-ahmad.hbs` file.
After we talked about this custom author template, let’s review how Ghost will choose the template file. First, it will check if a template matches the author slug, then looks for the `author.hbs` file, and then ends up using the `index.hbs` file if both of them did not exist.
That’s all that I wanted to share today, and I hope you find this post helpful.
Source: https://aspirethemes.com/blog/ghost-author-context
---
Resource: https://aspirethemes.com/blog/ghost-author-examples.md
# Ghost Authors: Practical Theme Examples
> Learn practical Ghost author examples, including how to list authors, show selected authors, exclude authors, and use author data in themes.
- Canonical page: [Ghost Authors: Practical Theme Examples](https://aspirethemes.com/blog/ghost-author-examples)
- Author: [Ahmad Ajmi](https://aspirethemes.com/about)
- Published: 2022-04-01
I discussed how the Ghost Author Context works in the [latest post](https://aspirethemes.com/blog/ghost-author-context). This practical post will show how to work with Ghost Author API. I will show examples of displaying all the website authors, show-specific authors, exclude some and more cases to use in your Ghost theme.
I will use the Ghost [**`#get`**](https://docs.ghost.org/themes/helpers/functional/get) block helper to make custom queries to the Ghost API to get the author’s data.
## Show All Authors
Let’s start with a basic example to show all the website authors.
```html
{{#get 'authors' limit='all'}}
{{#foreach authors}}
{{ name }}
{{/foreach}}
{{/get}}
```
We have used the `limit` attribute with the `all` value to specify how many authors we want in return. In this case, we passed the `all` value to get all authors.
The default value of the `limit` attribute is `15`. In addition to the `all` value, we can pass a number; for example, if we want to get five authors, we can use `limit='5'`.
```html
{{#get 'authors' limit='5'}}
{{#foreach authors}}
{{ name }}
{{/foreach}}
{{/get}}
```
In addition to the **`#get`** block helper, I used the [**`foreach`**](https://docs.ghost.org/themes/helpers/functional/foreach#foreach), loop helper, to iterate over the data one by one and then output the author content inside its opening and closing tags `{}`.
The final result of the previous example will be.
```html
William James
Emily James
Jeff Rosenberger
Olivia Thomas
```
As you can see, the only date we get so far is the author name using the `{}` attribute. Let’s see how we can make the author name clickable to go to the author page when clicking on it.
The following example will output all the author as an HTML unordered list.
```html
{{#get 'authors' limit='5'}}
{{#foreach authors}}
{{ name }}
{{/foreach}}
{{/get}}
```
Here, I used the `{}` attribute, which will output the author URL within an HTML link tag.
The result will be.
```html
William James
Emily James
Jeff Rosenberger
Olivia Thomas
```
For the list of the available attributes, check [Author object attributes](https://docs.ghost.org/themes/contexts/author#author-object-attributes).
To create a custom authors page, read my [Create an Authors Page](https://aspirethemes.com/blog/ghost-authors-page) post.
## Show Specific Authors
To show only a specific author, use the `filter` attribute and pass the *Slug* of each tag you want to get.
You can find the tag *Slug* on the tag setting page.
In this case, the basic syntax for the `#get` block helper is.
```
{{#get 'authors' filter='slug:[SLUG, SLUG, SLUG]'}}
```
Note the Comma (`,`) separating each slug.
If we want to get the authors with the *ahmad*, *eiad* and *adham* slugs, the previous example will be like.
```html
{{#get 'authors' filter='slug:[ahmad, eiad, adham]'}}
{{#foreach authors}}
{{ name }}
{{/foreach}}
{{/get}}
```
Note
This way does not guarantee getting the same authors in the same order as you added the slugs. Probably a Ghost issue. Instead, use the following method.
In this method, we get each author separately. For example, to get the author with `ahmad` and `eiad` slugs.
```html
{{#get 'authors' filter='slug:ahmad'}}
{{#foreach authors}}
{{ name }}
{{/foreach}}
{{/get}}
{{#get 'authors' filter='slug:eiad'}}
{{#foreach authors}}
{{ name }}
{{/foreach}}
{{/get}}
```
I removed the `[ ]` around the slug as we are only filtering with one slug.
## Exclude Authors
Suppose you want to show all authors except a few ones. For example, you want to show all the website authors but the authors with *ahmad* and *eiad* slugs.
In this case, the basic syntax for the `#authors` helper is.
```
{{#get 'authors' filter='slug:-[SLUG, SLUG, SLUG]'}}
```
The difference from the previous example is the `-` sign in the `filter` attribute before the slugs. Note the following example.
```html
{{#get 'authors' filter='slug:-[ahmad, eiad]'}}
{{#foreach authors}}
{{ name }}
{{/foreach}}
{{/get}}
```
## Show Post Count
Another practical example is to show the post count for each author. Use the `include` attribute and pass the `count.posts` as a value. Let’s see, we want to show five authors and how many posts each one has.
```html
{{#get 'authors' limit='5' include='count.posts'}}
{{#foreach authors}}
{{ name }} ({{ count.posts }})
{{/foreach}}
{{/get}}
```
The result will be.
```html
William James (3)
Emily James (2)
Jeff Rosenberger (6)
Olivia Thomas (8)
```
We can also order the authors by their post count. In the following example, I used the `order` attribute to order by the `count.posts` we used before in the `include` attribute.
```html
{{#get 'authors' limit='5' include='count.posts' order='count.posts desc'}}
{{#foreach authors}}
{{ name }} ({{ count.posts }})
{{/foreach}}
{{/get}}
```
The result will be.
```html
Olivia Thomas (8)
Jeff Rosenberger (6)
William James (3)
Emily James (2)
```
## Show Posts for Each Author
Let’s take a more complex example. Suppose we want to list five authors ordered by how many posts they have and show their posts under each.
```html
{{#get 'authors' limit='5' include='count.posts' order='count.posts desc'}}
{{#foreach authors}}
A beautiful product clearly made by a passionate, experienced team.
This is where you can add your testimonial quote``` Open the theme folder on your computer and go to `/assets/images/testimonials/`. This is where you can add your testimonial author images. An image of `128px` × `128px` is a good size. If the testimonial author's image name is `ahmad.jpg`, your image HTML code in `/partials/home/testimonials.hbs` would be: ```html
```
You can add a link using the HTML link tag; for example, I added a link to the testimonial author in the above example.
```html
```
Make sure to replace the `#` with the URL you want to link.
If you don't want to link to the author, remove the `a` start and closing tags; the final line would be:
```html
```
Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website.
---
### Homepage Writing
The Writing section shows four recent posts with the [**Writing**](#content-structure--required) tag.
To control how many Writing items to show:
1. Go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Homepage**
2. Type a number in the **Number of writing items** box. Or, type `none` to hide the Writing section
3. Click **Save changes**
---
Homepage metadata
Ghost uses your publication settings for the custom homepage's title, description, and preview image.
- Set the **Title & description** in **Settings → General**.
- Set the **Publication cover** in **Settings → Site → Design & branding → Customize → Brand**. You can use the same image as the homepage feature image.
Search engines and social platforms can use these values when they show a link to your homepage.
---
Use the **Twitter card** and **Facebook card** fields in **Settings → General** when you want a platform-specific title, description, or image.
---
Social platforms cache link previews, so a changed image or description may not appear immediately.
---
## Pages
Manage the [Work](#work-page), [Writing](#writing-page), and [About](#about-page) pages.
### Work Page
Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required).
The Work page shows all posts with the [Work](#content-structure--required) tag.
You can change the number of Work items in the [Posts Per Page](#posts-per-page) setting.
To add it to your navigation, see [Add Work Page to Navigation](#add-work-page-to-navigation).
The Work page theme file is `work.hbs`.
### Writing Page
Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required).
The Writing page shows all posts with the [Writing](#content-structure--required) tag.
You can change the number of Writing items in the [Posts Per Page](#posts-per-page) setting.
To add it to your navigation, see [Add Writing Page to Navigation](#add-writing-page-to-navigation).
The Writing page theme file is `writing.hbs`.
### About Page
1. Create a new page in Ghost Admin.
2. Add the title, content, and excerpt, and upload a feature image.
3. Open the page settings and choose About from the Template dropdown.
The About page theme file is `custom-about.hbs`.
---
## Work Feature Image
The ideal size for the work feature image is `1184` × `790`. The visible size is `592` × `395`, but using `1184` × `790` keeps it sharp on Retina displays.
Upload the feature image from the post editor (above the title). It appears in the work listing cards on the homepage but not on the individual work page. You can still insert it as the first image within the post content if desired.
The image aspect ratio is set to 3:2.
To change the ratio to 1:1, add this CSS in Ghost Admin [Code Injection](#code-injection) *(Site Header)*
```html
```
Ensure the uploaded image has a 1:1 ratio.
---
## Changing Colors
You can change all site colors from your Ghost admin.
Go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Site wide** to edit color settings.
### Colors Explained
1. **Text color primary**. Main text color for site content.
2. **Text color secondary**. Text color for section headings, post dates, and image captions.
3. **Border color**. Border color (for example, the divider between items in the Writing list).
4. **Background color primary**. The main background color.
5. **Background color secondary**. Used for the site footer, Writing list hover states, and as the placeholder for images before they load.
You can also set the Accent color in **Settings → Site → Design & branding → Customize → Brand → Accent color**. The Accent color is only used for the content [Header card](https://ghost.org/changelog/headers/) when its background is set to the Accent color.
### Color Examples
Below are six accessible color schemes.
Copy each hex value into the [color settings](#changing-colors).
#### ➀ Green
[Demo →](https://beirut-green.aspirethemes.com/)
1. **Text color primary** → `016450`
2. **Text color secondary** → `016450`
3. **Border color** → `6c9a8d`
4. **Background color primary** → `ecf5f2`
5. **Background color secondary** → `d6ece5`
#### ➁ Isabelline
[Demo →](https://beirut-isabelline.aspirethemes.com/)
1. **Text color primary** → `703288`
2. **Text color secondary** → `703288`
3. **Border color** → `d4c1d3`
4. **Background color primary** → `f4efec`
5. **Background color secondary** → `dac9d9`
#### ➂ Red
[Demo →](https://beirut-red.aspirethemes.com/)
1. **Text color primary** → `B30000`
2. **Text color secondary** → `B30000`
3. **Border color** → `B30000`
4. **Background color primary** → `FFFFFF`
5. **Background color secondary** → `fafafa`
#### ➃ Dark
[Demo →](https://beirut-dark.aspirethemes.com/)
1. **Text color primary** → `d5caaf`
2. **Text color secondary** → `d5caaf`
3. **Border color** → `d5caaf`
4. **Background color primary** → `000000`
5. **Background color secondary** → `1c1c1c`
#### ➄ Yellow
[Demo →](https://beirut-yellow.aspirethemes.com/)
1. **Text color primary** → `000000`
2. **Text color secondary** → `000000`
3. **Border color** → `000000`
4. **Background color primary** → `ffe14b`
5. **Background color secondary** → `FFDA1F`
#### ➅ Purple
[Demo →](https://beirut-purple.aspirethemes.com/)
1. **Text color primary** → `f3eeeb`
2. **Text color secondary** → `f3eeeb`
3. **Border color** → `814b95`
4. **Background color primary** → `703288`
5. **Background color secondary** → `622C77`
### Color Tools
The following are some online websites and tools to help with color inspiration. Please make sure you choose an accessible color scheme; this is important for readers.
- [https://www.fffuel.co/cccolor/](https://www.fffuel.co/cccolor/)
- [https://coolors.co/](https://coolors.co/)
- [https://mdigi.tools/color-shades/](https://mdigi.tools/color-shades/#c5322e)
- [http://web-accessibility.carnegiemuseums.org/design/color/](http://web-accessibility.carnegiemuseums.org/design/color/)
- [http://colorsafe.co/](http://colorsafe.co/)
- [https://clrs.cc/a11y/](https://clrs.cc/a11y/)
---
## Membership
Beirut includes membership UI elements:
1. Footer subscribe form
2. Post-page call to action that encourages visitors to subscribe when a post is members-only
### Remove Footer Subscribe Form
1. In Ghost admin, go to **Settings → Membership → Access**.
2. Select **Nobody**.
3. Click **Save**.
### Remove Ghost Portal / The Bottom Right Button
This is the Ghost Portal button. You can disable it in Ghost Admin. Learn more in [Portal Look and feel](https://ghost.org/help/setup-members/#look-and-feel).
Membership Troubleshooting Tips
If the subscribe form shows an error, check these items first:
Make sure your site is running the latest version of Ghost.
If you self-host Ghost, configure the [mail settings](https://docs.ghost.org/config#mail) and restart your server.
Make sure the Ghost config URL matches the public URL readers use to visit your site, as described in the [Ghost docs](https://docs.ghost.org/config#url).
Use the full public URL. If your site uses a subpath, enter the full path, such as `https://example.com/blog/`. If SSL is enabled, use `https://`.
If the issue continues on Ghost(Pro), contact Ghost support. If you self-host, contact your hosting provider.
Membership email delivery and server configuration are handled by Ghost or your host, not by the theme.
For more information about Members, connecting Stripe, and setting the package price, check the [official Ghost documentation](https://ghost.org/help/setup-members/).
---
## Navigation
You can add, edit, delete, and reorder the navigation menu in Ghost Admin under **Settings → Site → Navigation**.
### Add New Page to Navigation
First, type the page name as you'd like it to appear in your navigation in the label field.
Next, click the item’s **URL**. The site URL is auto-populated; add the page slug after the final **/**.
Click the **Save** button.
### Add Work Page to Navigation
Add a [new navigation item](#add-new-page-to-navigation), fill in the **Label** field and make sure to set the **URL** to `/work/` like the following screenshot.
### Add Writing Page to Navigation
Add a [new navigation item](#add-new-page-to-navigation), fill in the **Label** field and make sure to set the **URL** to `/writing/` like the following screenshot.
### Dropdown
Add a Hyphen (`-`) followed by a space before the navigation **Label** to add a dropdown menu.
In this example, Contact will be the parent item with Blog and Archive as child items.
### Secondary Navigation / Footer
Like [Header Navigation](#navigation), you can add the footer navigation links from the Ghost admin **Settings → Site → Navigation**.
---
## Search
Beirut uses the [Ghost Native Search](https://docs.ghost.org/themes/search).
Ghost search uses post titles and excerpts from the 10,000 most recent posts. It does not search the full body of every post.
**To remove search:**
In the Ghost admin [Code Injection](#code-injection) Site Header, add:
```html
```
---
## Comments
The theme comes with [Ghost Native Comments](https://ghost.org/changelog/native-comments/) integration. You can turn the comments on from your Ghost admin **Settings → Membership → Access**.
[Learn more about Ghost comments](https://ghost.org/help/commenting/).
[Ghost developer documentation for comments](https://docs.ghost.org/themes/helpers/data/comments).
---
## Footer Social Media Links
The theme displays the Facebook and Twitter accounts set in Ghost Admin. Go to **Settings → General → Social accounts** and add your URLs.
By default, Ghost fills these fields with the Ghost social links. If you don't have Twitter or Facebook, you can remove the default ones, and the links will disappear from the theme.
Beirut supports adding Instagram, Dribbble, LinkedIn, and Email URLs. Go to **Settings → Site → Design & branding → Customize → Theme → Site wide**.
---
## Languages
Beirut ships with multiple languages. You can also add your own.
### Theme Translation
Beirut supports [Ghost i18n](https://docs.ghost.org/themes/helpers/utility/translate) and comes with **Arabic**, **German**, **Italian**, **Spanish**, **French**, **Finnish**, **Portuguese**, **Dutch**, **Turkish**, and **Danish** translations.
To use a language other than English, go to your Ghost admin **Settings → General → Publication language** and enter the [ISO code](https://ghost.org/help/site-setup/#publication-language) in the **Publication Language** field.
Available languages and their codes:
- `ar` for Arabic
- `da` for Danish
- `de` for German
- `en` for English
- `es` for Spanish
- `fi` for Finnish
- `fr` for French
- `it` for Italian
- `nl` for Dutch
- `pt` for Portuguese
- `tr` for Turkish
#### Add a New Language Translation
If the theme does not have a translation for your language, follow these steps to add a new language translation.
1. Create a new file using a [code editor](#theme-editing-tools) in the theme’s **locales** folder with the [ISO Language Codes](https://ghost.org/help/site-setup/#publication-language) code. For example, if the new language is Japanese, the ISO code will be `ja` and the file name will be `ja.json`.
2. In the same **locales** folder, open the `en.json` file and copy its content into your new language file.
3. Start translating, as shown in the following [Edit Translation](#edit-translation) section.
Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website.
Now, go to your Ghost admin **Settings → General → Publication language** and enter your language ISO code into the **Publication Language** field. For example, `ja`.
Click **Save settings**.
*You may want to [restart Ghost or deactivate and activate](https://docs.ghost.org/themes/helpers/utility/translate#7-reactivate-the-theme) the theme again to make the new changes effective.*
### Edit Translation
To edit any translation, open the language file in the `/locales/` folder using a [code editor](#theme-editing-tools):
```sh
|____locales
| |____ar.json
| |____da.json
| |____de.json
| |____en.json
| |____es.json
| |____fi.json
| |____fr.json
| |____it.json
| |____nl.json
| |____pt.json
| |____tr.json
```
For example, the German translation file (`de`) looks like this:
```json
{
"Skip to content": "Zum Inhalt springen",
"Page Not Found": "Seite nicht gefunden",
"Work": "Arbeit",
"Writing": "Artikel",
"Services": "Leistungen",
"Technologies": "Technologien",
"Clients": "Kunden",
"Next": "Weiter",
"Comments": "Kommentare",
"Loading": "Wird geladen",
"Load More": "Mehr anzeigen",
"Subscribe": "Abonnieren",
"Newsletter": "Newsletter",
"Email address": "E-Mail-Adresse",
"Please check your inbox and click the link to confirm your subscription.": "Bitte überprüfen Sie Ihren Posteingang und klicken Sie auf den Link, um Ihr Abonnement zu bestätigen.",
"Please enter a valid email address.": "Bitte geben Sie eine gültige E-Mail-Adresse ein!",
"An error occurred, please try again later.": "Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.",
"This content is for Members": "Inhalt für Mitglieder",
"This content is for Paid Members": "Inhalt für zahlende Mitglieder",
"This content is for Subscribers on the ": "Inhalt für Abonnenten von ",
"Upgrade your account": "Ihr Konto aufwerten",
"Already have an account?": "Haben Sie schon ein Konto?",
"Published with {ghostLink} & {themeLink}": "Veröffentlicht mit {ghostLink} & {themeLink}"
}
```
Each entry has an English _key_ (e.g., `"Loading"`) and a translated _value_ (e.g., `"Wird geladen"`). Do not change the key; update only the value.
To suggest improvements or add a new language, please [contact](https://aspirethemes.com/contact) me.
### RTL
*RTL* means right to left. Turning on RTL makes the theme readable for languages written from right to left, like Arabic or Hebrew.
To enable RTL:
1. Go to **Settings → Site → Theme**.
2. Open the **…** menu beside your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor).
3. Open `partials/structure/head.hbs` and replace `` with ``.
4. Click **Save**, then **Replace theme** to apply the change.
Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website.
Multiple Languages Support
The theme supports [Ghost translations](https://docs.ghost.org/themes/helpers/utility/translate) for different languages, which means if you set the site language to French, parts of the theme (e.g., button labels) will appear in French.
Multiple languages on a single site are not supported out of the box in Ghost, and the theme does not support this either.
---
## Posts Per Page
The theme displays `100` posts per page by default. To change this in Ghost Admin:
1. Go to **Settings → Site → Theme**.
2. Open the **…** menu next to your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor).
3. Open `package.json` and find `posts_per_page` inside `config`.
4. Replace `100` with the number of posts you want per page.
5. Click **Save**, then **Replace theme** to apply the change.
```json
"config": {
"posts_per_page": 100
}
```
Note
This does not apply to the homepage; it applies to the Work, Writing, Author, and Tag pages. For the homepage, check out the [Homepage](#homepage) section.
---
## Typography Drop Caps
The theme comes with different styles of typography drop caps. These apply to the first letter of the first word in a given paragraph.
To add a drop cap style to a paragraph:
1. Add an [HTML card](https://ghost.org/help/using-the-editor/#using-the-dynamic-menu) to your post or page content editor.
2. In that HTML card, add a `` HTML element with the drop cap CSS class. For example, ``. See below for the available classes for each style.
3. Add your paragraph text within that `` HTML element.
There are currently two styles available.
**➊ Small Drop Cap**
- CSS class → `u-drop-cap-small`
- Example ↓
```html
TEXT HERE
``` Result: **➋ Large Drop Cap** - CSS class → `u-drop-cap-large` - Example ↓ ```htmlTEXT HERE
``` Result: To save time, you can [create it as a snippet](https://ghost.org/changelog/content-snippets/). ## Changing Theme Typeface Beirut uses one typeface, [**DM Sans**](https://fonts.google.com/specimen/DM+Sans). The theme loads **DM Sans** via Google Fonts in `partials/typography.hbs`. It is then assigned to a CSS variable, with system fonts as fallbacks, as follows: ```css :root { --font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; } ``` To change the typeface to one from Google Fonts, use **[Code Injection](#code-injection) > Site Header**. For example, to use [**Roboto**](https://fonts.google.com/specimen/Roboto) from Google Fonts, your code might look like this: ```html ``` If you have a custom typeface, check out the [Loading Custom Typeface](#loading-custom-typeface) section below. You might find the following posts helpful as well: - [How to Change a Ghost Theme Font Using Google Fonts](https://aspirethemes.com/blog/google-font-ghost-theme) - [How to Change Fonts in Ghost’s Casper Theme with Google Fonts](https://aspirethemes.com/blog/casper-google-fonts) --- ## Loading Custom Typeface I assume you have the font files and the initial `@font-face` CSS code for loading the font. Something similar to the following code. ```css @font-face { font-family: 'Atyp'; src: local('Atyp Text Regular'), local('Atyp-Text-Regular'), url('AtypText-Regular.woff2') format('woff2'), url('AtypText-Regular.woff') format('woff'), url('AtypText-Regular.ttf') format('truetype'); font-weight: 400; font-style: normal; } ``` ➊ Create a new folder in the theme under `/assets` and name it `fonts`, for example, then copy your font files there. ➋ Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. ➌ In the Ghost admin [Code Injection](#code-injection) Site Header, add your `@font-face` code with the new font files path wrapped in the ` ``` Watch the following short video about Ghost Code Injection, how it works, and how to use it. Check out [How to use Code Injection](https://ghost.org/tutorials/use-code-injection-in-ghost/) Ghost guide for more information. --- ## Customize Logo Size If you are using an image as a logo (instead of the site name) and want to change the logo size, use the following code in [Code Injection](#code-injection). ```html ``` The default value is `40px`, so you can increase this value to match your preference.Your opening paragraph...
``` --- ## Homepage Hanoi's homepage is assembled from Ghost content and a few theme settings. Upload the theme `routes.yaml` file before setting up the homepage sections. Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). ### Featured Posts Hanoi shows up to five featured posts in the first homepage section. Posts using the **Post Video** template can show a muted autoplay preview in this section. To add a post to the Featured section: 1. Open a post in Ghost Admin. 2. Open **Post settings**. 3. Turn on **Feature this post**. 4. Click **Update** or **Publish**. If no posts are featured, the Featured section is hidden and the next available homepage section moves up. ### Homepage Intro The intro section is powered by a Ghost page tagged with the internal tag `#homepage-intro`. To create the intro: 1. Create a new page in Ghost Admin. 2. Add the intro text in the editor. 3. If you use images, place one or two image cards inline where they should appear in the sentence. 4. Open **Page settings**. 5. Add the internal tag `#homepage-intro`. 6. Publish the page. Hanoi uses the latest published page with this tag. The page title is not shown in the intro section; only the editor content appears. Images in the intro appear as small inline editorial marks. On desktop, readers can hover an intro image to see a larger preview. If the intro text is too large, go to **Settings → Code Injection → Site Header** in Ghost Admin and add: ```html ``` Change `40px` as needed. ### Homepage Tags The homepage Tags section can show tags automatically, show selected tags, or be hidden. Go to **Settings → Site → Design & branding → Customize → Theme → Homepage** and use the **Homepage tags** setting: 1. **Show up to 20 tags** - shows public tags alphabetically. 2. **Show selected tags** - shows only the slugs you enter. 3. **Hide tags section** - removes the section from the homepage. If you choose **Show selected tags**, copy each tag slug from Ghost Admin and add the slugs to **Homepage tag slugs**, separated by commas with no spaces. Example: ```text design,photography,culture ``` Tag cards use the tag name, feature image, and accent color from Ghost Admin. ### Latest Stories Latest Stories appears automatically and shows up to 12 recent posts. If the Featured section has posts, Latest Stories excludes the five posts shown there. Other featured posts can still appear in Latest Stories. ### Editor's Pick Editor's Pick is a single curated homepage spotlight. To choose a story: 1. Open a post in Ghost Admin. 2. Add the internal tag `#editors-pick`. 3. Publish or update the post. Hanoi shows one post with this internal tag. If that post is already shown in the Featured section, Hanoi uses another `#editors-pick` post instead. ### Site Newsletter The site-wide newsletter section appears before the footer for signed-out visitors when Ghost Members is enabled. To create it: 1. Create a new page in Ghost Admin. 2. Use the page title as the newsletter heading. 3. Add a custom excerpt for the short description. 4. Add a feature image if you want a split image layout. 5. Add the internal tag `#site-newsletter`. 6. Publish the page. The newsletter choices come from Ghost newsletters. Manage them in Ghost Admin under **Settings → Membership → Newsletters**. --- ## Navigation You can add, edit, delete, and reorder the primary navigation menu in Ghost Admin from **Settings → Site → Navigation**. To add a page: 1. Type the label as it should appear. 2. Click the item's **URL** field. 3. Add the page slug after the final **/** and click **Save**. ### Dropdown Menus and Navigation Previews Hanoi supports desktop dropdown menus from Ghost Primary navigation. Add a parent navigation item, then add child items below it by starting the child label with a hyphen and a space. Example: ```text Archive Pages - Tag Page - Tags Directory - Author Page - Authors Directory - All Stories ``` The child links are grouped under the closest parent item above them. If the parent item is only a group label, use `#` as its URL. If the parent should open a real page, use that page URL. On desktop, internal dropdown links can show a preview image. Hanoi uses: 1. Post and page feature images. 2. Tag feature images. 3. Author profile images, with author cover images as a fallback. External links and internal links without images still work as normal text links. The preview is an enhancement, not a required setup step. ### Video Previews in Navigation Navigation previews can also show muted video previews for links to posts using the **Post Video** template. For best results: 1. Use the **Post Video** template on the linked post. 2. Add a native Ghost video card or a YouTube embed to the post. 3. Add a feature image if you want to choose the static preview shown while the video loads. If the video preview cannot play, Hanoi keeps the link usable and shows a static preview when possible. ### Secondary Navigation / Footer Like [Header Navigation](#navigation), you can add the footer navigation links from the Ghost admin **Settings → Site → Navigation**. --- ## Pages Hanoi includes index-style pages for recent posts, older stories, tags, and authors. Latest and Archive are created by the theme `routes.yaml` file. Tags Directory and Authors Directory are Ghost pages that use custom templates. Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). ### Latest Page The [Latest page](https://hanoi.aspirethemes.com/latest/) lives at `/latest/`. It is created by `routes.yaml`, so you do not need to create a Ghost page for it. Readers see recent posts in the standard post grid. The hero uses the publication cover image when available, or the site accent color when no cover image is set. Load more appears when there are more posts than the page limit. To add it to navigation: 1. Go to **Settings → Site → Navigation**. 2. Add a label such as `Latest` or `Latest Stories`. 3. Use `/latest/` as the URL. 4. Click **Save**. ### Archive Page The [Archive page](https://hanoi.aspirethemes.com/archive/) lives at `/archive/`. It is created by `routes.yaml`, so you do not need to create a Ghost page for it. Readers see a date-led list of posts. On desktop, each row can show the post feature image on hover. The hero uses the site accent color when one is set. To add it to navigation: 1. Go to **Settings → Site → Navigation**. 2. Add a label such as `Archive` or `All Stories`. 3. Use `/archive/` as the URL. 4. Click **Save**. ### Tags Directory The [Tags Directory page](https://hanoi.aspirethemes.com/tags/) shows up to 100 public tags. To create it: 1. Create a new page in Ghost Admin. 2. Use a title like `Tags`. 3. Add a custom excerpt if you want intro text below the title. 4. Add a feature image if you want a media hero. 5. Open **Page settings**. 6. Select the **Tags Directory** template. 7. Publish the page. Hanoi shows the page title, custom excerpt, feature image, and public tags ordered by name. ### Authors Directory The [Authors Directory page](https://hanoi.aspirethemes.com/authors/) shows authors who have published posts. To create it: 1. Create a new page in Ghost Admin. 2. Use a title like `Authors`. 3. Add a custom excerpt if you want intro text below the title. 4. Add a feature image if you want a media hero. 5. Open **Page settings**. 6. Select the **Authors Directory** template. 7. Publish the page. Hanoi shows the page title, custom excerpt, feature image, and authors ordered by name. Authors without published posts are hidden. Note for self-hosters If a custom template does not appear in Ghost Admin after uploading the theme, restart Ghost or deactivate and activate the theme again. ### Tag and Author Pages Ghost automatically creates native tag pages at `/tag/tag-slug/`. Hanoi uses each tag's name, description, feature image, and accent color. If a tag has a feature image, Hanoi uses it as the tag hero image. If there is no feature image, the tag accent color can be used as the hero background. Ghost automatically creates native author pages at `/author/author-slug/`. Hanoi uses the author's name, bio, profile image, cover image, location, website, and social links when available. --- ## Post Layouts Hanoi includes the default post layout plus four custom post templates. To choose a layout: 1. Open a post in Ghost Admin. 2. Open **Post settings**. 3. Choose a template from the **Template** dropdown. 4. Click **Update** or **Publish**. ### Default Post Use the default layout for standard articles. It shows the post title, excerpt, metadata, optional feature image, reading tools, content, authors, comments, and related posts. ### Post Hero Use **Post Hero** for image-led stories that need a large media hero with the title over the image. Add a feature image for the hero. Without a feature image, the post opens with a simple centered header. ### Post Fullscreen Use **Post Fullscreen** for stories where the opening image should fill the first viewport. Add a feature image for the fullscreen hero. Without a feature image, the post opens with a simple centered header. ### Post Split Use **Post Split** for stories that need a split opening: image on one side, title and metadata on the other. Add a feature image for the split media. Without a feature image, the post opens with a simple centered header. ### Post Video Use **Post Video** for stories where video is the lead media. The first eligible native Ghost video card or YouTube embed in the post content is promoted into the top video area. The article body remains readable below it. --- ## Video Stories and Previews Hanoi supports video in three places: video story pages, post cards, and navigation previews. ### Create a Video Story 1. Open a post in Ghost Admin. 2. Add a native Ghost video card or a YouTube embed to the post content. 3. Open **Post settings**. 4. Choose the **Post Video** template. 5. Add a feature image to use as the video poster before playback. 6. Publish or update the post. Hanoi uses the first eligible video in the post content as the top video. The original video card is removed from the visible article flow so the video does not appear twice. ### Video Previews Posts using the **Post Video** template can show muted previews in post cards, the Featured section, Editor's Pick, and navigation previews. Video previews are an enhancement. Readers can still open the post normally if a preview cannot play. ### Supported Video Sources For the video story layout and previews, use: 1. Native Ghost video cards. 2. YouTube embeds. Other embeds may still appear in post content, but they are not treated as Hanoi video preview sources. --- ## Membership and Newsletters Hanoi uses Ghost Memberships, Portal, paid content, comments, and newsletters directly. When Members is enabled: 1. Signed-out visitors see a **Subscribe** link in the header. 2. Signed-in members see an **Account** link. 3. Member-only posts show an upgrade or subscribe prompt when needed. 4. The site newsletter section can appear before the footer when a newsletter page exists. ### Disable Membership Components To remove membership links and forms from the theme, disable membership access in Ghost Admin. 1. Go to **Settings → Membership → Access**. 2. Select **Nobody**. 3. Click **Save**. ### Newsletter Setup Notes Newsletter choices come from Ghost newsletters, not theme settings. Manage them in Ghost Admin under **Settings → Membership → Newsletters**. To create the visible site newsletter section, follow the [Site Newsletter](#site-newsletter) setup. If the section does not appear, check that Members is enabled, you are signed out, and the `#site-newsletter` page is published. ### Remove Ghost Portal / The Bottom Right Button This is the Ghost Portal button. You can disable it in Ghost Admin. Learn more in [Portal Look and feel](https://ghost.org/help/setup-members/#look-and-feel). Membership Troubleshooting Tips If the subscribe form shows an error, check these items first: Make sure your site is running the latest version of Ghost. If you self-host Ghost, configure the [mail settings](https://docs.ghost.org/config#mail) and restart your server. Make sure the Ghost config URL matches the public URL readers use to visit your site, as described in the [Ghost docs](https://docs.ghost.org/config#url). Use the full public URL. If your site uses a subpath, enter the full path, such as `https://example.com/blog/`. If SSL is enabled, use `https://`. If the issue continues on Ghost(Pro), contact Ghost support. If you self-host, contact your hosting provider. Membership email delivery and server configuration are handled by Ghost or your host, not by the theme. For more information about Members, connecting Stripe, and setting the package price, check the [official Ghost documentation](https://ghost.org/help/setup-members/). --- ## Search Hanoi uses the [Ghost Native Search](https://docs.ghost.org/themes/search). Ghost search uses post titles and excerpts from the 10,000 most recent posts. It does not search the full body of every post. --- ## Comments The theme comes with [Ghost Native Comments](https://ghost.org/changelog/native-comments/) integration. You can turn the comments on from your Ghost admin **Settings → Membership → Access**. [Learn more about Ghost comments](https://ghost.org/help/commenting/). [Ghost developer documentation for comments](https://docs.ghost.org/themes/helpers/data/comments). --- ## Reader Tools Hanoi includes quiet article tools for long-form reading. ### Reading Progress Post pages show a reading progress bar at the top of the page. ### Voice Reader The **Listen** button reads the post aloud. By default, it uses the browser and operating system speech voices, so voice quality can vary. ### Text Size The text-size controls let readers adjust the article reading size while staying on the page. Hanoi remembers the choice in the reader's browser. ### Comments Drawer When Ghost comments are enabled, Hanoi opens comments in a side drawer from the post action bar. Direct links to `#comments` open the same comments area. ### Sharing The Share action opens Ghost's native share modal. ### Image Lightbox Unlinked post images, gallery images, and supported feature images can open in Hanoi's image viewer. Linked images keep their normal link behavior. --- ## Social Links Hanoi uses Ghost social accounts. Go to **Settings → General → Social accounts** and add the URLs you want to show. Social links can appear in: 1. The homepage intro section. 2. The footer. --- ## Languages Hanoi includes translation files for: ```text da, de, en, es, fi, fr, he, it, nl, pt, pt-BR, tr ``` ### Theme Translation To use one of the included translations, go to **Settings → General → Publication language** and enter the language code. For example: ```text fr ``` Then click **Save settings**. Source: https://aspirethemes.com/docs/hanoi --- Resource: https://aspirethemes.com/docs/hue.md # Hue Ghost Theme — Documentation > Set up Hue's podcast homepage, episode pages, embedded players, listening links, memberships, and dark mode. - Canonical page: [Hue Ghost Theme — Documentation](https://aspirethemes.com/docs/hue) - Theme version: 1.1.2 - Theme last updated: 27-08-2025 --- ## Theme Installation 1. Log in to your Ghost website admin (*example.com/ghost*). 2. Click the **settings** icon ( ) at the bottom of the left-hand side. 3. Go to **Site > Theme**. 4. Click **Change theme**. 5. Click **Upload theme**. 6. Select the *hue.zip* theme file. 7. When the upload finishes, click **Activate**. --- ## Upload the routes.yaml File (⚑ Required) The `routes.yaml` is required for the following reasons: - Show the posts tagged with the `podcast` tag on the homepage - Show the posts tagged with the `blog` tag on the blog page After you upload the theme ZIP, upload the routes file: Before you upload Uploading this file replaces your site's current routes. Download your current `routes.yaml` from the **Routes** section first. If you have custom routes, preserve them in the new file before uploading. [Contact Aspire Themes](https://aspirethemes.com/contact) if you need help combining the files. 1. Unzip the *hue.zip* theme file. 2. In Ghost Admin, go to **Settings → Advanced → Labs**. 3. Click **Open**. 4. Select **Beta features**. 5. In the **Routes** section, click **Upload routes file**. 6. Select and upload the `routes.yaml` file from the extracted theme folder. --- ## Members / Subscriptions Hue includes several membership interface elements. - *Log in* and *Subscribe* buttons in the header - Homepage Hero section subscription form - A call-to-action on post pages encouraging visitors to subscribe when a post is members-only ### Disable Membership Components To remove membership links and forms from the theme, disable membership access in Ghost Admin. 1. Go to **Settings → Membership → Access**. 2. Select **Nobody**. 3. Click **Save**. ### Remove ‘Public’, ‘Members’ and ‘Paid’ Labels from Post Card Add the following CSS in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` Click **Save**. ### Remove Ghost Portal / The Bottom Right Button This is the Ghost Portal button. You can disable it in Ghost Admin. Learn more in [Portal Look and feel](https://ghost.org/help/setup-members/#look-and-feel). Membership Troubleshooting Tips If the subscribe form shows an error, check these items first: Make sure your site is running the latest version of Ghost. If you self-host Ghost, configure the [mail settings](https://docs.ghost.org/config#mail) and restart your server. Make sure the Ghost config URL matches the public URL readers use to visit your site, as described in the [Ghost docs](https://docs.ghost.org/config#url). Use the full public URL. If your site uses a subpath, enter the full path, such as `https://example.com/blog/`. If SSL is enabled, use `https://`. If the issue continues on Ghost(Pro), contact Ghost support. If you self-host, contact your hosting provider. Membership email delivery and server configuration are handled by Ghost or your host, not by the theme. For more information about Members, connecting Stripe, and setting the package price, check the [official Ghost documentation](https://ghost.org/help/setup-members/). --- ## Home Hero The hero section shows the following components: - Publication cover - Site description - Subscription form - [Subscribe list](#subscribe-list) with icons linking to podcast services ### Publication Cover - Settings → Site → Design & branding → Customize → Brand → Publication cover ### Site Description - Settings → General → Title & description You can use basic HTML (links, headings) in the description. The theme renders it automatically. For example: ```htmlA Podcasting Theme for the Ghost CMS with membership and subscription built-in.
``` The site title in the header does not appear in the hero description/tagline. Include it in the description if needed (see example above). ### Subscribe list Hue includes icons for these podcast services: - Apple Podcasts - Overcast - Spotify - YouTube - Pocket Casts - Castro - Breaker - RadioPublic - RSS To update the list: 1. Go to **Settings → Site → Design & branding → Customize → Theme → Homepage**. 2. Add links for the services you use; leave others blank. 3. Click **Save**. The theme file for the icons is `partials/subscribe-list.hbs`. --- ## Pages Manage pages for Homepage, Blog, and Contact. ### Homepage Podcasts Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). Hue lists only posts tagged **podcast** on the homepage. In Ghost admin, create a tag named **podcast**. To show a post on the homepage, add the **podcast** tag. --- ### Blog Page Hue lists posts tagged **blog** on the blog page (`/blog`). In Ghost admin, create a tag named **blog**. To show a post on the blog page, add the **blog** tag. To add the blog link to the site navigation: - Check out the [Navigation](#navigation) section for more information about how to add a new link. - In the **URL** field, set it to `blog` like the following example. --- ### Contact Page To create the Contact page: 1. Create a Formspree form and copy its endpoint from the **Integration** page. 2. In Ghost Admin, create a new page titled "Contact". 3. Add an HTML card and paste the code below. Replace `{form_id}` with the ID from your Formspree endpoint. 4. Publish the page. 5. To add the page to your site menu, follow the [Navigation](#navigation) guide. ```html ``` For more information, check out [How to Add a Contact Form to Your Ghost Blog](https://aspirethemes.com/blog/ghost-contact-form). --- ## RSS Feed URL Ghost [automatically](https://ghost.org/integrations/custom-rss/) generates an RSS feed for every tag. You'll have feeds for posts tagged *blog* and *podcast*. ### Podcast RSS Feed URL For the *podcast* tag, access `/tag/podcast/rss/` (demo: [hue.aspirethemes.com/tag/podcast/rss](https://hue.aspirethemes.com/tag/podcast/rss/)). ### Blog RSS Feed URL For the *blog* tag, access `/tag/blog/rss/` (demo: [hue.aspirethemes.com/tag/blog/rss](https://hue.aspirethemes.com/tag/blog/rss/)). If your website is [private](https://ghost.org/help/site-setup/#advanced-settings), the RSS URL will not function properly. Once your website is made public, the URL will work as expected. --- ## Colors In this section, you will learn about: 1. [Accent color](#accent-color) 2. [Dark mode](#dark-mode) ### Accent Color Change the accent color at **Settings → Site → Design & branding → Customize → Brand → Accent color**. Hue uses the accent color for button backgrounds, Ghost Portal buttons, quote borders, and content links. ### Dark Mode Hue adapts to the reader’s operating system color scheme. Dark mode is enabled by default. You can also toggle dark/light from the header. You can control dark mode with these settings: 1. Disable dark mode entirely and keep the site in light mode. 2. Upload a logo for dark mode. 3. Set a dark mode accent color. Go to **Settings → Site → Design & branding → Customize → Theme → Site wide**. --- ## Navigation You can add, edit, delete, and reorder the navigation menu in Ghost Admin from the **Settings → Site → Navigation**. To include a static page on your navigation menu, follow these steps. First, type the page's name in the label field as you'd like it to appear on your menu. Next, click on the item's **URL**. The blog URL will already be auto-populated. Add the page slug after the final **/**. When satisfied with your page configurations, click the **Save** button. ### Dropdown Add a Hyphen (`-`) followed by a space before the navigation **Label** to add a dropdown menu. In this example, Contact will be the parent item with Blog and Archive as child items. ### Secondary Navigation / Footer Like [Header Navigation](#navigation), you can add the footer navigation links from the Ghost admin **Settings → Site → Navigation**. --- ## Search Hue uses the [Ghost Native Search](https://docs.ghost.org/themes/search). Ghost search uses post titles and excerpts from the 10,000 most recent posts. It does not search the full body of every post. **To remove search:** 1. Go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Site wide** 2. Toggle the **Enable search** option off 3. Click **Save** --- ## Embed Podcasts I don't use a custom player for podcasts, but you can embed the podcast player code in a post. To insert the podcast player into the Ghost editor, you need to get the **EMBED CODE** for that podcast and then add it as an HTML card. To add the **EMBED CODE** to the editor, click on the **+** button and choose the **HTML** card. Then paste the code into the editor field and save your post. --- ## Comments The theme comes with [Ghost Native Comments](https://ghost.org/changelog/native-comments/) integration. You can turn the comments on from your Ghost admin **Settings → Membership → Access**. [Learn more about Ghost comments](https://ghost.org/help/commenting/). [Ghost developer documentation for comments](https://docs.ghost.org/themes/helpers/data/comments). --- ## Posts Per Page The theme displays `6` posts per page by default. To change this in Ghost Admin: 1. Go to **Settings → Site → Theme**. 2. Open the **…** menu next to your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor). 3. Open `package.json` and find `posts_per_page` inside `config`. 4. Replace `6` with the number of posts you want per page. 5. Click **Save**, then **Replace theme** to apply the change. ```json "config": { "posts_per_page": 6 } ``` --- ## Related Posts Related posts section will be visible at the bottom of a post if other posts share the same tags as the current post. --- ## Publication icon You can change the favicon from the Ghost admin **Settings → Site → Design & branding → Customize → Brand → Publication icon**. --- --- ## Footer Social Media Icons Footer social media links are placed in the `partials/social-icons.hbs` file. Ghost supports adding Facebook and Twitter profile URLs from the admin panel. Go to **Settings → General → Social accounts** and add your URLs. This updates the Facebook and Twitter links shown in the footer. Hue supports adding Instagram URL. Go to **Settings → Site → Design & branding → Customize → Theme → Site wide**. --- ## Languages Hue includes multiple languages. You can add your own too. ### Theme Translation Hue supports [Ghost i18n](https://docs.ghost.org/themes/helpers/utility/translate) and comes with **Arabic**, **German**, **Italian**, **Spanish**, **French**, **Finnish**, **Portuguese**, **Dutch**, **Turkish**, and **Danish** translations. To use a language other than English, go to your Ghost admin **Settings → General → Publication language** and enter the [ISO Code](https://ghost.org/help/site-setup/#publication-language) into the **Publication Language** field. The following is a list of the available theme languages with the code to use. - `ar` for Arabic - `da` for Danish - `de` for German - `nl` for Dutch - `en` for English - `es` for Spanish - `fi` for Finnish - `fr` for French - `it` for Italian - `pt` for Portuguese - `tr` for Turkish #### Add a New Language Translation If the theme does not have a translation for your language, follow these steps to add a new language translation. 1. Create a new file using a [code editor](#theme-editing-tools) in the theme’s **locales** folder with the [ISO Language Codes](https://ghost.org/help/site-setup/#publication-language) code. For example, if the new language is Japanese, the ISO code will be `ja` and the file name will be `ja.json`. 2. In the same **locales** folder, open the `en.json` file and copy its content into your new language file. 3. Start translating, as shown in the following [Edit Translation](#edit-translation) section. Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. Now, go to your Ghost admin **Settings → General → Publication language** and enter your language ISO code into the **Publication Language** field. For example, `ja`. Click **Save settings**. *You may want to [restart Ghost or deactivate and activate](https://docs.ghost.org/themes/helpers/utility/translate#7-reactivate-the-theme) the theme again to make the new changes effective.* ### Edit Translation To improve or edit a translation in a specific available language, you can open the language file using a [code editor](#theme-editing-tools) in the `/locales/` theme folder: ```sh |____locales | |____ar.json | |____da.json | |____de.json | |____nl.json | |____en.json | |____es.json | |____fi.json | |____fr.json | |____it.json | |____pt.json | |____tr.json ``` For example, the German translation file looks like this: ```json { "Loading": "Beladung", "Load More": "Mehr Artikel", "Latest Episodes": "Latest Episodes", "Featured Post": "Featured Artikel", "Page Not Found": "Seite nicht gefunden", "Load Comments": "Bemerkungen", "You might also like": "Sie könnten daran interessiert sein", "Authors": "Autoren", "Published with {ghostLink} & {themeLink}": "Veröffentlicht mit {ghostLink} & {themeLink}", "Share on Twitter": "Auf Twitter teilen", "Share on Facebook": "Auf Facebook teilen", "Share on LinkedIn": "Auf LinkedIn teilen", "Share on Pinterest": "Auf Pinterest teilen", "Share via Email": "Teilen Sie per E-Mail", "Copy link": "Link kopieren", "Link copied to clipboard": "Link in die Zwischenablage kopiert", "Search": "Suche", "Comments": "Kommentare", "Paid": "Bezahlt", "Members": "Mitglieder", "Public": "Öffentlichkeit", "Account": "Konto", "Log in": "Einloggen", "Subscribe": "Abonnieren", "Your email address": "Deine E-Mail-Adresse", "Please check your inbox and click the link to complete the login.": "Bitte überprüfen Sie Ihren Posteingang und klicken Sie auf den Link, um die Anmeldung abzuschließen.", "Please check your inbox and click the link to confirm your subscription.": "Bitte überprüfen Sie Ihren Posteingang und klicken Sie auf den Link, um Ihr Abonnement zu bestätigen.", "Please enter a valid email address!": "Bitte geben Sie eine gültige E-Mail-Adresse ein!", "An error occurred, please try again later.": "Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.", "Already have an account?": "Hast du schon ein Konto?", "Don't have an account yet?": "Sie haben noch keinen Account?", "This page is for paying subscribers only": "Diese Seite ist nur für zahlende Abonnenten", "This page is for subscribers only": "Dieser Seite ist nur für Abonnenten", "This page is for subscribers on the ": "Diese Seite ist für Abonnenten der ", "Upgrade your account": "Aktualisieren Sie Ihr Konto" } ``` Each line consists of a left _key_ (`"More Posts"`) and a right _value_ (`"Mehr Artikel"`). The key is plain English that exists in all translation files and **should not be** changed. You should change only the value. If you have any suggestions to improve a current translation or add a new language, please [contact](https://aspirethemes.com/contact) me. Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. ### RTL *RTL* means right to left. Turning on RTL makes the theme readable for languages written from right to left, like Arabic or Hebrew. To enable RTL: 1. Go to **Settings → Site → Theme**. 2. Open the **…** menu beside your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor). 3. Open `default.hbs` and replace `` with ``. 4. Click **Save**, then **Replace theme** to apply the change. Multiple Languages Support The theme supports [Ghost translations](https://docs.ghost.org/themes/helpers/utility/translate) for different languages, which means if you set the site language to French, parts of the theme (e.g., button labels) will appear in French. Multiple languages on a single site are not supported out of the box in Ghost, and the theme does not support this either. --- ## Syntax Highlighting Add a fenced code block with triple backticks ``` before and after the code:
```
pre {
background-color: #f4f4f4;
max-width: 100%;
overflow: auto;
}
```
This renders as the default code block:
```css
pre {
background-color: #f4f4f4;
max-width: 100%;
overflow: auto;
}
```
This renders as a highlighted code block:
` `.
### Prism
The theme uses [Prism.js](https://prismjs.com/){: rel='noopener' } to highlight code blocks.
The [initial Prism package](https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript){: rel='noopener' } includes some languages, like *Markup*, *CSS*, *C-like*, and *JavaScript*.
You can add support for more languages by adding the Prism `autoloader` script, which will automatically load the languages you need. To do this, add the following script to the website admin **Code Injection (Site Footer)**.
```html
```
Click **Save**.
---
## Theme Deploy with GitHub Actions
Hue comes integrated with the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme){: rel='noopener' } GitHub Action. The purpose of the GitHub Action is to take the theme from the GitHub repo and send it to your website.
TEXT HERE
``` Result: **➋ Medium Drop Cap** - CSS class → `u-drop-cap--medium` - Example ↓ ```htmlTEXT HERE
``` Result: **➌ Large Drop Cap** - CSS class → `u-drop-cap--large` - Example ↓ ```htmlTEXT HERE
``` Result: **➍ Block/Small Drop Cap** - CSS class → `u-drop-cap--block-small` - Example ↓ ```htmlTEXT HERE
``` Result: **➎ Block/Medium Drop Cap** - CSS class → `u-drop-cap--block-medium` - Example ↓ ```htmlTEXT HERE
``` Result: **➏ Block/Large Drop Cap** - CSS class → `u-drop-cap--block-large` - Example ↓ ```htmlTEXT HERE
``` Result: To save time each time you create a new drop cap, you can [create it as a snippet](https://ghost.org/changelog/content-snippets/). --- ## Table of Contents Add a table of contents to your posts and pages automatically. The table of contents lists H2 and H3 headings. If no H2/H3 headings are present, the section is hidden. ### Activate on All Posts & Pages The table of contents block is invisible by default. To activate it, go to **Settings → Site → Design & branding → Customize → Theme → Post**. You have two options: 1. Show table of contents on all posts 2. Show table of contents on all pages ### Activate on Individual Posts & Pages Make sure the [Show table of contents on all posts and pages](#activate-on-all-posts--pages) options are not active. Create a new [Internal tag](https://docs.ghost.org/publishing#internal-tag) from the admin **Tags** page and set the Name to: `#table-of-content` You can now assign the `#table-of-content` tag to a post or a page, and the table of contents will only be visible on that specific post or page. Note for fixed header If you are using a [fixed header](#fixed-header), add the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` ### Remove Numbering From Table of Contents Copy and paste the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` --- ## Show Authors The theme lets you control how and where you show authors. ### Article Authors The article page will show Authors info in two places. In the top header, under the title, and near the social sharing icons. To remove, copy and paste the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` And under the article content. To remove, copy and paste the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` ### Post Card Authors To remove, copy and paste the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` --- ## Posts Per Page The theme displays `8` posts per page by default. To change this in Ghost Admin: 1. Go to **Settings → Site → Theme**. 2. Open the **…** menu next to your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor). 3. Open `package.json` and find `posts_per_page` inside `config`. 4. Replace `8` with the number of posts you want per page. 5. Click **Save**, then **Replace theme** to apply the change. ```json "config": { "posts_per_page": 8 } ``` --- ## Related Posts Related posts section will be visible at the bottom of a post if other posts share the same tags as the current post. --- ## Scroll to Top Button The button will appear at the website bottom right after you scroll. Clicking the button will take you to the page top. Visible at large screens. **Activate** The button is invisible by default. Go to **Settings → Site → Design & branding → Customize → Theme → Site wide** and activate the **Show scroll to top button** option. Scroll to Top & Portal buttons If you use the membership Portal, the Scroll to Top and the Portal buttons will be in the same place, the bottom right of your website. You might not see the Scroll to Top button as it will be behind the Portal one. Decide which one to keep. --- ## Publication icon You can change the favicon from the Ghost admin **Settings → Site → Design & branding → Customize → Brand → Publication icon**. --- --- ## Sidebar Social Media Icons Ghost supports adding Facebook and Twitter profile URLs from the admin panel. Go to **Settings → General → Social accounts** and add your URLs. This will update Facebook and Twitter URLs within the sidebar social media section. Krabi supports adding Instagram, YouTube, Pinterest, Bluesky, Threads, Mastodon, TikTok, and LinkedIn URLs. Go to **Settings → Site → Design & branding → Customize → Theme → Site wide**. --- ## Languages Krabi includes multiple languages. You can add your own too. ### Theme Translation Krabi supports [Ghost i18n](https://docs.ghost.org/themes/helpers/utility/translate) and comes with **Arabic**, **Romanian**, **German**, **Italian**, **Spanish**, **French**, **Finnish**, **Portuguese**, **Dutch**, **Turkish**, and **Danish** translations. To use a language other than English, go to **Settings → General → Publication language** and enter the [ISO code](https://ghost.org/help/site-setup/#publication-language) into the **Publication Language** field. The following is a list of the available theme languages with the code to use. - `ro` for Romanian - `ar` for Arabic - `da` for Danish - `de` for German - `en` for English - `es` for Spanish - `fi` for Finnish - `fr` for French - `it` for Italian - `nl` for Dutch - `pt` for Portuguese - `tr` for Turkish #### Add a New Language Translation If the theme does not have a translation for your language, follow these steps to add a new language translation. 1. Create a new file using a [code editor](#theme-editing-tools) in the theme’s **locales** folder with the [ISO Language Codes](https://ghost.org/help/site-setup/#publication-language) code. For example, if the new language is Japanese, the ISO code will be `ja` and the file name will be `ja.json`. 2. In the same **locales** folder, open the `en.json` file and copy its content into your new language file. 3. Start translating, as shown in the following [Edit Translation](#edit-translation) section. Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. Now, go to your Ghost admin **Settings → General → Publication language** and enter your language ISO code into the **Publication Language** field. For example, `ja`. Click **Save settings**. *You may want to [restart Ghost or deactivate and activate](https://docs.ghost.org/themes/helpers/utility/translate#7-reactivate-the-theme) the theme again to make the new changes effective.* ### Edit Translation To improve or edit a translation in a specific available language, you can open the language file using a [code editor](#theme-editing-tools) in the `/locales/` theme folder: ```sh |____locales | |____ro.json | |____ar.json | |____da.json | |____de.json | |____en.json | |____es.json | |____fi.json | |____fr.json | |____it.json | |____nl.json | |____pt.json | |____tr.json ``` For example, the German translation file — `de.json` — looks like this: ```json { "Skip to content": "Zum Inhalt springen", "Scroll to Top": "Nach oben scrollen", "Table of Contents": "Inhaltsverzeichnis", "Loading": "Wird geladen", "More Posts": "Weitere Artikel", "Recent Posts": "kürzliche Artikel", "Featured Posts": "Beliebte Beiträge", "Page Not Found": "Seite nicht gefunden", "You might also like": "Das könnte Sie auch interessieren:", "Latest": "Neueste", "Authors": "Autoren", "Navigation": "Navigation", "Newsletter": "Newsletter", "Published with {ghostLink} & {themeLink}": "Veröffentlicht mit {ghostLink} & {themeLink}", "Share on Twitter": "Auf Twitter teilen", "Share on Facebook": "Auf Facebook teilen", "Share on LinkedIn": "Auf LinkedIn teilen", "Share on Pinterest": "Auf Pinterest teilen", "Share via Email": "Per E-Mail teilen", "Copy link": "Link kopieren", "Link copied to clipboard": "Link in die Zwischenablage kopiert", "Search": "Suche", "Comments": "Kommentare", "Paid": "Bezahlt", "Members": "Mitglieder", "Public": "Öffentlichkeit", "Account": "Konto", "Log in": "Einloggen", "Subscribe": "Abonnieren", "Subscribe Now": "Abonniere jetzt", "Your email address": "Deine E-Mail-Adresse", "{siteTitle} Newsletter": "{siteTitle} Newsletter", "Please check your inbox and click the link to complete the login.": "Bitte überprüfen Sie Ihren Posteingang und klicken Sie auf den Link, um die Anmeldung abzuschließen.", "Please check your inbox and click the link to confirm your subscription.": "Bitte überprüfen Sie Ihren Posteingang und klicken Sie auf den Link, um Ihr Abonnement zu bestätigen.", "Please enter a valid email address!": "Bitte geben Sie eine gültige E-Mail-Adresse ein!", "An error occurred, please try again later.": "Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.", "Already have an account?": "Hast du schon ein Konto?", "Don't have an account yet?": "Sie haben noch keinen Account?", "This post is for paying subscribers only": "Dieser Beitrag ist nur für zahlende Abonnenten", "This post is for subscribers only": "Dieser Beitrag ist nur für Abonnenten", "This post is for subscribers on the ": "Dieser Beitrag ist für Abonnenten der ", "This page is for paying subscribers only": "Diese Seite ist nur für zahlende Abonnenten", "This page is for subscribers only": "Dieser Seite ist nur für Abonnenten", "This page is for subscribers on the ": "Diese Seite ist für Abonnenten der ", "Upgrade your account": "Aktualisieren Sie Ihr Konto", "Join the newsletter to receive the latest updates in your inbox.": "Treten Sie dem Newsletter bei, um die neuesten Updates in Ihrem Posteingang zu erhalten" } ``` Each line has a left _key_ (`"More Posts"`) and a right _value_ (`"Mehr Artikel"`). The key is plain English used across all translation files and **should not be** changed. Update only the value. If you have any suggestions to improve a current translation or add a new language, please [contact](https://aspirethemes.com/contact) me. ### RTL *RTL* means right to left. Turning on RTL makes the theme readable for languages written from right to left, like Arabic or Hebrew. To enable RTL: 1. Go to **Settings → Site → Theme**. 2. Open the **…** menu beside your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor). 3. Open `partials/head.hbs` and replace `` with ``. 4. Click **Save**, then **Replace theme** to apply the change. Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. Multiple Languages Support The theme supports [Ghost translations](https://docs.ghost.org/themes/helpers/utility/translate) for different languages, which means if you set the site language to French, parts of the theme (e.g., button labels) will appear in French. Multiple languages on a single site are not supported out of the box in Ghost, and the theme does not support this either. --- ## Syntax Highlighting Add a fenced code block by wrapping your code with triple backticks. For example: ``` pre { background-color: #f4f4f4; max-width: 100%; overflow: auto; } ``` This renders as a plain code block: To enable syntax highlighting, add a language alias (e.g., `css` or `js`) after the opening backticks. For example: ```css pre { background-color: #f4f4f4; max-width: 100%; overflow: auto; } ``` This renders with syntax highlighting: For **inline code**, wrap text in single backticks. ### Prism The theme uses [Prism.js](https://prismjs.com/) to highlight code blocks. The [initial Prism package](https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript) includes some languages, like *Markup*, *CSS*, *C-like*, and *JavaScript*. You can add support for more languages by adding the Prism `autoloader` script, which will automatically load the languages you need. To do this, add the following script to the website admin **Code Injection (Site Footer)**. ```html ``` Click **Save**. --- ## Post Feature Image Size An image width of (`692px` × `390px`) would fit the homepage cards and the post header. You can also use an image with a double size (`1384px` × `780px`) for a high-resolution image preview. --- ## Footnotes Ghost has limited support for footnotes, which means it doesn’t support footnotes outside of the editor [Markdown card](https://ghost.org/help/using-markdown/). So, if your article content is in Markdown, this will work fine for you. To create a footnote, check out the [Markdown Guide – Footnotes](https://markdownguide.offshoot.io/extended-syntax/#footnotes) for more information about the syntax. You can see how the theme renders footnotes in the [demo](https://krabi.aspirethemes.com/elements/#footnotes). In the editor, add a new Markdown card and place your footnote inside it. The theme renders whatever the editor supports; there is no additional footnote support beyond what Ghost provides. Check out this [Forum discussion](https://forum.ghost.org/t/footnote-support-in-editor/1521) for more information and probably [some](https://forum.ghost.org/t/footnote-support-in-editor/1521/32) ideas and [workarounds](https://forum.ghost.org/t/footnote-support-in-editor/1521/3). The theme does not add any footnotes functionality beyond Ghost’s Markdown implementation. --- ## Theme Deploy with GitHub Actions Krabi comes integrated with the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub Action. The purpose of the GitHub Action is to take the theme from the GitHub repo and send it to your website. I have written about this in [How to Deploy Your Ghost Theme Using GitHub Actions](https://aspirethemes.com/blog/deploy-ghost-theme). All you need to do is follow steps **1** and **2**. The Deploy Ghost Theme Action is maintained by Ghost and works with any Ghost install, whether you self-host Ghost or use Ghost Pro. --- ## Code Injection Another choice for customization is to use the **Code Injection** settings in Ghost admin. For a CSS example, you can use the following code in the Ghost admin [Code Injection](#code-injection) Site Header to change the logo color and font size. ```html ``` Watch the following short video about Ghost Code Injection, how it works, and how to use it. Check out [How to use Code Injection](https://ghost.org/tutorials/use-code-injection-in-ghost/) Ghost guide for more information. --- ## Changing Colors Learn how to change the site accent color and adjust the theme color scheme using CSS variables. ### Set Accent Color Change the accent color in Ghost admin: **Settings → Site → Design & branding → Customize → Brand → Accent color**. The accent color is used throughout the theme (e.g., button backgrounds, quote borders). The Krabi demo accent color is #5869DA. ### Changing Colors with CSS Variables Use CSS in the Ghost admin [Code Injection](#code-injection) Site Header to change other theme colors via CSS variables. For the list of available theme color variables, see `assets/sass/settings/_colors.scss` — don't change colors in this file; use it only as a reference. Override values via Code Injection as shown below. The `_colors.scss` looks like this: ```css :root { --color-text-primary: #000C2D; --color-text-secondary: #687385; --color-text-white: #FFFFFF; --color-text-error: #A01F1F; --color-text-success: #085E38; --color-background-primary: #F5F7F9; --color-background-secondary: #FFFFFF; --color-background-info: #F3F6FF; --color-background-success: #ECFDF5; --color-background-warning: #FFFAF2; --color-background-danger: #FDF4F4; --color-border-primary: #DFE3E9; --color-border-info: #3366FF; --color-border-success: #52BD95; --color-border-warning: #FFB020; --color-border-danger: #D14343; --color-subscribe-form-icon: #021637; --color-background-subscribe-form: var(--color-text-primary); } ``` To change a color, override the corresponding variable. For example, to change secondary text color, add this in the Ghost admin [Code Injection](#code-injection) Site Header: ```html ``` To add a color not covered by existing variables, create a new CSS variable and assign it a value. For example, extend the previous snippet to add a new logo color and apply it to `.c-logo__link`: ```html ``` The logo link will then be blue (`#0000FF`). --- ## Customize Image Height Customize image aspect ratios on the homepage and post pages with the following CSS. For a single post image, the theme default is `56.25%` (16:9). You can change this value to match your preference. ```css .c-post-media__wrap:after { padding-bottom: 56.25%; } ``` For homepage cards, the theme default is also `56.25%`. ```css .c-post-card__image-wrap { padding-top: 56.25%; } ``` Add under [Code Injection](#code-injection) (Site Header): ```html ``` You can also change the image `object-fit` to `contain`. Single post image: ```html ``` Homepage cards: ```html ``` --- ## Customize Logo Size If you are using an image as a logo (instead of the site name) and want to change the logo size, use the following code in [Code Injection](#code-injection). ```html ``` The default value is `32px`, so you can increase this value to match your preference. If the logo image has a large white space around it, trim that space with a photo editing app before uploading for better results. --- ## Center the layout and remove the sidebar Use Ghost Code Injection to remove the right-hand sidebar. Krabi keeps the main content centered after the sidebar is removed. Choose one of the following options. ### Remove the sidebar from the entire site Add this code to the [Code Injection](#code-injection) **Site Header**: ```html ``` This option removes the sidebar from the homepage, post pages, static pages, and archive pages. ### Remove the sidebar from post pages only Add this code to the [Code Injection](#code-injection) **Site Header**: ```html ``` This option removes the sidebar from individual post pages. The sidebar remains visible everywhere else. Use only one snippet. Select **Save**. Open your site and confirm that the sidebar is hidden on the intended pages. To restore the sidebar, remove the snippet from the **Site Header** and select **Save**. --- ## Include or Exclude Posts With Specific Tag on Homepage The homepage post list shows all posts. To exclude posts with a specific tag and show everything else, do the following. Open the theme `routes.yaml` file and use the following: ```yaml routes: /: controller: channel filter: tags:-[TAG_SLUG] collections: /: permalink: /{slug}/ template: index taxonomies: tag: /tag/{slug}/ author: /author/{slug}/ ``` Replace `TAG_SLUG` with your tag slug. The tag slug is auto-generated from the tag name; you can find it in the admin **Tag** page settings. Alternatively, to include posts from a specific tag and ignore everything else, change the `filter` value to: ``` filter: tags:[TAG_SLUG] ``` Instead of: ``` filter: tags:-[TAG_SLUG] ``` Note the leading `-` indicates exclusion. To exclude multiple tags, use a comma-separated list (no spaces), for example: ``` filter: tags:-[TAG_SLUG,TAG_SLUG,TAG_SLUG] ``` Or include only specific tags: ``` filter: tags:[TAG_SLUG,TAG_SLUG,TAG_SLUG] ``` Save and [upload the `routes.yaml` file](#upload-the-routesyaml-file--required) to your website. --- ## Customize Sidebar Featured Posts Number To control how many featured posts to show on the sidebar widget, do the following. 1. Open the `/partials/sidebar-featured-posts.hbs` theme file using a [code editor](#theme-editing-tools). 2. Change the `limit` from the current value, `3` to another number. Use `all` to show featured posts up to Ghost’s query limit (normally 100). Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. To make a post as featured, you can do that from the **Post settings** by checking the **Feature this post** checkbox. --- ## Show Full Post Content Instead of an Excerpt on the Homepage Open `partials/post-card.hbs` and replace line `30` with: ```htmlCreate a subscription Ghost blog with a beautiful & minimalist design.
``` The website's title, which appears on the header, will not be automatically visible in the hero description/tagline. Instead, you can add it as part of the blog description, like the example above. If you want to add the above [HTML/hero description](#site-description) in the theme file, open the `partials/hero.hbs` theme file using a [code editor](#theme-editing-tools) and add your custom description instead of file line **5**. --- ### Remove Home Hero Section If you want to completely remove the Hero section, open `index.hbs` file and remove line `4` ``. ### Changing Hero Background Color To change the home hero background color, add the following CSS snippet in the Ghost admin [Code Injection](#code-injection) Site Header and replace `YOUR_COLOR_HERE` with your [HTML color code](https://htmlcolors.com/), e.g., `#942d76`; ```html ``` Click **Save**. If you want to change the color for dark and light modes, use the following code and replace `YOUR_LIGHT_COLOR_HERE` and `YOUR_DARK_COLOR_HERE` with your colors. ```html ``` Notice that I duplicated the variable for dark mode in two blocks. ### Replace Hero Subscribe Form with a Subscribe Button Replace the hero subscribe form with a Subscribe button (opens Ghost Portal) using the steps below. Open the `partials/hero.hbs` theme file using a [code editor](#theme-editing-tools), and replace line `10` with the following: ```html
```
pre {
background-color: #f4f4f4;
max-width: 100%;
overflow: auto;
}
```
This will produce the following gray look:
```css and ``` as follows:
```css
pre {
background-color: #f4f4f4;
max-width: 100%;
overflow: auto;
}
```
This will produce the following colored look:
` `.
### Prism
The theme uses [Prism.js](https://prismjs.com/){: rel='noopener' } to highlight code blocks.
The [initial Prism package](https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript){: rel='noopener' } includes some languages, like *Markup*, *CSS*, *C-like*, and *JavaScript*.
You can add support for more languages by adding the Prism `autoloader` script, which will automatically load the languages you need. To do this, add the following script to the website admin **Code Injection (Site Footer)**.
```html
```
Click **Save**.
---
## Post Feature Image Size
An image width of (`1320px` × `742px`) would fit the homepage cards and the post header.
You can also use an image with a double size (`2640px` × `1484px`) for a high-resolution image preview.
---
## Footnotes
Ghost has limited support for footnotes, which means it doesn’t support footnotes outside of the editor [Markdown card](https://ghost.org/help/using-markdown/). So, if your article content is in Markdown, this will work fine for you.
To create a footnote, check out the [Markdown Guide – Footnotes](https://markdownguide.offshoot.io/extended-syntax/#footnotes) for more information about the syntax. You can see how the theme renders footnotes in the [demo](https://penang.aspirethemes.com/elements/#footnotes). In the editor, add a new Markdown card and place your footnote inside it.
The theme renders whatever the editor supports; there is no additional footnote support beyond what Ghost provides.
Check out this [Forum discussion](https://forum.ghost.org/t/footnote-support-in-editor/1521) for more information and probably [some](https://forum.ghost.org/t/footnote-support-in-editor/1521/32) ideas and [workarounds](https://forum.ghost.org/t/footnote-support-in-editor/1521/3).
The theme does not add any footnotes functionality beyond Ghost’s Markdown implementation.
---
## Theme Deploy with GitHub Actions
Penang comes integrated with the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme){: rel='noopener' } GitHub Action. The purpose of the GitHub Action is to take the theme from the GitHub repo and send it to your website.
TEXT HERE
``` Result: **➋ Large Drop Cap** - CSS class → `u-drop-cap-large` - Example ↓ ```htmlTEXT HERE
``` Result: To save time, you can [create it as a snippet](https://ghost.org/changelog/content-snippets/). ## Changing Theme Typeface Petra is using one typeface, [**DM Sans**](https://fonts.google.com/specimen/DM+Sans). The theme loads **DM Sans** using Google Fonts in `partials/typography.hbs`. It is then assigned as a CSS variable with system fonts as backups, as follows: ```css :root { --font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; } ``` To change the typeface to any from Google Fonts, use **[Code Injection](#code-injection) Site Header**. For example, to use the [**Roboto**](https://fonts.google.com/specimen/Roboto) typeface from Google Fonts, your **Code Injection** might look like this: ```html ``` If you have a custom typeface, check out the [Loading Custom Typeface](#loading-custom-typeface) section below. You might find the following posts helpful as well: - [How to Change a Ghost Theme Font Using Google Fonts](https://aspirethemes.com/blog/google-font-ghost-theme) - [How to Change Fonts in Ghost’s Casper Theme with Google Fonts](https://aspirethemes.com/blog/casper-google-fonts) --- ## Loading Custom Typeface I assume you have the font files and the initial `@font-face` CSS code for loading the font. Something similar to the following code. ```css @font-face { font-family: 'Atyp'; src: local('Atyp Text Regular'), local('Atyp-Text-Regular'), url('AtypText-Regular.woff2') format('woff2'), url('AtypText-Regular.woff') format('woff'), url('AtypText-Regular.ttf') format('truetype'); font-weight: 400; font-style: normal; } ``` ➊ Create a new folder in the theme under `/assets` and name it `fonts`, for example, then copy your font files there. ➋ Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. ➌ In the Ghost admin [Code Injection](#code-injection) Site Header, add your `@font-face` code with the new font files path wrapped in the ` ``` Watch the following short video about Ghost Code Injection, how it works, and how to use it. Check out [How to use Code Injection](https://ghost.org/tutorials/use-code-injection-in-ghost/) Ghost guide for more information. --- ## Customize Logo Size If you are using an image as a logo (instead of the site name) and want to change the logo size, use the following code in [Code Injection](#code-injection). ```html ``` The default value is `40px`, so you can increase this value to match your preference.Your opening paragraph...
``` --- ## Homepage Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). Siwa shows sections in this order: introduction, testimonials, Featured, and Latest Stories. A [newsletter section](#site-newsletter) can appear before the footer. ### Introduction Create a page to control the text and media at the top of your homepage. 1. Open **Pages** in Ghost Admin. 2. Create a new page. 3. Enter your introduction heading as the page title. 4. Add paragraphs, buttons, or other content in the editor. 5. Open **Page settings**. 6. Set **Page URL** to `home`. 7. Add an optional **Excerpt**. 8. Add an optional feature image. 9. Publish the page. Open your homepage to see the introduction. An email signup form appears automatically below your introduction when public signup is enabled. It is hidden for signed-in members. To change the introduction background, add an [internal color tag](#section-and-post-card-colors) to the page. If the introduction is missing, check the following: - Confirm that the page is published. - Check that **Page URL** is `home`. - Confirm that Siwa's routes file is uploaded. If the signup form is missing, open **Settings → Membership → Access** and set **Who should be able to subscribe to your site?** to **Public**. View your homepage while signed out. ### Introduction Video 1. Open your `home` page. 2. Add a **Video** card, YouTube embed, or Vimeo embed in the editor. 3. Open **Page settings → Template**. 4. Select **Post Video**. 5. Publish or update the page. The first video appears beside your introduction. Add a feature image to choose the image shown before playback. Select **Play** on the homepage to watch the video with sound. If the video stays in the text column, check that **Post Video** is selected. ### Testimonials Create one page for each reader quote you want to show. 1. Create a page in **Pages**. 2. Enter the person's name as the title. 3. Write the quote in the page body. 4. Open **Page settings**. 5. If needed, add the person's role or company in **Excerpt**. 6. Add the internal tag `#testimonial`. 7. Publish the page. Your quotes appear below the introduction, newest first. Add an [internal color tag](#section-and-post-card-colors) to change a quote's background. ### Featured Posts Siwa shows up to three featured posts. Posts using the **Post Video** template can show a muted autoplay preview in this section. To add a post to the Featured section: 1. Open a post in Ghost Admin. 2. Open **Post settings**. 3. Turn on **Feature this post**. 4. Click **Update** or **Publish**. Use an [internal color tag](#section-and-post-card-colors) to set a card background. ### Latest Stories Latest Stories automatically shows up to six recent posts that are not already shown in Featured. Click the **Latest Stories** heading to go to the Latest page. ### Site Newsletter The site-wide newsletter section appears before the footer for signed-out visitors when Ghost Members is enabled. To create it: 1. Create a new page in Ghost Admin. 2. Use the page title as the newsletter heading. 3. Add a custom excerpt for the short description. 4. Add a feature image if you want a split image layout. 5. Add the internal tag `#newsletters`. 6. Publish the page. The newsletter choices come from Ghost newsletters. Manage them in Ghost Admin under **Settings → Membership → Newsletters**. Add an [internal color tag](#section-and-post-card-colors) to change the section background. If the newsletter section is missing, check that memberships are enabled and the `#newsletters` page is published. The section is hidden for signed-in members. --- ## Navigation You can add, edit, delete, and reorder the primary navigation menu in Ghost Admin from **Settings → Site → Navigation**. To add a page: 1. Type the label as it should appear, such as `About`. 2. Paste the published page's address into the item's **URL** field, such as `https://example.com/about/`. Use your own site's address. 3. Click **Save**. ### Dropdown Menus and Navigation Previews Siwa supports desktop dropdown menus from Ghost Primary navigation. Add a parent navigation item, then add child items below it by starting the child label with a hyphen and a space. For example, use these labels and URLs, replacing the example addresses with your own published page addresses: LabelURL Archive Pages# - Tag Pagehttps://example.com/tag/travel/ - Tags Directoryhttps://example.com/tags/ - Author Pagehttps://example.com/author/alex/ - All Storieshttps://example.com/archive/ Scroll sideways to see both columns. The child links are grouped under the closest parent item above them. If the parent item is only a group label, use `#` as its URL. If the parent should open a real page, use that page URL. On desktop, internal dropdown links can show a preview image. Siwa uses: 1. Post and page feature images. 2. Tag feature images. 3. Author profile images, with author cover images as a fallback. External links and internal links without images still work as normal text links. The preview is an enhancement, not a required setup step. ### Video Previews in Navigation Navigation previews can also show muted video previews for links to posts using the **Post Video** template. For best results: 1. Use the **Post Video** template on the linked post. 2. Add a native Ghost video card, YouTube embed, or Vimeo embed to the post. 3. Add a feature image if you want to choose the static preview shown while the video loads. If the video preview cannot play, Siwa keeps the link usable and shows a static preview when possible. ### Secondary Navigation / Footer Like [Header Navigation](#navigation), you can add the footer navigation links from the Ghost admin **Settings → Site → Navigation**. --- ## Pages Siwa includes index-style pages for recent posts, older stories, and tags. Latest and Archive are created by the theme `routes.yaml` file. Tags Directory is a Ghost page that uses a custom template. Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). ### Latest Page The [Latest page](https://siwa.aspirethemes.com/latest/) lives at `/latest/`. It is created by `routes.yaml`, so you do not need to create a Ghost page for it. Readers see recent posts in the standard post grid. Load more appears when there are more posts than the page limit. To add it to navigation: 1. Go to **Settings → Site → Navigation**. 2. Add a label such as `Latest` or `Latest Stories`. 3. Use `/latest/` as the URL. 4. Click **Save**. ### Archive Page The [Archive page](https://siwa.aspirethemes.com/archive/) lives at `/archive/`. It is created by `routes.yaml`, so you do not need to create a Ghost page for it. Readers see a date-led list of posts. On desktop, each row can show the post feature image on hover. To add it to navigation: 1. Go to **Settings → Site → Navigation**. 2. Add a label such as `Archive` or `All Stories`. 3. Use `/archive/` as the URL. 4. Click **Save**. ### Tags Directory The [Tags Directory page](https://siwa.aspirethemes.com/tags/) shows up to 100 public tags. To create it: 1. Create a new page in Ghost Admin. 2. Use a title like `Tags`. 3. Add a custom excerpt if you want intro text below the title. 4. Add a feature image if you want a media hero. 5. Open **Page settings**. 6. Select the **Tags Directory** template. 7. Publish the page. 8. Go to **Settings → Site → Navigation**, add a label such as `Tags`, paste the published page's URL, and click **Save**. Siwa shows the page title, custom excerpt, feature image, and public tags ordered by name. Note for self-hosters If a custom template does not appear in Ghost Admin after uploading the theme, restart Ghost or deactivate and activate the theme again. ### Tag and Author Pages Ghost automatically creates native tag pages at `/tag/tag-slug/`. Siwa uses each tag's name, description, feature image, and accent color. Ghost automatically creates native author pages at `/author/author-slug/`. Siwa uses the author's name, bio, profile image, cover image, location, website, and social links when available. --- ## Post Layouts Siwa includes the default post layout plus four custom post templates. To choose a layout: 1. Open a post in Ghost Admin. 2. Open **Post settings**. 3. Choose a template from the **Template** dropdown. 4. Click **Update** or **Publish**. ### Default Post Use the default layout for standard articles. It shows the post title, excerpt, metadata, optional feature image, reading tools, content, authors, comments, and related posts. ### Post Hero Use **Post Hero** for image-led stories that need a large media hero with the title over the image. Add a feature image for the hero. Without a feature image, the post opens with a simple centered header. ### Post Fullscreen Use **Post Fullscreen** for stories where the opening image should fill the first viewport. Add a feature image for the fullscreen hero. Without a feature image, the post opens with a simple centered header. ### Post Split Use **Post Split** for stories that need a split opening: image on one side, title and metadata on the other. Add a feature image for the split media. Without a feature image, the post opens with a simple centered header. ### Post Video Use **Post Video** for stories where video is the lead media. The first supported Ghost video, YouTube embed, or Vimeo embed appears above the article. Follow the [video story setup](#create-a-video-story). --- ## Video Stories and Previews Siwa supports video in the [homepage introduction](#introduction-video), video story pages, post cards, and navigation previews. ### Create a Video Story 1. Open a post in Ghost Admin. 2. Add a native Ghost video card, YouTube embed, or Vimeo embed to the post content. 3. Open **Post settings**. 4. Choose the **Post Video** template. 5. Optionally, add a feature image to choose the image shown before playback. 6. Publish or update the post. Siwa shows the first supported Ghost video, YouTube embed, or Vimeo embed above the article. It hides the original video in the article body so the video appears only once. For Vimeo, copy the complete share link. ### Video Previews Posts using the **Post Video** template can show muted previews in post cards, the Featured section, and navigation previews. Video previews are an enhancement. Readers can still open the post normally if a preview cannot play. ### Supported Video Sources For the video story layout and previews, use: 1. Native Ghost video cards. 2. YouTube embeds. 3. Vimeo embeds. Other embeds may still appear in post content, but they are not treated as Siwa video preview sources. --- ## Membership and Newsletters Siwa uses Ghost Memberships, Portal, paid content, comments, and newsletters directly. When Members is enabled: 1. Signed-out visitors see a **Subscribe** link in the header. 2. Signed-in members see an **Account** link. 3. Member-only posts show an upgrade or subscribe prompt when needed. 4. The [introduction](#introduction) includes an email signup form when public signup is enabled. 5. The [site newsletter section](#site-newsletter) can appear before the footer when a newsletter page exists. ### Disable Membership Components To remove membership links and forms from the theme, disable membership access in Ghost Admin. 1. Go to **Settings → Membership → Access**. 2. Select **Nobody**. 3. Click **Save**. ### Check Signup Open your site in a private window. Subscribe with your email address. Follow the confirmation email to complete signup. ### Remove Ghost Portal / The Bottom Right Button This is the Ghost Portal button. You can disable it in Ghost Admin. Learn more in [Portal Look and feel](https://ghost.org/help/setup-members/#look-and-feel). Membership Troubleshooting Tips If the subscribe form shows an error, check these items first: Make sure your site is running the latest version of Ghost. If you self-host Ghost, configure the [mail settings](https://docs.ghost.org/config#mail) and restart your server. Make sure the Ghost config URL matches the public URL readers use to visit your site, as described in the [Ghost docs](https://docs.ghost.org/config#url). Use the full public URL. If your site uses a subpath, enter the full path, such as `https://example.com/blog/`. If SSL is enabled, use `https://`. If the issue continues on Ghost(Pro), contact Ghost support. If you self-host, contact your hosting provider. Membership email delivery and server configuration are handled by Ghost or your host, not by the theme. For more information about Members, connecting Stripe, and setting the package price, check the [official Ghost documentation](https://ghost.org/help/setup-members/). --- ## Search Siwa uses the [Ghost Native Search](https://docs.ghost.org/themes/search). Ghost search uses post titles and excerpts from the 10,000 most recent posts. It does not search the full body of every post. --- ## Comments The theme comes with [Ghost Native Comments](https://ghost.org/changelog/native-comments/) integration. You can turn the comments on from your Ghost admin **Settings → Membership → Access**. [Learn more about Ghost comments](https://ghost.org/help/commenting/). [Ghost developer documentation for comments](https://docs.ghost.org/themes/helpers/data/comments). --- ## Reader Tools Siwa includes quiet article tools for long-form reading. ### Table of Contents The table of contents appears automatically on posts and pages with H2 or H3 headings. It stays hidden when there are no headings. Click the arrow beside **Table of Contents** to collapse or expand the list. To turn it off site-wide, go to **Settings → Site → Design & branding → Customize → Theme → Post** and turn off **Show table of contents**. To control it on an individual post or page, open **Post settings → Tags** or **Page settings → Tags**: - Add `#table-of-contents-off` to hide it, even when the theme setting is on. - Add `#table-of-contents` to show it when the theme setting is off. Publish or update the post or page. ### Reading Progress Post pages show a reading progress bar at the top of the page. ### Voice Reader The **Listen** button reads the post aloud using your browser's text-to-speech support. No theme setting is required. The browser selects a voice for the page language. Available voices depend on the browser and device. To change the voice: - On macOS, open **System Settings → Accessibility → Read & Speak**, then set **System speech language** and **System voice**. - On Windows, open **Settings → Accessibility → Narrator**, then choose a voice under **Narrator’s voice**. On iPhone, turn off **Silent Mode** if you cannot hear the voice reader. ### Text Size The text-size controls let readers adjust the article reading size while staying on the page. Siwa remembers the choice in the reader's browser. ### Comments Drawer When Ghost comments are enabled, Siwa opens comments in a side drawer from the post action bar. ### Sharing The Share action opens Ghost's native share modal. ### Image Lightbox Unlinked post images, gallery images, and supported feature images can open in Siwa's image viewer. Linked images keep their normal link behavior. ### Inline stocks Show the latest available stock quotes inside posts and pages. Inline symbols display the stock symbol, USD price, percentage change, and a company logo when available. #### Get a Finnhub API key 1. Create or log in to your [Finnhub account](https://finnhub.io/register). 2. Open the [Finnhub dashboard](https://finnhub.io/dashboard). 3. Copy your API key. Finnhub is a separate data service. Check its current [plans and API limits](https://finnhub.io/pricing), then choose one setup option below. #### Direct setup This is the quickest option. Your Finnhub key will be visible in your site's code and browser requests. 1. In Ghost, go to **Settings → Advanced → Code Injection**. 2. Paste this snippet into **Site Header**. 3. Replace `YOUR_FINNHUB_KEY` with your Finnhub API key. 4. Select **Save**. ```html ``` #### Cloudflare setup (recommended) This option keeps your Finnhub key in your Cloudflare account. You need a Cloudflare account and your Finnhub API key. 1. Open the [stock ticker setup](https://aspirethemes.com/stock-ticker/). 2. Connect your Cloudflare account. 3. Enter your Siwa website address and Finnhub API key. 4. Copy the snippet provided by the setup. 5. In Ghost, paste it into **Settings → Advanced → Code Injection → Site Header**. 6. Select **Save**. If you switch from direct setup, remove the direct-key snippet. Siwa uses the gateway when both snippets are present. To connect another site, run setup again using the same Cloudflare account. Existing sites remain connected, and all sites use the Finnhub key you enter. #### Add stock symbols Write an uppercase symbol such as `$AAPL` or `$MSFT` in a normal paragraph, then preview your post or page. For example: ```text This week, I am following $AAPL and $MSFT. ``` Siwa supports US stock symbols with one to five letters. Finnhub availability depends on the symbol and your plan. #### If quotes do not appear Siwa keeps the original symbol readable when a quote cannot load. Check the saved snippet, symbol format, and Finnhub key first. For Cloudflare setup, check that you entered the same website address readers visit. If you reach a provider limit, wait a minute and refresh. If the problem continues, [contact Aspire Themes](https://aspirethemes.com/contact) with your website address and the symbol you used. Keep your API key private. --- ## Social Links Siwa uses Ghost social accounts. Go to **Settings → General → Social accounts** and add the URLs you want to show. Social links can appear in: 1. The homepage introduction. 2. The footer. --- ## Languages Siwa includes the following translations. ### Theme Translation To change your site language: 1. Go to **Settings → General → Publication language**. 2. Enter the language code in **Publication Language**, such as `fr` for French. 3. Click **Save settings**. The following translations are included: - `da` Danish - `de` German - `en` English (default) - `es` Spanish - `fi` Finnish - `fr` French - `he` Hebrew - `it` Italian - `nl` Dutch - `pt` Portuguese - `pt-BR` Brazilian Portuguese - `tr` Turkish If your language is not included, [contact me](https://aspirethemes.com/contact) about adding a translation. ### Edit Translation To edit an included translation in Ghost Admin: 1. Go to **Settings → Site → Theme**. 2. Open the **…** menu beside your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor). 3. Open the language file in `locales`, such as `locales/de.json` for German. 4. Change the translated text as explained below. 5. Click **Save**, then **Replace theme** to apply the changes. For example, part of the German translation file (`de.json`) looks like this: ```json { "Loading": "Wird geladen", "Load More": "Mehr laden", "Comments": "Kommentare", "Subscribe": "Abonnieren", "Published with {ghostLink} & {themeLink}": "Veröffentlicht mit {ghostLink} & {themeLink}" } ``` Each line consists of a left _key_ (`"Loading"`) and a right _value_ (`"Wird geladen"`). The key is plain English that exists in all translation files and **should not be** changed. Change only the value. Keep placeholders such as `{ghostLink}` and `{themeLink}` unchanged. If you have suggestions to improve a current translation or add a new language, please [contact me](https://aspirethemes.com/contact). Multiple Languages Support The theme supports [Ghost translations](https://docs.ghost.org/themes/helpers/utility/translate) for different languages, which means if you set the site language to French, parts of the theme (e.g., button labels) will appear in French. Multiple languages on a single site are not supported out of the box in Ghost, and the theme does not support this either. Source: https://aspirethemes.com/docs/siwa --- Resource: https://aspirethemes.com/docs/taba.md # Taba Ghost Theme — Documentation > Set up Taba with homepage sections, video publishing, voice reader, custom post layouts, memberships, and Ghost theme settings. - Canonical page: [Taba Ghost Theme — Documentation](https://www.notion.so/30eb78f638d881608ddec173236d6cc9) - Theme version: 1.0.0 - Theme last updated: 11-04-2026 Source: https://www.notion.so/30eb78f638d881608ddec173236d6cc9 --- Resource: https://aspirethemes.com/docs/tripoli.md # Tripoli Ghost Theme — Documentation > Set up Tripoli with homepage sections, featured posts, tag pages, dark mode, memberships, and Ghost theme customization options. - Canonical page: [Tripoli Ghost Theme — Documentation](https://aspirethemes.com/docs/tripoli) - Theme version: 1.1.0 - Theme last updated: 02-05-2026 --- ## Theme Installation 1. Log in to your Ghost website admin (*example.com/ghost*). 2. Click the **settings** icon ( ) at the bottom of the left-hand side. 3. Go to **Site > Theme**. 4. Click **Change theme**. 5. Click **Upload theme**. 6. Select the *tripoli.zip* theme file. 7. When the upload finishes, click **Activate**. --- ## Upload the routes.yaml File (⚑ Required) The `routes.yaml` is required for the following reasons: - [Latest](#hero-section) page - Setup the [RSS URL](#rss-feed-url) After you upload the theme ZIP, upload the routes file: Before you upload Uploading this file replaces your site's current routes. Download your current `routes.yaml` from the **Routes** section first. If you have custom routes, preserve them in the new file before uploading. [Contact Aspire Themes](https://aspirethemes.com/contact) if you need help combining the files. 1. Unzip the *tripoli.zip* theme file. 2. In Ghost Admin, go to **Settings → Advanced → Labs**. 3. Click **Open**. 4. Select **Beta features**. 5. In the **Routes** section, click **Upload routes file**. 6. Select and upload the `routes.yaml` file from the extracted theme folder. --- ## Home Page Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). The home page displays content in three main sections: - [Hero Section](#hero-section) - Featured and latest posts - [Tags Sections](#tags-sections) - Posts grouped by topic - [Editors' Picks Section](#editors-picks-section) - Curated content ### Hero Section The hero section has a three-column layout: **Left & Center Columns**: Shows your 3 most recent featured posts **To feature a post:** 1. Edit your post in Ghost admin 2. Open **Post settings** (gear icon) 3. Check **Feature this post** **Right Column**: Shows your 6 most recent posts (excluding featured ones) Clicking the **Latest** header will take you to the [Latest](https://tripoli.aspirethemes.com/latest/) page, where you can see all the recent posts. **To adjust the number of latest posts:** 1. Go to **Settings → Site → Design & branding → Customize → Theme → Homepage** 2. Set **Number of latest posts** (default: 6) 💡 **Tip**: If the latest column is empty, you may need more posts or fewer featured posts. --- ### Tags Sections Add tag-based content sections to your home page. Each section displays the 4 most recent posts from that tag. **Setup:** 1. Go to **Settings → Site → Design & branding → Customize → Theme → Homepage** 2. In **Tag slugs for home sections**, enter tag slugs separated by commas 3. **Important**: No spaces between commas and slugs **Finding tag slugs:** Go to your Tags page in Ghost admin to find each tag's slug. **Example:** ``` politics,covid,technology,business,sport,life,history,food ``` **Posts per section:** Go to **Settings → Site → Design & branding → Customize → Theme → Homepage** and set **Number of posts for tags home sections** (default: 4). **SEE ALL link:** Appears automatically when a tag has more posts than the display limit, linking to the full tag page. ### Editors' Picks Section Highlight curated content using the internal `#editors-picks` tag. **Create the internal tag:** 1. Go to **Tags** in Ghost admin 2. Click **Internal tags** tab 3. Click **New tag** 4. Name: `#editors-picks` 5. Click **Save** **Tag your posts:** Add the `#editors-picks` tag to posts you want to feature. **Number of posts:** Go to **Settings → Site → Design & branding → Customize → Theme → Homepage** and set **Number of editors picks posts** (default: 3). **Options:** Use a number (e.g., `1`, `2`, `3`), `all` to show posts up to Ghost’s query limit (normally 100), or `none` to hide the section. --- ## Membership Tripoli includes built-in membership features: - **Header links**: Log in and Subscribe buttons - **Member-only posts**: Call-to-action prompts for subscribers ### Disable Membership Components To remove membership links and forms from the theme, disable membership access in Ghost Admin. 1. Go to **Settings → Membership → Access**. 2. Select **Nobody**. 3. Click **Save**. ### Remove Ghost Portal / The Bottom Right Button This is the Ghost Portal button. You can disable it in Ghost Admin. Learn more in [Portal Look and feel](https://ghost.org/help/setup-members/#look-and-feel). Membership Troubleshooting Tips If the subscribe form shows an error, check these items first: Make sure your site is running the latest version of Ghost. If you self-host Ghost, configure the [mail settings](https://docs.ghost.org/config#mail) and restart your server. Make sure the Ghost config URL matches the public URL readers use to visit your site, as described in the [Ghost docs](https://docs.ghost.org/config#url). Use the full public URL. If your site uses a subpath, enter the full path, such as `https://example.com/blog/`. If SSL is enabled, use `https://`. If the issue continues on Ghost(Pro), contact Ghost support. If you self-host, contact your hosting provider. Membership email delivery and server configuration are handled by Ghost or your host, not by the theme. For more information about Members, connecting Stripe, and setting the package price, check the [official Ghost documentation](https://ghost.org/help/setup-members/). --- ## Colors & Themes Customize your site's appearance with accent colors and dark mode options. ### Accent Color 1. Go to **Settings → Site → Design & branding → Customize → Brand** 2. Choose your **Accent color** This color appears in buttons, links, tags, quotes, and navigation elements. ### Dark Mode Tripoli automatically adapts to your visitor's system preferences and includes a manual toggle. 1. Go to **Settings → Site → Design & branding → Customize → Theme → Site wide** 2. Configure these options: - **Enable dark mode** - Turn this off to keep the website in light mode only - **Dark mode publication logo** - Upload a logo to be visible when dark mode is active - **Dark mode accent color** - Set a different accent color for dark mode ⚠️ **Cloudflare Users**: If dark mode toggle isn't working, disable "Rocket Loader" in your Cloudflare settings. ### Changing Colors with CSS Variables *This section is for changing all the theme colors; check the [Accent color](#accent-color) if changing the button's background color is all you want.* Using [Code Injection](#code-injection), you can change the theme colors for the light and dark modes with CSS Variables. For a list of available theme variables, check the following theme files: - Light mode: `assets/sass/tokens/_colors.scss` - Dark mode: `assets/sass/tokens/_colors-dark.scss` *You can open the theme files in a [code editor](#theme-editing-tools), or see the following as a reference.* Light mode variables ```css /* The main text color */ --color-text-primary: #000000; /* The secondary text color, you can see it in post date, author name, for example */ --color-text-secondary: #4E5965; /* Primary border color, you can see it under home page section titles */ --color-border-primary: #000000; /* Secondary border color, you can see it in the header section*/ --color-border-secondary: #D9D9D9; /* Theme main background */ --color-background-primary: #FFFFFF; /* Theme secondary background, you can see it in the home page Editors' Picks, footer, share icons backgrounds */ --color-background-secondary: #EFF8FA; ``` Dark mode variables ```css --color-text-primary: #FFFFFF; --color-text-secondary: #B3B3B3; --color-border-primary: #525252; --color-border-secondary: #303030; --color-background-primary: #181818; --color-background-secondary: #212121; ``` **Don't change the colors in these files; use them only as a reference for the available CSS Variables. Use Code Injection, as mentioned below, to change the colors**. For example, let's change the theme background color. We will change the `--color-background-primary` variable value in this case. You can copy this color variable in the Ghost admin [Code Injection](#code-injection) Site Header and assign it your new color, as in the following example. ```html ``` Notice that we duplicated the variable for dark mode in two blocks. In the above example, we changed the background color for the light mode to `#FAFAFA` and `#000000` for the dark mode. You can do this for any other variable. ### Using Dark Mode Theme Permanently If you prefer the dark aesthetic for your site at all times, you can set the dark theme as your permanent color scheme. 1. Disable dark mode from the [theme settings](#dark-mode). 2. Add your [dark colors](#changing-colors-with-css-variables) in the Ghost admin [Code Injection](#code-injection) Site Header. For example: ```html ``` This will apply the dark color scheme to your site for all visitors regardless of their device or browser preferences. Your site will now have a consistent dark appearance across all devices. ### Color Tools The following are some online websites and tools to help with color inspiration. Please make sure you choose an accessible color scheme; this is important for readers. - [https://www.fffuel.co/cccolor/](https://www.fffuel.co/cccolor/) - [https://coolors.co/](https://coolors.co/) - [https://mdigi.tools/color-shades/](https://mdigi.tools/color-shades/#c5322e) - [http://web-accessibility.carnegiemuseums.org/design/color/](http://web-accessibility.carnegiemuseums.org/design/color/) - [http://colorsafe.co/](http://colorsafe.co/) - [https://clrs.cc/a11y/](https://clrs.cc/a11y/) --- ## Pages Manage pages for Latest, Tags, Authors, and Newsletters. ### Latest Page Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). When you click the [Latest](#hero-section) link in the home page top right column you will go to the Latest page where you can see all the recent posts. The page will have a URL like `example.com/latest`. To change the `/latest` path: 1. Open the theme `routes.yaml` file in a [code editor](#theme-editing-tools) and change the `/latest/` collection path. 2. [Re-upload](#upload-the-routesyaml-file--required) the `routes.yaml` file to Ghost Admin. 3. Open `partials/hero.hbs` and change the `/latest` link to the same path. Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. ### Tags Page The Tags page will automatically pull your website tags. Max 100 tags will be shown. Follow these steps to create the Tags page: 1. From the Ghost admin **Pages** section, create a new page and give it a title, like "Tags". 2. From **Page settings**, select the **Tags** template. 3. Click **Publish** to publish the page. 4. To add the page to the navigation, please check the [Navigation](#navigation) section. Note for Self-hosters If you are self-hosting your website, you may need to do a server restart. This should get the **Tags** option to show up in the **Template** dropdown. To add a unique color for each tag, go to the tag page from your website admin and set the **Color**. If you didn't set the Color, the theme would use the [Accent color](#accent-color) as a fallback. --- ### Authors Page To create the [Authors](https://tripoli.aspirethemes.com/authors/) page: 1. Create a new page and give it a title, like "Authors" 2. From **Page settings**, select the **Authors** template 3. Click **Publish** to publish the page 4. To add the page to the navigation, add it as a [Navigation](#navigation) item with `authors/` as the URL --- ### Archive Page Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). Browse your posts at `/archive/` with a “Load More” button. Items per load follow your site’s [“Posts per page”](#posts-per-page) setting. #### Quick start - Visit: `https://yourdomain.com/archive/` - Click “Load More” to see older posts (appears only if more posts exist). #### Add to Navigation - In Ghost Admin: Settings → Site → Navigation - Under Primary navigation: - Label: Archive - URL: /archive/ - Click Add → Save #### Customize header (optional) - Create a Page titled “Archive”. - Page URL: `archive` - Excerpt: add a short description (optional) - Feature image: add one (optional) - Publish the page **Note:** Only the title, Excerpt, and feature image appear on `/archive/`. The page content is not shown. #### Migration (from older versions before 1.0.9) - Point your navigation link to `/archive/` (example.com/archive) if you are using another URL for your Archive. - Upload the routes.yaml file from the new version to your Ghost site. ([docs](https://aspirethemes.com/docs/tripoli#upload-the-routesyaml-file--required)) #### Troubleshooting - No “Load More” button: there may be no more posts yet - Title didn’t change: ensure the Page with slug `archive` is published and hard refresh --- ### Newsletters Page The [Newsletters](https://tripoli.aspirethemes.com/newsletters/) page lets readers subscribe to specific types of content. The page uses Ghost [Labels](https://ghost.org/changelog/member-labels/). When a reader subscribes to a label, that label appears on the member's profile in Ghost Admin. When you are about to send a newsletter email or publish a post, you can select which Labels you want to send the post to. **Publish the Newsletters page:** 1. Create a new page and give it a title like "Newsletters" 2. From **Page settings**, select the **Newsletters** template 3. Click **Publish** to publish the page 4. To add the page to the navigation, add it as a [Navigation](#navigation) item with `newsletters/` as the URL **Change the default Labels:** The theme comes with default Labels, and you will need to change them to match your preference. Open the theme `/partials/newsletters-labels.hbs` file using a [code editor](#theme-editing-tools) to change them, and you will also find the instructions in the same file. **A note about the Newsletters page** I released the Newsletter Labels just before the Ghost [Multiple Newsletters](https://ghost.org/help/setup-email-newsletters/#using-multiple-newsletters) to help fill this gap and enable people to choose different types of content before they signup. But Ghost created Newsletters as a new section instead of doing this with Labels. The theme Newsletter page with Labels adds Labels to a subscriber, while the Ghost Newsletter updates the profile [NEWSLETTERS](https://ghost.org/resources/sending-email-newsletters/). So, both work differently and update different data. When you send a new post, you can choose a Label or a Newsletter to send the post to. Ghost Newsletters are managed directly in Ghost, and subscribers can change their selections from Portal. Use labels, Ghost Newsletters, or both according to how you segment and send email. --- ## Post Feature Image Size The feature image ideal size to upload is `1336` × `890`. The visible size is `668` × `445` which you can also upload, but double it — if you can — to `1336` × `890` to look sharper on retina displays. The image aspect ratio is set to 3/2, which is ideal for photos. If you have the tools/time to create an image with the right proportions, this will be better, especially for editorial sites and it will look more professional. The theme uses a standard proportion ratio to show your uploaded image, the same as used on websites like NYT. However, you can use the following code as a workaround to fully display the image if you have used small images that might look stretched or are not fully visible. You can add this code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` --- ## Navigation You can add, edit, delete, and reorder the navigation menu in Ghost Admin from the **Settings → Site → Navigation**. ### Add New Page to Navigation First, type the page name as you'd like it to appear on your navigation in the label field. Next, click on the item's **URL**. Add the page slug after the final **/**. Click the **Save** button. ### Secondary Navigation / Footer Like [Header Navigation](#navigation), you can add the footer navigation links from the Ghost admin **Settings → Site → Navigation**. --- ## Search Tripoli uses the [Ghost Native Search](https://docs.ghost.org/themes/search). **To remove search:** 1. Go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Site wide** 2. Toggle the **Enable search** option off 3. Click **Save** --- ## Comments The theme comes with [Ghost Native Comments](https://ghost.org/changelog/native-comments/) integration. You can turn the comments on from your Ghost admin **Settings → Membership → Access**. [Learn more about Ghost comments](https://ghost.org/help/commenting/). [Ghost developer documentation for comments](https://docs.ghost.org/themes/helpers/data/comments). --- ## Table of Contents Add a table of contents to your posts and pages automatically. The table of contents section will show the post headings h2 and h3 supported by the Ghost editor. If none of these headings exist in post content, the table of contents section will be hidden. ### Activate on All Posts & Pages The table of contents is visible by default. Go to Ghost Admin **Settings → Site → Design & branding → Customize → Theme → Post** and deactivate **Enable table of contents**. ### Activate on Individual Posts & Pages Make sure that [show the table of content on all posts and pages](#activate-on-all-posts--pages) options is not active. Create a new [Internal tag](https://docs.ghost.org/publishing#internal-tag) from the admin **Tags** page and set the Name to: `#table-of-content` You can now assign the `#table-of-content` tag to a post or a page, and the table of contents will only be visible to that post or page. --- ## Footer Social Media Links The theme displays the Facebook and Twitter accounts set in Ghost Admin. Go to **Settings → General → Social accounts** and add your URLs. By default, Ghost fills these fields with the Ghost social links. If you don't have Twitter and Facebook, you can remove the default ones, and the icons will disappear from the theme. Tripoli supports adding Instagram, Pinterest, Mastodon, Discord, YouTube, LinkedIn, and Bluesky URLs. Go to **Settings → Site → Design & branding → Customize → Theme → Site wide**. --- ## Languages Tripoli includes translations for 13 languages and supports custom translations. ### Available Languages **To change your site language:** 1. Go to **Settings → General → Publication language** 2. Enter the language code in **Publication Language** **Supported Languages:** - `ar` Arabic - `da` Danish - `de` German - `en` English (default) - `es` Spanish - `fi` Finnish - `fr` French - `it` Italian - `nl` Dutch - `pt` Portuguese - `pt-br` Brazilian Portuguese - `sv` Swedish - `tr` Turkish #### Add a New Language Translation If the theme does not have a translation for your language, follow these steps to add a new language translation. 1. Create a new file using a [code editor](#theme-editing-tools) in the theme’s **locales** folder with the [ISO Language Codes](https://ghost.org/help/site-setup/#publication-language) code. For example, if the new language is Japanese, the ISO code will be `ja` and the file name will be `ja.json`. 2. In the same **locales** folder, open the `en.json` file and copy its content into your new language file. 3. Start translating, as shown in the following [Edit Translation](#edit-translation) section. Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. Now, go to your Ghost admin **Settings → General → Publication language** and enter your language ISO code into the **Publication Language** field. For example, `ja`. Click **Save settings**. *You may want to [restart Ghost or deactivate and activate](https://docs.ghost.org/themes/helpers/utility/translate#7-reactivate-the-theme) the theme again to make the new changes effective.* ### Edit Translation To improve or edit a translation in a specific available language, you can open the language file using a [code editor](#theme-editing-tools) in the `/locales/` theme folder: ```sh |____locales | |____ar.json | |____da.json | |____de.json | |____en.json | |____es.json | |____fi.json | |____fr.json | |____it.json | |____nl.json | |____pt-br.json | |____pt.json | |____sv.json | |____tr.json ``` For example, the German translation file (`de`) looks like this: ```json { "Skip to content": "zum Inhalt", "Table of Contents": "Inhaltsverzeichnis", "Page Not Found": "keine Seite gefunden", "Dark": "Dunkel", "Light": "Hell", "Search": "Suche", "Comments": "Kommentare", "1 min read": "1 Minute Lesedauer", "% min read": "% Minuten Lesedauer", "Share on 𝕏": "auf 𝕏 teilen", "Share on Facebook": "auf Facebook teilen", "Share on LinkedIn": "auf LinkedIn teilen", "Share via Email": "per E-Mail teilen", "Loading": "wird geladen", "Load More": "weitere Artikel", "Featured": "Empfehlungen", "Latest": "Aktuelles", "Archive": "Archiv", "Related": "Weiterführende Artikel", "See all": "Übersicht", "Editors’ Picks": "Unsere Auswahl", "Paid": "Bezahlt", "Members": "Mitglieder", "Public": "Öffentlichkeit", "Account": "Account", "Sign In": "Anmelden", "Subscribe": "Abonnieren", "Email address": "E-Mail Adresse", "Please check your inbox and click the link to confirm your subscription.": "Bitte Posteingang überprüfen und auf den Link klicken, um das Abonnement zu bestätigen.", "Please enter a valid email address.": "Bitte eine gültige E-Mail Adresse eingeben!", "An error occurred, please try again later.": "Ein Fehler ist aufgetreten. Bitte später erneut versuchen.", "This post is for paying subscribers only": "Dieser Beitrag ist nur für zahlende Abonnenten", "This post is for subscribers only": "Dieser Beitrag ist nur für Abonnenten", "This post is for subscribers on the ": "Dieser Beitrag ist für Abonnenten der ", "Upgrade your account": "Bitte den Account aktualisieren", "Already have an account?": "Gibt’s schon einen Account?", "Published with {ghostLink} & {themeLink}": "Veröffentlicht mit {ghostLink} & {themeLink}" } ``` Each line consists of a left _key_ (`"Loading"`) and a right _value_ (`"Wird geladen"`). The key is plain English that exists in all translation files and **should not be** changed. You should change only the value. Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. If you have suggestions to improve a current translation or add a new language, please [contact](https://aspirethemes.com/contact) me. ### RTL *RTL* means right to left. Turning on RTL makes the theme readable for languages written from right to left, like Arabic or Hebrew. To enable the RTL option, go to Ghost Admin **Settings → Site → Design & branding → Customize → Theme → Site wide → Enable right to left layout**. Multiple Languages Support The theme supports [Ghost translations](https://docs.ghost.org/themes/helpers/utility/translate) for different languages, which means if you set the site language to French, parts of the theme (e.g., button labels) will appear in French. Multiple languages on a single site are not supported out of the box in Ghost, and the theme does not support this either. --- ## Posts Per Page The theme displays `16` posts per page by default. To change this in Ghost Admin: 1. Go to **Settings → Site → Theme**. 2. Open the **…** menu next to your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor). 3. Open `package.json` and find `posts_per_page` inside `config`. 4. Replace `16` with the number of posts you want per page. 5. Click **Save**, then **Replace theme** to apply the change. ```json "config": { "posts_per_page": 16 } ``` --- ## Related Posts Related posts section will be visible at the bottom of a post if other posts share the same tags as the current post. --- ## Post Date Tripoli comes with four different date formats: 1. Month - Day - Year (Default) 2. Day - Month - Year 3. Year - Month - Day 4. TimeAgo (for example, “3 days ago”) To change this, go to Ghost Admin **Settings → Site → Design & branding → Customize → Theme → Site wide → Date format**. You can also choose Hide Date to hide the date across the website. If you want to remove the date only from the home page, you can choose a format and then copy and paste the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` --- ## Post Access Label The Post access is where you set the post to be for public, members, … You can see this option from the **Post settings** on each post admin editor. The Post Access Label is visible by default. Go to site admin **Settings → Site → Design & branding → Customize → Theme → Site wide** and deactivate the **Enable post access label** option. --- ## Post Card Excerpt Use a [custom excerpt](https://ghost.org/help/post-settings/#custom-excerpt) to write the short description shown with a post card. You can find this option in the **Post settings** on the editor for each post. The Post Card Excerpt is visible by default. Go to site admin **Settings → Site → Design & branding → Customize → Theme → Site wide** and deactivate the **Enable post card excerpt** option. --- ## Typography Drop Caps The theme comes with different styles of typography drop caps. A drop cap applies to the first letter of the first word in a paragraph. To add a drop cap style to a paragraph: 1. Add an [HTML card](https://ghost.org/help/using-the-editor/#using-the-dynamic-menu) to your post or page content editor. 2. In that HTML card, add a `` HTML element with the drop cap CSS class. For example, ``. See below for the available classes for each style. 3. Add your paragraph text within that `` HTML element. There are currently two styles available. **➊ Small Drop Cap** - CSS class → `u-drop-cap-small` - Example ↓ ```htmlTEXT HERE
``` Result: **➋ Large Drop Cap** - CSS class → `u-drop-cap-large` - Example ↓ ```htmlTEXT HERE
``` Result: To save time, you can [create it as a snippet](https://ghost.org/changelog/content-snippets/). --- ## Ghost Custom Fonts Tripoli supports [Ghost Custom Fonts](https://ghost.org/changelog/custom-fonts/). To change your publication's fonts, open your **Design & Branding** settings. Under **Brand**, scroll down to **Typography**. Default theme fonts: Source Serif 4 is used for post titles and main reading text; Inter is used for navigation and other interface text. --- ## RSS Feed URL Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). [RSS](https://en.wikipedia.org/wiki/RSS) is a way for people to receive updates from your website by adding your website's RSS link to their RSS application ([Feedly](https://feedly.com/) for example). Once you publish content, they will receive a notification. If your website is [private](https://ghost.org/help/site-setup/#advanced-settings), the RSS URL will not function properly. Once your website is made public, the URL will work as expected. Since Tripoli uses the `/latest/` URL for the latest posts, you can access the RSS feed at `site.com/latest/rss/` instead of `site.com/rss/`. For example, [tripoli.aspirethemes.com/latest/rss/](https://tripoli.aspirethemes.com/latest/rss/). If anyone subscribes to `site.com/rss/` and you want to redirect them to `site.com/latest/rss/`, go to your Ghost admin **Settings → Advanced → Labs** and upload the `redirects.yaml` file, which you can find in the theme files. --- ## Publication icon You can change the favicon from the Ghost admin **Settings → Site → Design & branding → Customize → Brand → Publication icon**. --- ## Footnotes Ghost has limited support for footnotes, which means it doesn’t support footnotes outside of the editor [Markdown card](https://ghost.org/help/using-markdown/). So, if your article content is in Markdown, this will work fine for you. To create a footnote, check out the [Markdown Guide – Footnotes](https://markdownguide.offshoot.io/extended-syntax/#footnotes) for more information about the syntax. You can see how the theme renders footnotes in the [demo](https://tripoli.aspirethemes.com/elements/#footnotes). In the editor, add a new Markdown card and place your footnote inside it. The theme renders whatever the editor supports; there is no additional footnote support beyond what Ghost provides. Check out this [Forum discussion](https://forum.ghost.org/t/footnote-support-in-editor/1521) for more information and probably [some](https://forum.ghost.org/t/footnote-support-in-editor/1521/32) ideas and [workarounds](https://forum.ghost.org/t/footnote-support-in-editor/1521/3). The theme does not add any footnotes functionality beyond Ghost’s Markdown implementation. --- ## Theme Deploy with GitHub Actions Tripoli comes integrated with the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub Action. The purpose of the GitHub Action is to take the theme from the GitHub repo and send it to your website. I have written about this in [How to Deploy Your Ghost Theme Using GitHub Actions](https://aspirethemes.com/blog/deploy-ghost-theme). All you need to do is follow steps **1** and **2**. The Deploy Ghost Theme Action is maintained by Ghost and works with any Ghost install, whether you self-host Ghost or use Ghost Pro. --- ## Code Injection Another choice for customization is to use the **Code Injection** settings in Ghost admin. For a CSS example, you can use the following code in the Ghost admin [Code Injection](#code-injection) Site Header to change the logo color and font size. ```html ``` Watch the following short video about Ghost Code Injection, how it works, and how to use it. Check out [How to use Code Injection](https://ghost.org/tutorials/use-code-injection-in-ghost/) Ghost guide for more information. --- ## Customize Logo Size If you are using an image as a logo (instead of the site name) and want to change the logo size, use the following code in [Code Injection](#code-injection). ```html ``` The default value is `48px`, so you can increase this value to match your preference. If the logo image has a large white space around it, trim that space with a photo editing app before uploading for better results. --- ## Remove Sharing Icons To remove the sharing icons from the theme, you can use the following code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` --- ## Footer Copyright To remove the **Ghost and Tripoli** links from the footer and keep the copy sign, year, and site name, add the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` Click **Save**. --- ## Remove Author Name Copy and paste the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` It will hide the author name across the site. --- ## Remove Reading Time Copy and paste the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` It will hide the reading time from the article page. ## Change Content Width Copy and paste the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` The default width is `708px`. Change this value to set a new width. --- ## Zip Theme Files You can compress it as a standard folder like any other folder on your computer. If you are on Mac, **right-click** on the theme folder to view the context menu. Then, click the **Compress** option. --- Source: https://aspirethemes.com/docs/tripoli --- Resource: https://aspirethemes.com/docs/ubud.md # Ubud Ghost Theme — Documentation > Set up Ubud's six homepage styles, featured and recent posts, author details, subscription forms, archives, and memberships. - Canonical page: [Ubud Ghost Theme — Documentation](https://aspirethemes.com/docs/ubud) - Theme version: 1.1.2 - Theme last updated: 24-08-2025 --- ## Theme Installation 1. Log in to your Ghost website admin (*example.com/ghost*). 2. Click the **settings** icon ( ) at the bottom of the left-hand side. 3. Go to **Site > Theme**. 4. Click **Change theme**. 5. Click **Upload theme**. 6. Select the *ubud.zip* theme file. 7. When the upload finishes, click **Activate**. --- ## Upload the routes.yaml File (⚑ Required) The `routes.yaml` file is required for: - Homepage content - Blog page - Archive page After you upload the theme ZIP, upload the routes file: Before you upload Uploading this file replaces your site's current routes. Download your current `routes.yaml` from the **Routes** section first. If you have custom routes, preserve them in the new file before uploading. [Contact Aspire Themes](https://aspirethemes.com/contact) if you need help combining the files. 1. Unzip the *ubud.zip* theme file. 2. In Ghost Admin, go to **Settings → Advanced → Labs**. 3. Click **Open**. 4. Select **Beta features**. 5. In the **Routes** section, click **Upload routes file**. 6. Select and upload the `routes.yaml` file from the extracted theme folder. Or watch the video: Homepage 404: Page Not Found After uploading the `routes.yaml` file, the homepage will return *404 Page Not Found*. That’s fine. Move on to the next step and set up the [Homepage](#homepage). --- ## Homepage Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). The homepage will show a list of content sections. - Your content and image from a custom Ghost Page - Featured posts, if they exist - Recent three posts - *All Posts →* link to the blog page - Subscription box ### Homepage Content Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). ➀ In Ghost admin, create a new **Page**. ➁ In **Page settings**, set the **Page URL** as `home`. ➂ Add your content, Excerpt, upload your **feature image**. *Above the title in the Ghost editor, click the **+ Add feature image** to upload your image*. *The page title will not be visible on the website; only the content and the image will be. However, you can name it *Home* or any preferred name to make it visible from the dashboard.* ➃ Click **Publish**. Now, go to your website homepage, and your content is visible using the theme [homepage default layout style](#homepage-default-style). If you don't want to upload an image, you can leave it empty, and the theme will only show the page content on the homepage, like the following example. Homepage metadata Ghost uses your publication settings for the custom homepage's title, description, and preview image. - Set the **Title & description** in **Settings → General**. - Set the **Publication cover** in **Settings → Site → Design & branding → Customize → Brand**. You can use the same image as the homepage feature image. Search engines and social platforms can use these values when they show a link to your homepage. --- Use the **Twitter card** and **Facebook card** fields in **Settings → General** when you want a platform-specific title, description, or image. --- Social platforms cache link previews, so a changed image or description may not appear immediately. ### Homepage Default Style The theme file for the home default style is `partials/home/style-image-left.hbs` if you want to make any changes. #### Homepage Default Style Image Size The image size is `540px` wide. When uploading the Featured image, try to upload an image with a double size to look sharp in retina displays. The `540px` wide size is the one that is visible on the screen. But behind the scenes, the theme will crop the image to be `1080px` wide if the uploaded image is broader than that. Again, I use this method so the image looks good on retina screens. ### Homepage Image Right Style The theme file for the home image right style is `partials/home/style-image-right.hbs` if you want to make any changes. #### To activate the Image Right style: 1. Go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Homepage** 2. Choose **Image Right** from the **Homepage layout style** option 3. Click **Save** #### Homepage Image Right Style Image Size The image size is `540px` wide. When uploading the Featured image, try to upload an image with a double size to look sharp on retina displays. The `540px` wide size is the one that is visible on the screen. But behind the scenes, the theme will crop the image to be `1080px` wide if the uploaded image is broader than that. Again, I use this method so the image looks good on retina screens. ### Homepage Image Circle Style The theme file for the home image circle style is `partials/home/style-image-circle.hbs` if you want to make any changes. #### To activate the Image Circle style: 1. Go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Homepage** 2. Choose **Image Circle Small/Medium/Large/xLarge** from the **Homepage layout style** option 3. Click **Save** #### Homepage Image Circle Style Image Sizes The image circle style comes with four different image sizes. - Small → `96px` × `96px` - Medium → `128px` × `128px` - Large → `192px` × `192px` - xLarge → `256px` × `256px` When uploading the Featured image, try to upload an image with a double size to look sharp on retina displays. The previous sizes are the ones that are visible on the screens. But behind the scenes, the theme will use the actual image size. Again, I use this method so the image looks good on retina screens. - Small → `192px` × `192px` - Medium → `256px` × `256px` - Large → `384px` × `384px` - xLarge → `512px` × `512px` The theme and Ghost will do the image crop and generate those sizes when you upload an image. I want to give you an overview of the dimensions. ### Homepage Image Center Style The theme file for the home image center style is `partials/home/style-image-center.hbs` if you want to make any changes. #### To activate the Image Center style: 1. Go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Homepage** 2. Choose **Image Center** from the **Homepage layout style** option 3. Click **Save** #### Homepage Image Center Style Image Size The image size is `731px` wide. When uploading the Featured image, try to upload an image with a double size to look sharp on retina displays. The `731px` wide size is the one that is visible on the screen. But behind the scenes, the theme will crop the image to be `1462px` wide if the uploaded image is broader than that. Again, I use this method so the image looks good on retina screens. ### Homepage Image Wide Style The theme file for the home image wide style is `partials/home/style-image-wide.hbs` if you want to make any changes. #### To activate the Image Wide style: 1. Go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Homepage** 2. Choose **Image Wide** from the **Homepage layout style** option 3. Click **Save** #### Homepage Image Wide Style Image Size The image size is `1120px` × `630px`. When uploading the Featured image, try to upload an image with a double size to look sharp on retina displays. The `1120px` × `630px` size is the one that is visible on the screen. But behind the scenes, the theme will crop the image to be `2240px` wide if the uploaded image is larger than that. Again, I use this method so the image looks good on retina screens. ### Homepage Image Full Style The theme file for the home image full style is `partials/home/style-image-full.hbs` if you want to make any changes. #### To activate the Image Full style: 1. Go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Homepage** 2. Choose **Image Full** from the **Homepage layout style** option 3. Click **Save** #### Homepage Image Full Style Image Size The wider the image, the better. An image height of `676px` will be perfect. ### Homepage Number of Featured and Recent Posts To control how many Featured or Recent posts to show, go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Homepage** You will find two input settings: - **Number of featured posts** default value is `all`, showing featured posts up to Ghost’s query limit (normally 100). - **Number of recent posts** default value is `3`, which will only show the recent three posts. Input values you can use: 1. Number, `1`, `2` or `3` or any number you want to include 2. `all` to show posts up to Ghost’s query limit (normally 100) 3. `none` to show nothing ### Homepage Change Featured and Recent Posts Titles To change the *Featured Posts* title, open the `partials/home/featured-posts.hbs` theme file using a [code editor](#theme-editing-tools) and change it in line `8`. To change the *Recent Posts* title, open the `partials/home/recent-posts.hbs` theme file and change it in line `8`. ### Homepage Styles and File Names Below are the homepage styles and theme file names for a quick overview. - Homepage Default Style → `partials/home/style-image-left.hbs` - Homepage Image Right Style → `partials/home/style-image-right.hbs` - Homepage Image Circle Style → `partials/home/style-image-circle.hbs` - Homepage Image Center Style → `partials/home/style-image-center.hbs` - Homepage Image Wide Style → `partials/home/style-image-wide.hbs` - Homepage Image Full Style → `partials/home/style-image-full.hbs` ### Homepage Replace the *Content Subscribe Form* With a Button You may want to replace the homepage content subscribe form with a button that links to another page or website. Open the [theme file for the homepage style](#homepage-styles-and-file-names) you are using. Replace the following line of code for the subscribe form, which will be similar to: ```hbs {{> home/subscribe-form }} ``` With the following line of code. ```html Subscribe ``` Notice that I used the `#/portal/signup` as a value to the Portal. You can change this value to another website or internal website page. Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. ### Homepage Remove the *All Posts →* Link If you set the [Recent Posts](#homepage-number-of-featured-and-recent-posts) setting value to `all` or `none`, the *All Posts →* button will be invisible. Another option to hide is to add the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` ### Homepage Remove the *Bottom Subscribe Box* Add the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` --- ## Changing Colors Learn how to change the site accent color and adjust the theme color scheme using CSS variables, with examples. ### Set Accent Color Ubud uses the accent color throughout the theme (e.g., buttons, header Membership link text, and link hover states). Change the accent color in Ghost admin: **Settings → Site → Design & branding → Customize → Brand → Accent color**. ## Changing Colors with CSS Variables Use the Ghost admin [Code Injection](#code-injection) Site Header to change other theme colors using CSS variables. ```css :root { --color-text-primary: #181818; --color-text-secondary: #646F82; --color-white: #FFFFFF; --background-primary: #FFFFFF; --background-secondary: #F6F6F6; --background-hero: var(--background-secondary); } ``` Watch the following video for an overview of the color scheme feature and how to use it. ### Theme Colors Explained If you're not technical, don't worry—change one value to see results immediately. You can try the ready-made [nine color schemes](#color-scheme-examples) below. ```scss :root { // Primary text is the main text color for site content. --color-text-primary: #181818; // Secondary text is used for elements like post dates, footer nav, input placeholders, content captions for images and gallery, and author info icons/metadata. --color-text-secondary: #687385; // White is used for buttons with brand colors as background. --color-white: #FFFFFF; // Border color separates post cards on the homepage and styles form input borders. --color-border: #ECECEC; // Primary background is the site background. Also used for the subscribe box icon color. --background-primary: #FFFFFF; // Secondary background is used for homepage content, subscribe box, plans, author info block, and comments. --background-secondary: #F6F6F6; // The hero background inherits from `--background-secondary`. Use this to set a unique hero color if needed. --background-hero: var(--background-secondary); } ``` ### Color Scheme Examples Below are nine accessible color scheme examples. 1. Every color scheme has an accent color — [set it first](#set-accent-color). 2. Copy and paste the scheme code in the Ghost admin [Code Injection](#code-injection) Site Header. All the color schemes are accessible colors for better reading and accessibility experience. **➊ Dark** Accent color → `DC514D` ```html ``` **➋ Monza** Accent color → `D6001C` ```html ``` **➌ Soft Peach** Accent color → `905656` ```html ``` **➍ Cinnamon** Accent color → `805b00` ```html ``` **➎ Bright Gray** Accent color → `373f48` ```html ``` **➏ Iron** Accent color → `000000` ```html ``` **➐ Linen** Accent color → `b95d0e` ```html ``` **➑ Turbo** Accent color → `000000` ```html ``` **➒ Pampas** Accent color → `c31118` ```html ``` If you have any schemes you would like to share, [please let me know](https://aspirethemes.com/contact) :) ### Make Content Links Have the Same Brand Color Content links inherit the text color and switch to the [brand color](#theme-colors-explained) on hover. To make links use the brand color by default, add this in the Ghost admin [Code Injection](#code-injection) Site Header: ```html ``` ### Color Tools The following are some online websites and tools to help with color inspiration. Please make sure you choose an accessible color scheme; this is important for readers. - [https://www.fffuel.co/cccolor/](https://www.fffuel.co/cccolor/) - [https://coolors.co/](https://coolors.co/) - [https://mdigi.tools/color-shades/](https://mdigi.tools/color-shades/#c5322e) - [http://web-accessibility.carnegiemuseums.org/design/color/](http://web-accessibility.carnegiemuseums.org/design/color/) - [http://colorsafe.co/](http://colorsafe.co/) - [https://clrs.cc/a11y/](https://clrs.cc/a11y/) ### Change Color of Specific Elements To add a color not covered by existing variables, create a new CSS variable and assign it a value. For example, extend the previous snippet to add a new logo color and apply it to `.c-logo__link`: ```html ``` The logo link will then be blue. --- ## Members / Subscriptions Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). Ubud includes several membership UI components: - *Log in* and *Membership* links in the header - Homepage subscription boxes - A post subscription box - Call to action section on the post page to encourage visitors to subscribe if the post is for members only If a member is already logged in, subscription forms are hidden. ### Disable Membership Components To remove membership links and forms from the theme, disable membership access in Ghost Admin. 1. Go to **Settings → Membership → Access**. 2. Select **Nobody**. 3. Click **Save**. ### Remove 'Log in' and 'Membership' links from Header If you want to keep membership enabled and forms visible but remove the header links only: Add the following CSS in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` Click **Save**. This will also remove the *Account* link, visible if logged in. ### Remove ‘Public’, ‘Members’ and ‘Paid’ Labels from Post Card Add the following CSS in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` Click **Save**. ### Remove Subscribe Form from the Homepage Content Add the following CSS in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` Click **Save**. ### Remove Subscribe Form from the Homepage Bottom Add the following CSS in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` Click **Save**. ### Remove Subscribe Form from the Post Page Add the following CSS in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` Click **Save**. ### Remove Ghost Portal / The Bottom Right Button This is the Ghost Portal button. You can disable it in Ghost Admin. Learn more in [Portal Look and feel](https://ghost.org/help/setup-members/#look-and-feel). ### Change Subscribe Box Text Change the subscribe box text in `/partials/subscribe-box.hbs`. Open the file using a [code editor](#theme-editing-tools). Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. ### Add Name to the Subscribe Form Open `/partials/subscribe-form.hbs` in a [code editor](#theme-editing-tools). Add the following lines immediately after ``: ```html ``` Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. Membership Troubleshooting Tips If the subscribe form shows an error, check these items first: Make sure your site is running the latest version of Ghost. If you self-host Ghost, configure the [mail settings](https://docs.ghost.org/config#mail) and restart your server. Make sure the Ghost config URL matches the public URL readers use to visit your site, as described in the [Ghost docs](https://docs.ghost.org/config#url). Use the full public URL. If your site uses a subpath, enter the full path, such as `https://example.com/blog/`. If SSL is enabled, use `https://`. If the issue continues on Ghost(Pro), contact Ghost support. If you self-host, contact your hosting provider. Membership email delivery and server configuration are handled by Ghost or your host, not by the theme. For more information about Members, connecting Stripe, and setting the package price, check the [official Ghost documentation](https://ghost.org/help/setup-members/). --- ## Navigation You can add, edit, delete, and reorder the navigation menu in Ghost Admin from the **Settings → Site → Navigation**. To include a static page on your navigation menu, follow these steps. First, type the page's name in the label field as you'd like it to appear on your menu. Next, click on the item's **URL**. The blog URL will already be auto-populated. Add the page slug after the final **/**. When satisfied with your page configurations, click the **Save** button. ### Dropdown Add a Hyphen (`-`) followed by a space before the navigation **Label** to add a dropdown menu. In this example, Contact will be the parent item with Blog and Archive as child items. ### Secondary Navigation / Footer Like [Header Navigation](#navigation), you can add the footer navigation links from the Ghost admin **Settings → Site → Navigation**. ### Social Media Icons Ghost supports adding Facebook and Twitter profile URLs from the admin panel. Go to **Settings → General → Social accounts** and add your URLs. The theme will automatically add them to the site navigation. Ubud also supports adding Instagram, YouTube, LinkedIn, Mastodon, Discord, and Telegram URLs. Go to **Settings → Site → Design & branding → Customize → Theme → Site wide**. --- ## Search Ubud uses the [Ghost Native Search](https://docs.ghost.org/themes/search). Ghost search uses post titles and excerpts from the 10,000 most recent posts. It does not search the full body of every post. **To remove search:** 1. Go to your Ghost admin **Settings → Site → Design & branding → Customize → Theme → Site wide** 2. Toggle the **Show search** option off 3. Click **Save** --- ## Pages Manage the Archive, Blog, and Contact pages. ### Archive Page Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). The Archive page lists all posts by month and displays up to 100 site tags. Items per load follow your site's [Posts per page](#posts-per-page) setting. The Archive page template is `archive.hbs`. To add Archive to the [site navigation](#navigation), add a new item pointing to `/archive/`, as shown below. ### Blog Page Make sure to [Upload the routes.yaml file](#upload-the-routesyaml-file--required). The Blog page shows your 10 most recent posts with a Load more button. Change the number of posts via the [Posts per page](#posts-per-page) setting. The Blog page template is `index.hbs`. To add Blog to the [site navigation](#navigation), add a new item pointing to `/blog/`, as shown below. ### Contact Page To create the Contact page: 1. Create a Formspree form and copy its endpoint from the **Integration** page. 2. In Ghost Admin, create a new page titled "Contact". 3. Add an HTML card and paste the code below. Replace `{form_id}` with the ID from your Formspree endpoint. 4. Publish the page. 5. Optionally add the page to your site menu (see [Navigation](#navigation)). ```html ``` Check out [How to Add a Contact Form to Your Ghost Blog](https://aspirethemes.com/blog/ghost-contact-form) for more information. --- ## Languages Ubud includes multiple languages. You can add your own too. ### Theme Translation Ubud supports [Ghost i18n](https://docs.ghost.org/themes/helpers/utility/translate) and comes with **Arabic**, **Hebrew**, **German**, **Italian**, **Spanish**, **French**, **Finnish**, **Portuguese**, **Dutch**, **Turkish**, and **Danish** translations. To use a language other than English, go to **Settings → General → Publication language** and enter the [ISO code](https://ghost.org/help/site-setup/#publication-language) into the **Publication Language** field. The following is a list of the available theme languages with the code to use. - `he` for Hebrew - `ar` for Arabic - `da` for Danish - `de` for German - `en` for English - `es` for Spanish - `fi` for Finnish - `fr` for French - `it` for Italian - `nl` for Dutch - `pt` for Portuguese - `tr` for Turkish #### Add a New Language Translation If the theme does not have a translation for your language, follow these steps to add a new language translation. 1. Create a new file using a [code editor](#theme-editing-tools) in the theme’s **locales** folder with the [ISO Language Codes](https://ghost.org/help/site-setup/#publication-language) code. For example, if the new language is Japanese, the ISO code will be `ja` and the file name will be `ja.json`. 2. In the same **locales** folder, open the `en.json` file and copy its content into your new language file. 3. Start translating, as shown in the following [Edit Translation](#edit-translation) section. Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. Now, go to your Ghost admin **Settings → General → Publication language** and enter your language ISO code into the **Publication Language** field. For example, `ja`. Click **Save settings**. *You may want to [restart Ghost or deactivate and activate](https://docs.ghost.org/themes/helpers/utility/translate#7-reactivate-the-theme) the theme again to make the new changes effective.* ### Edit Translation To improve or edit a translation in a specific available language, you can open the language file using a [code editor](#theme-editing-tools) in the `/locales/` theme folder: ```sh |____locales | |____he.json | |____ar.json | |____da.json | |____de.json | |____en.json | |____es.json | |____fi.json | |____fr.json | |____it.json | |____nl.json | |____pt.json | |____tr.json ``` For example, the German translation file — `de.json` — looks like this: ```json { "Skip to content": "Zum Inhalt springen", "Table of Contents": "Inhaltsverzeichnis", "Search": "Suche", "Comments": "Kommentare", "Loading": "Wird geladen", "More Posts ↓": "Weitere Artikel ↓", "All Posts →": "Alle Artikel →", "Recent Posts": "kürzliche Artikel", "Featured Posts": "Beliebte Beiträge", "Related Posts": "zusammenhängende Posts", "Page Not Found": "Seite nicht gefunden", "Published with {ghostLink} & {themeLink}": "Veröffentlicht mit {ghostLink} & {themeLink}", "Share on Twitter": "Auf Twitter teilen", "Share on Facebook": "Auf Facebook teilen", "Share on LinkedIn": "Auf LinkedIn teilen", "Share on Pinterest": "Auf Pinterest teilen", "Share via Email": "Per E-Mail teilen", "Copy link": "Link kopieren", "Link copied to clipboard": "Link in die Zwischenablage kopiert", "Archive": "Archiv", "Tags": "Stichworte", "1 min read": "1 minuten gelesen", "% min read": "% minuten gelesen", "Paid": "Bezahlt", "Members": "Mitglieder", "Public": "Öffentlichkeit", "Account": "Konto", "Log in": "Einloggen", "Subscribe": "Abonnieren", "Membership": "Mitgliedschaft", "Your email address": "Deine E-Mail-Adresse", "{siteTitle} Newsletter": "{siteTitle} Newsletter", "Please check your inbox and click the link to complete the login.": "Bitte überprüfen Sie Ihren Posteingang und klicken Sie auf den Link, um die Anmeldung abzuschließen.", "Please check your inbox and click the link to confirm your subscription.": "Bitte überprüfen Sie Ihren Posteingang und klicken Sie auf den Link, um Ihr Abonnement zu bestätigen.", "Please enter a valid email address!": "Bitte geben Sie eine gültige E-Mail-Adresse ein!", "An error occurred, please try again later.": "Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.", "Already have an account?": "Hast du schon ein Konto?", "Don't have an account yet?": "Sie haben noch keinen Account?", "This content is for Members": "Dieser Inhalt ist für Mitglieder", "This content is for Paid Members": "Dieser Inhalt ist für bezahlte Mitglieder", "This content is for Subscribers on the ": "This content is for Subscribers on the ", "Upgrade your account": "Aktualisieren Sie Ihr Konto", "Join the newsletter to receive the latest updates in your inbox.": "Treten Sie dem Newsletter bei, um die neuesten Updates in Ihrem Posteingang zu erhalten" } ``` Each line has a left _key_ (`"Loading"`) and a right _value_ (`"Wird geladen"`). The key is plain English used across all translation files and **should not be** changed. Update only the value. If you have any suggestions to improve a current translation or add a new language, please [contact](https://aspirethemes.com/contact) me. ### RTL *RTL* means right to left. Turning on RTL makes the theme readable for languages written from right to left, like Arabic or Hebrew. To enable RTL: 1. Go to **Settings → Site → Theme**. 2. Open the **…** menu beside your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor). 3. Open `partials/head.hbs` and replace `` with ``. 4. Click **Save**, then **Replace theme** to apply the change. Once you finish, [zip](#zip-theme-files) the theme files, and [upload](#theme-installation) the final zip file to your Ghost website. Multiple Languages Support The theme supports [Ghost translations](https://docs.ghost.org/themes/helpers/utility/translate) for different languages, which means if you set the site language to French, parts of the theme (e.g., button labels) will appear in French. Multiple languages on a single site are not supported out of the box in Ghost, and the theme does not support this either. --- ## Comments The theme comes with [Ghost Native Comments](https://ghost.org/changelog/native-comments/) integration. You can turn the comments on from your Ghost admin **Settings → Membership → Access**. [Learn more about Ghost comments](https://ghost.org/help/commenting/). [Ghost developer documentation for comments](https://docs.ghost.org/themes/helpers/data/comments). --- ## Typography Drop Caps The theme comes with different styles of typography drop caps. A drop cap applies to the first letter of the first word in a paragraph. To add a drop cap style to a paragraph: 1. Add an [HTML card](https://ghost.org/help/using-the-editor/#using-the-dynamic-menu) to your post or page content editor. 2. In that HTML card, add a `` HTML element with the drop cap CSS class. For example, ``. See below for the available classes for each style. 3. Add your paragraph text within that `` HTML element. There are currently four styles available. **➊ Small Drop Cap** - CSS class → `u-drop-cap` - Example ↓ ```htmlTEXT HERE
``` Result: **➋ Large Drop Cap** - CSS class → `u-drop-cap-large` - Example ↓ ```htmlTEXT HERE
``` Result: **➌ Block/Small Drop Cap** - CSS class → `u-drop-cap--block-small` - Example ↓ ```htmlTEXT HERE
``` Result: **➍ Block/Large Drop Cap** - CSS class → `u-drop-cap--block-large` - Example ↓ ```htmlTEXT HERE
``` Result: To save time, you can [create it as a snippet](https://ghost.org/changelog/content-snippets/). --- ## Table of Contents Add a table of contents to your posts and pages automatically. The table of contents lists H2 and H3 headings. If no H2/H3 headings are present in the content, the section is hidden. ### Activate on All Posts & Pages The table of contents block is hidden by default. Go to **Settings → Site → Design & branding → Customize → Theme → Post** to activate it. You have two options: 1. Show table of contents on all posts 2. Show table of contents on all pages ### Activate on Individual Posts & Pages Make sure the [Show table of contents on all posts and pages](#activate-on-all-posts--pages) options are not active. Create a new [Internal tag](https://docs.ghost.org/publishing#internal-tag) from the admin **Tags** page and set the Name to `#table-of-content`. Assign the `#table-of-content` tag to a post or page; the table of contents will only be visible on that item. --- ## Posts Per Page The theme displays `10` posts per page by default. To change this in Ghost Admin: 1. Go to **Settings → Site → Theme**. 2. Open the **…** menu next to your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor). 3. Open `package.json` and find `posts_per_page` inside `config`. 4. Replace `10` with the number of posts you want per page. 5. Click **Save**, then **Replace theme** to apply the change. ```json "config": { "posts_per_page": 10 } ``` Note This will not apply to the homepage but for the Blog page, Author, and Tag pages. For the homepage, checkout [Homepage Number of Featured and Recent Posts](#homepage-number-of-featured-and-recent-posts). --- ## Related Posts Related posts section will be visible at the bottom of a post if other posts share the same tags as the current post. --- ## RSS Feed URL Since Ubud uses `/blog/` for posts, the RSS feed is at `site.com/blog/rss/` instead of `site.com/rss/`. Example: [ubud.aspirethemes.com/blog/rss/](https://ubud.aspirethemes.com/blog/rss/). If your website is [private](https://ghost.org/help/site-setup/#advanced-settings), the RSS URL will not function properly. Once your website is made public, the URL will work as expected. --- ## Publication icon You can change the favicon from the Ghost admin **Settings → Site → Design & branding → Customize → Brand → Publication icon**. --- ## Syntax Highlighting Add a fenced code block by wrapping your code with triple backticks. For example: ``` pre { background-color: #f4f4f4; max-width: 100%; overflow: auto; } ``` This renders as a plain code block: To enable syntax highlighting, add a language alias (e.g., `css` or `js`) after the opening backticks. For example: ```css pre { background-color: #f4f4f4; max-width: 100%; overflow: auto; } ``` This renders with syntax highlighting: For **inline code**, wrap text in single backticks. ### Prism The theme uses [Prism.js](https://prismjs.com/) to highlight code blocks. The [initial Prism package](https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript) includes some languages, like *Markup*, *CSS*, *C-like*, and *JavaScript*. You can add support for more languages by adding the Prism `autoloader` script, which will automatically load the languages you need. To do this, add the following script to the website admin **Code Injection (Site Footer)**. ```html ``` Click **Save**. --- ## Theme Deploy with GitHub Actions Ubud comes integrated with the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub Action. The purpose of the GitHub Action is to take the theme from the GitHub repo and send it to your website. I have written about this in [How to Deploy Your Ghost Theme Using GitHub Actions](https://aspirethemes.com/blog/deploy-ghost-theme). All you need to do is follow steps **1** and **2**. The Deploy Ghost Theme Action is maintained by Ghost and works with any Ghost install, whether you self-host Ghost or use Ghost Pro. --- ## Footnotes Ghost has limited support for footnotes, which means it doesn’t support footnotes outside of the editor [Markdown card](https://ghost.org/help/using-markdown/). So, if your article content is in Markdown, this will work fine for you. To create a footnote, check out the [Markdown Guide – Footnotes](https://markdownguide.offshoot.io/extended-syntax/#footnotes) for more information about the syntax. You can see how the theme renders footnotes in the [demo](https://ubud.aspirethemes.com/elements/#footnotes). In the editor, add a new Markdown card and place your footnote inside it. The theme renders whatever the editor supports; there is no additional footnote support beyond what Ghost provides. Check out this [Forum discussion](https://forum.ghost.org/t/footnote-support-in-editor/1521) for more information and probably [some](https://forum.ghost.org/t/footnote-support-in-editor/1521/32) ideas and [workarounds](https://forum.ghost.org/t/footnote-support-in-editor/1521/3). The theme does not add any footnotes functionality beyond Ghost’s Markdown implementation. --- ## Code Injection Another choice for customization is to use the **Code Injection** settings in Ghost admin. For a CSS example, you can use the following code in the Ghost admin [Code Injection](#code-injection) Site Header to change the logo color and font size. ```html ``` Watch the following short video about Ghost Code Injection, how it works, and how to use it. Check out [How to use Code Injection](https://ghost.org/tutorials/use-code-injection-in-ghost/) Ghost guide for more information. --- ## Blockquote Styles Copy the code of any examples below in the Ghost admin [Code Injection](#code-injection) Site Header, then click **Save**. **➊ Example One** ```html ``` **➋ Example Two** ```html ``` --- ## Customize Logo Size If you are using an image as a logo (instead of the site name) and want to change the logo size, use the following code in [Code Injection](#code-injection). ```html ``` The default value is `40px`, so you can increase this value to match your preference. If the logo image has a large white space around it, trim that space with a photo editing app before uploading for better results. --- ## Footer Copyright To change the footer copyright text: 1. Go to **Settings → Site → Theme**. 2. Open the **…** menu beside your active theme and select [**Edit code**](https://ghost.org/help/installing-a-theme/#2-make-edits-using-the-theme-editor). 3. Open `partials/footer.hbs` and edit the copyright text. 4. Click **Save**, then **Replace theme**. If you just want to remove the *Published with Ghost…* part, copy and paste the following code into the Ghost admin [Code Injection](#code-injection) *Site Footer*. ```html ``` --- ## Remove Dates To remove the dates from the theme homepage and listing pages, add the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` To remove only the date and keep the `Public`, `Members`, and `Paid` labels, use the following: ```html ``` To remove the date from the post page, use the following: ```html ``` --- ## Remove Author Elements To remove the author elements from the post page, add the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` This will remove the author name, image and the author bio under each post. --- ## Remove Post Feature Image If you want to remove the feature image from showing on the single post page, copy and paste the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` This will apply to a Post or a Page. --- ## Remove Homepage Feature Image Not uploading a feature image will do this. But if you already uploaded images and want to keep them for the article page and social media previews when you share your post, add the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` --- ## Make Post Card Feature Image Bigger The [Just Looking](https://wearejustlooking.org/) website use a more prominent image size for the homepage feature image. To do the same, add the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` --- ## Post Card Feature Image Ratio The post card feature image might look cropped from the outline; to disable this, change the image `object-fit` CSS value to `contain` by copying the following CSS code in the Ghost admin [Code Injection](#code-injection) Site Header. ```html ``` You may then want to remove the gray background. ```html ``` --- ## Open Post Links in a New Tab To open the post links in a new tab, add the following script in the [Code Injection](#code-injection) *Site Footer* section. ```html ``` Thanks, Taylor.N, for sharing this snippet! --- ## Zip Theme Files You can compress it as a standard folder like any other folder on your computer. If you are on Mac, **right-click** on the theme folder to view the context menu. Then, click the **Compress** option. --- Source: https://aspirethemes.com/docs/ubud --- Resource: https://aspirethemes.com/faq.md # Frequently Asked Questions About Ghost Themes > Frequently Asked Questions about Ghost themes, licensing, support, and customization options for Aspire Themes products. - Canonical page: [Frequently Asked Questions About Ghost Themes](https://aspirethemes.com/faq) ## What browsers do your Ghost themes support? All Ghost themes work in the latest stable releases of major browsers, including Firefox, Safari, Opera, Chrome, and Edge. ## What is the scope of your support? Support covers questions about theme functionality, feature configuration, and bugs or issues in the original theme. ## What is not included in your support? My theme support service does not cover theme customizations or assistance with Ghost setup or server configuration. ## How fast do you respond to support inquiries? I usually reply within one business day (Mon–Fri). ## What if I need help with a Ghost issue? Ghost issues and questions are best addressed by contacting [Ghost Support](https://ghost.org/contact/) ↗ directly or using the [Ghost Forum](https://forum.ghost.org/). ## How long does theme support last? Each purchase includes six months of support. You can extend this to 12 months for an additional fee at checkout. ## What happens after the support period ends? Will I still be able to use the theme? Yes. You can continue using the theme and receiving available updates after support expires. [Renew your support](https://aspirethemes.gumroad.com/l/renew-support) if you need help with theme functionality, configuration, or bugs. ## How can I renew my support? You can [renew your support](https://aspirethemes.gumroad.com/l/renew-support) for six months ($29) or twelve months ($49). ## Can I try a theme before I purchase it? You cannot download a theme before purchasing it, but you can explore its live demo. Purchases are covered by a 30-day money-back guarantee. ## What is your refund policy? You may request a full refund within 30 days of purchase. Before the refund is issued, you must uninstall the theme and stop using it. [Read the Terms](https://aspirethemes.com/terms#refund-policy) for the complete refund conditions. ## Can I use a single theme license on more than one website? No. A single-theme license covers one Ghost website. Choose the [Themes Bundle](https://aspirethemes.com/bundle) if you need to use Aspire Themes on multiple websites. ## How can I reach you? Send me a message through the [contact page](https://aspirethemes.com/contact). ## What does ‘free updates’ mean? You will receive free updates for any theme issue fixes, improvements, new features, and compatibility upgrades for the Ghost CMS. ## How often do you update your Ghost themes? Update schedules vary by theme. I release updates for compatibility, fixes, and improvements as needed. ## How do I know when a new update is available? When an update is released, I send an email with a link to download the new version. ## I lost the theme download link. How can I find it? The download link is in your purchase receipt email and the update email. If that’s missing, please send me the email address used to purchase the theme and I will resend it. If you bought the theme from ThemeForest, you can download it from your account’s Downloads page. ## How do I apply the new theme update to my current theme? The theme’s [changelog](https://aspirethemes.com/changelogs/) lists the files added, changed, or removed in each release. ## Can I modify and customize the themes? Yes, you are free to customize any theme as much as you like. ## Do I need to know how to code to use your theme? No coding is required to install the theme. Coding is only needed if you want to customize or extend the theme beyond the current features. Some features require configuration, and everything is explained in the online [documentation](https://aspirethemes.com/docs/). Also, there is a [video](https://aspirethemes.com/blog/ghost-theme-editing) with tips and recommended tools for editing theme files. ## Are you available for theme customizations? I'm not available for paid custom work or theme customizations. ## Do the Ghost themes come with the raw HTML files? No. The themes use Handlebars as the default Ghost template language. ## Which Ghost Pro plan will I need to support your themes? Ghost(Pro)’s Starter plan does not support custom theme installation. Choose a plan that includes custom themes and confirm the current options on [Ghost’s pricing page](https://ghost.org/pricing/). Source: https://aspirethemes.com/faq --- Resource: https://aspirethemes.com/pricing.md # Aspire Themes Pricing > Current public pricing for individual Aspire Ghost themes and the complete Themes Bundle. - Currency: USD ## Single Ghost theme - Base price: $149 USD - Includes: One Ghost theme, updates, documentation, and six months of support - License and refund terms: https://aspirethemes.com/terms ## Complete Themes Bundle - Base price: $499 USD - Stated theme value: $1700 - Includes: Every current Aspire theme and future Ghost themes - Purchase: https://buy.stripe.com/00gdUN2h0b9WbfO7sL - Bundle page: https://aspirethemes.com/bundle Purchase pages show any available country-based or site-wide offer. Stripe checkout shows the final price after the applied discount. Source: https://aspirethemes.com/bundle --- Resource: https://aspirethemes.com/terms.md # Terms and Conditions for Ghost Themes > Official license terms for Aspire Themes Ghost templates. Single, bundle, extended licenses with support & refund policy. - Canonical page: [Terms and Conditions for Ghost Themes](https://aspirethemes.com/terms) ## General - [Aspire Themes, LLC](https://aspirethemes.com/company) retains all Intellectual Property Rights to all themes. - You cannot distribute, duplicate, or make the themes available to anyone, resell them in their original form, or modify them for resale. - Third‑party listings and brand usage: You may not list, bundle, advertise, or otherwise promote Aspire Themes products, brand name, or assets (including names, logos, screenshots, demo imagery, or copy) for commercial purposes (e.g., ads, affiliate links, coupon gates, paid placements, or "bundles") without prior written permission from Aspire Themes, LLC. Any nominative reference to "Aspire Themes" must be strictly factual, in plain text, link directly to the official product page, and must not suggest sponsorship, partnership, or endorsement. - Images and screenshots: Use of our product images, logos, or demo screenshots is not permitted without prior written permission from Aspire Themes, LLC. Upon notice, you agree to promptly remove any unauthorized imagery or listings within 48 hours. ## Trademarks and Brand Usage - No brand hubs or "developer" pages: Do not create any page titled "Aspire Themes" or similar that aggregates our products (e.g., "developer" or "brand" hubs) without prior written permission. - No logos or trade dress: Do not use our logos, icons, screenshots, or page layout/trade dress without prior written permission. - Nominative reference allowance (neutral, incidental): You may make a neutral, incidental reference to "Aspire Themes" in plain text solely to identify our products and link directly to the official product page. Any such reference must not suggest sponsorship, partnership, or endorsement, and must not be presented as an official brand hub or developer page. - Takedown timeline: Upon notice, you must remove unauthorized brand usage or imagery within 48 hours. - Permission/misuse: To request permission or report misuse, please [contact](https://aspirethemes.com/contact) me. ## Ownership and Prohibited Uses All Aspire Themes product images, logos, demo screenshots, videos, page layouts, and marketing copy are owned by Aspire Themes, LLC and are not licensed for reproduction, redistribution, or display by third parties without prior written permission. - Thumbnails, crops, resized, filtered, or otherwise derivative versions of our images are also not permitted without written permission. - Hotlinking, scraping, caching, or downloading our media assets (including demo images and screenshots) for off‑site display is prohibited. - Nominative reference is limited to plain-text use of our product and brand names for factual identification with a direct link to the official product page. Any use beyond plain text (e.g., logos, screenshots, demo imagery, brand typography or layout) requires written permission and must not imply sponsorship or endorsement. - Upon notice, you agree to remove unauthorized imagery, copied text, or brand usage within 48 hours. ## Brand Hubs and Directories You may not publish "brand hub", "developer", or directory pages that aggregate Aspire Themes products or trade on our brand (including ratings, bundles, or monetized listings) using our images, screenshots, or copied text, without prior written permission from Aspire Themes, LLC. ## Single Theme License - You may use the purchased theme to create a single end product. - You can install the purchased theme on one domain only. - You cannot install the purchased theme on more than one Ghost website. - Installing a theme in a staging environment is acceptable. ## Themes Bundle License - You may use the themes in the bundle on an unlimited number of Ghost websites for both personal and commercial projects. - The bundle includes every current Aspire theme and any new Ghost themes Aspire Themes releases in the future. ## Extended License The Extended License is recommended for the following use cases: - Using a theme on another platform, such as converting it to WordPress. - This license allows use for one end product (one WordPress site on one domain). - Using a theme on your own platform or service and serving it to unlimited users. - For example, if you have a non-Ghost platform and want to use the theme for your users. - You can convert the theme to be compatible with your platform or service. - This license allows you to serve unlimited users on your platform or service (one end product). It is your responsibility to convert the theme to your platform. Aspire Themes is not obligated to assist with, or fix, issues that arise from editing or converting the theme. You will continue to receive theme updates that address issues in the original Ghost theme. The examples above are not exhaustive, and pricing may vary by use case. Please [contact](https://aspirethemes.com/contact) me for more details and pricing information. --- ## Theme Support All themes come with six months of support included in the theme price. ### ✓ What's Included in Theme Support Support covers questions about theme functionality, helps with feature configuration, and assists in fixing bugs or issues. ### ✕ What’s Not Included in Theme Support - Support does not include services that modify, customize, or extend the theme beyond its original features (e.g., CSS customizations). Please consider [hiring](#hiring-a-developer) a developer. - Support does not include manual installation of theme updates. - Support does not include services to set up the Ghost CMS or fix server issues. If you encounter any Ghost issues, reach out to the Ghost team at *support@ghost.org* or ask on the [Ghost Forum](https://forum.ghost.org/c/marketplace/12). Envato Elements Themes downloaded from Envato Elements do not include support. [Item Support on Envato Elements](https://help.elements.envato.com/hc/en-us/articles/360000629166-Item-Support-on-Envato-subscription) ### → Support Renewal If your original support period has ended and you'd like to renew, you can [extend your support](https://aspirethemes.gumroad.com/l/renew-support) for an additional 6 months ($29) or 12 months ($49). This applies to both single theme and bundle licenses. Even if your support expires, you will still receive free theme updates and can continue using the theme. To receive the benefits of [theme support](#theme-support), please renew your support period. --- ## Theme Updates During the commercial lifespan of the theme, you are entitled to any theme updates that Aspire Themes releases. These may include fixes for any theme issues, improvements, new features, or compatibility with the Ghost CMS. For every theme update, you will receive a list of the changed, new, or deleted files to assist you in updating your current theme. You can find these changelogs at [Changelogs](https://aspirethemes.com/changelogs/). --- ## Hiring a Developer I don't accept custom work or theme modifications. Recommended developers: I recommend [Cathy Sarisky](https://www.spectralwebservices.com/) ( *catsarisky@gmail.com* ). She's done excellent work with my themes for several clients and may be able to help. *Note: I'm not affiliated with her*. You can also check out [Ghost Experts](https://ghost.org/experts/). --- ## Theme Exchange You can exchange your purchased theme for a different Aspire Themes Ghost theme within 30 days of purchase, free of charge. To request an exchange, please contact me via the [contact page](https://aspirethemes.com/contact) with your order details. --- ## Refund Policy If you are unhappy with your theme for any reason, you may request a full refund within 30 days of purchase. ### Refund Process: - Once approved, you will receive an email confirming that your refund has been processed. - Refunds usually appear in your account within 5–10 business days, depending on your bank. ### Important Terms: - Refunds are only available within 30 days of the purchase date. After that period, you are no longer eligible for a refund. - To be eligible for a refund, the customer must remove and uninstall the theme from all websites and cease all use of it before the refund is issued. - Once a refund is issued, the license is immediately terminated. - Access to theme downloads, support, updates, and future releases will be automatically terminated. - If a refunded theme is found in use after the refund is issued, Aspire Themes may take appropriate license enforcement action. *Note: Refund processing times may vary depending on your payment method and financial institution.* --- ## Custom Offers Custom discounts, upgrades, exchanges, or private payment links may have their own written terms. If a custom offer is clearly stated before payment as final, non-refundable, or not eligible for exchange, those written terms apply to that purchase. Custom credits are not redeemable for cash and cannot be combined with previous purchases, refunds, exchanges, promotions, or future offers unless agreed in writing. --- ## Warranties Aspire Themes warrants that all themes are developed and maintained in accordance with applicable industry standards. All themes undergo internal quality assurance reviews and are fit for commercial sale. Browser support: All Aspire Themes themes are, subject to reasonable limitations, visually consistent and functionally compatible across the latest stable releases of Firefox, Safari, Opera, Chrome, and Edge. Where certain features are not reasonably feasible due to a browser's technical limitations, Aspire Themes will implement a reasonable alternative. --- ## Limitation of Liability YOU AGREE THAT, UNDER NO LEGAL THEORY, INCLUDING, BUT NOT LIMITED TO NEGLIGENCE, BREACH OF WARRANTY OR CONDITION, BREACH OF CONTRACT OR TORT, WILL ASPIRE THEMES OR ITS OWNER BE LIABLE TO YOU OR ANY THIRD PARTY ACTING ON YOUR BEHALF FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, PUNITIVE, OR EXEMPLARY DAMAGES OR DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA, OR OTHER INTANGIBLE LOSSES OR THE COST OF ANY SUBSTITUTE EQUIPMENT, FACILITIES OR SERVICES (EVEN IF ASPIRE THEMES HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES), ARISING FROM OR RELATING TO THESE TERMS OR YOUR USE OF OR YOUR INABILITY TO USE THE PRODUCTS, OR FOR ANY DAMAGES ARISING FROM OR RELATED TO THESE TERMS. ASPIRE THEMES’ TOTAL AGGREGATE LIABILITY FROM ANY AND ALL CLAIMS UNDER THESE TERMS IS LIMITED TO THE AMOUNT YOU PAID FOR THE PRODUCT GIVING RISE TO THE CLAIM. ASPIRE THEMES IS NOT LIABLE AND PROVIDES NO WARRANTY FOR ANY ERRORS, BUGS, CONFLICTS, OR INCOMPATIBILITIES WITH PRODUCTS ARISING FROM (I) IMPROPER INSTALLATION OF THE PRODUCT; OR (II) ANY USE OF THE PRODUCT FOR ANY PURPOSE OTHER THAN THAT FOR WHICH IT WAS BEING OFFERED BY ASPIRE THEMES; OR (III) THE CONCURRENT USE OF THIRD PARTY PRODUCTS OR SERVICES, AS REASONABLY DETERMINED BY ASPIRE THEMES; OR (IV) ANY AND ALL CHANGES OR MODIFICATIONS TO THE PRODUCT AFTER THE DATE OF PURCHASE; OR (V) FOR ANY ERRORS, BUGS, CONFLICTS, OR INCOMPATIBILITIES WHICH ARISE EXCLUSIVELY ON UNSUPPORTED BROWSERS. Source: https://aspirethemes.com/terms --- Resource: https://aspirethemes.com/themes/beirut.md # Beirut Ghost Theme for Creative Portfolios > A Ghost portfolio theme for independent creatives, with project, services, testimonials, writing, and about sections in one focused site. - Canonical page: [Beirut Ghost Theme for Creative Portfolios](https://aspirethemes.com/themes/beirut) - Price: $149 USD - Version: 1.0.4 - Last updated: 26-06-2025 - Demo: https://beirut.aspirethemes.com - Documentation: https://aspirethemes.com/docs/beirut Beirut gives creative professionals a portfolio for their work, services, writing, and client testimonials. Portfolio Homepage The homepage introduces your experience, skills, and values. Start with an introduction, then show selected or recent projects. Use the services section to explain what you offer. Add client logos and testimonials below your services. ---- Works Page The Works page collects your portfolio projects in one place. Each project can combine photographs with a written description. Beirut also keeps the project layout intact when you publish without images. --- Writing Page Use the Writing page for articles, updates, and notes alongside your portfolio. --- About Page The About page gives your biography and background a dedicated layout. --- Color Settings Choose from six color schemes, ranging from light earthy tones to darker palettes, or create your own. Change the colors from Ghost Admin. No code is required. Check out Beirut’s color schemes below. Responsive Layout Beirut adjusts to phone, tablet, and desktop screens of any size. --- Accessibility Details Beirut includes a skip-to-content link for keyboard and screen-reader navigation, along with labels for interface controls. --- Image Lightbox Beirut displays post images in a lightbox, so visitors can view them without leaving the page. --- Translation Support Translation-ready theme text with 11 included language files: English, Arabic, Danish, Dutch, Finnish, French, German, Italian, Portuguese, Spanish, and Turkish. --- Deploy with GitHub Use the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub Action to upload theme changes to Ghost from your repository. --- Is Beirut Right for Your Work? Choose Beirut when your website needs to explain who you are, show a considered set of projects, describe your services, and keep occasional writing nearby. It is designed for an independent creative or small studio rather than a large project directory with filters and several portfolio categories. --- Where Does the Name Beirut Come From? I visited Beirut in 2021 for two weeks during my four-month backpacking trip in the Middle East and Africa, and it was one of the best places I saw on that trip. The people, the hype, the food, and the streets make you not want to leave. Someday, I will return, and I hope you’ll visit Beirut and enjoy it as much as I did. Source: https://aspirethemes.com/themes/beirut --- Resource: https://aspirethemes.com/themes/hakone.md # Hakone Ghost Theme for Full-Post Blogging > A Ghost theme for writers who want complete posts on the homepage, with per-post styling, image lightboxes, memberships, and reading controls. - Canonical page: [Hakone Ghost Theme for Full-Post Blogging](https://aspirethemes.com/themes/hakone) - Price: $149 USD - Version: 1.0.5 - Last updated: 18-08-2025 - Demo: https://hakone.aspirethemes.com - Documentation: https://aspirethemes.notion.site/Hakone-Documentation-45978346cb3f42cebc29f5acfadc6413 ## Publish complete posts on the homepage Hakone presents the full content of each post on the homepage instead of reducing your writing to titles, excerpts, and thumbnails. Readers can move from one essay, journal entry, or photo story to the next without opening a separate page. The Load More button brings in another group of posts when readers reach the end of the current page. ## Give each post its own treatment Hakone includes styling tags that change an individual post without changing the whole publication. Use a post's feature image as the background, then select light text for contrast. For short notes, images, and informal updates, Hakone also supports untitled posts. The post URL replaces the missing title on the archive page, so the entry remains reachable. You can also give a post a light or dark background and choose a contrasting text color. These options help different kinds of entries feel distinct while keeping the same underlying layout. ## Let readers inspect every image Enable Hakone's image lightbox to open post images in a larger overlay. Readers can move through every image in the post as one numbered sequence, which works well for photo essays, artwork, and visual research. ## Tune the reading experience Ghost Admin settings control the site's background and text colors, heading and body fonts, search, sticky navigation, paragraph indentation, and paragraph justification. Hakone also includes a right-to-left layout option for publications that need it. --- ## Memberships without a separate visual system Hakone uses Ghost memberships for subscriptions and restricted posts. Readers can sign in, create an account, or subscribe from the navigation, while members-only posts show the appropriate access prompt. Native Ghost comments are available on individual post pages when discussion is enabled. --- ## Is Hakone right for your publication? Choose Hakone when the homepage itself should be the reading experience: complete essays, notes, or photo stories presented in sequence. It is less suited to a magazine that needs a dense homepage with many topic sections and compact story cards. --- ## More Hakone features - Support for all Ghost editor cards - Custom tags and archive pages - Image lightbox setting - LinkedIn, Bluesky, Threads, Mastodon, TikTok, YouTube, Instagram, Discord, and Telegram profile links - GitHub Actions integration for theme deployment - Sharing links for X, Pinterest, Facebook, LinkedIn, and direct copying - Translation-ready theme text with 11 included language files: English, Arabic, Danish, Dutch, Finnish, French, German, Italian, Portuguese, Spanish, and Turkish Ghost 6.0 Ghost Native Search Ghost Native Comments Ghost Custom Fonts Ghost Custom Settings Ghost Native Landing Pages Current Version 1.0.5 — 18 August 2025 [Documentation ↗](https://aspirethemes.notion.site/Hakone-Documentation-45978346cb3f42cebc29f5acfadc6413) · [Changelog](https://aspirethemes.com/changelogs/hakone) [Buy — $149](https://buy.stripe.com/5kA6slg7Q3Hu6Zy00i?client_reference_id=at1_site-button) [Demo](https://hakone.aspirethemes.com) Trusted by 100+ customers One-time Purchase Free Support & Updates 30-Day Money-Back Guarantee If you're unhappy, get a full refund, no questions! *Hakone is a city in Japan that I was lucky enough to visit, with beautiful nature and relaxing hot springs.* Source: https://aspirethemes.com/themes/hakone --- Resource: https://aspirethemes.com/themes/hanoi.md # Hanoi Ghost Theme for Visual Magazines > Build a visual magazine in Ghost with media-rich layouts, navigation previews, reader tools, memberships, and newsletter sections. - Canonical page: [Hanoi Ghost Theme for Visual Magazines](https://aspirethemes.com/themes/hanoi) - Price: $149 USD - Version: 1.0.0 - Last updated: 23-06-2026 - Demo: https://hanoi.aspirethemes.com - Documentation: https://aspirethemes.com/docs/hanoi Hanoi is a premium Ghost theme for visual magazines, creative journals, and long-form editorial publishing. Explore the [demo](https://hanoi.aspirethemes.com) or read the [documentation](https://aspirethemes.com/docs/hanoi). ## For Image-Led Publications Hanoi is made for publishers who want images to guide discovery, pacing, and story choice. Hanoi's homepage works like a magazine front page: a featured lead, an editorial intro, visual tag cards, latest stories, one Editor's Pick, and a newsletter section. Use it for design journals, interiors, photography, travel, food, music, and member-supported editorial publishing. ## Navigation Previews Hanoi turns desktop dropdowns into navigation previews. Add links in Ghost Navigation; internal posts, pages, tags, and authors can show their image. Video stories can show a short muted preview. The menu stays a menu: text links first, preview second. Motion helps readers understand a video story before opening it. ## Stories That Change Shape Not every article needs the same frame. Hanoi includes the default post layout plus Hero, Fullscreen, Split, and Video post templates. Use them for essays, interviews, field notes, visual reports, portfolios, and larger features that need a cover image, split header, fullscreen lead, or dedicated media stage. ## Video Inside the Story Video in Hanoi is treated as part of the editorial flow. Use video previews in post cards and navigation links when a short muted preview helps readers understand the story before opening it. For full video stories, the Video post template gives the media a dedicated stage, including a scroll-expanding video area for pieces where motion is central to the article. ## Reading Tools That Stay Quiet Long articles need controls that help without interrupting. Hanoi supports voice reading, text-size controls, Ghost comments, Ghost sharing, related posts, author context, and image lightbox controls. The tools stay close to the article without competing with it. ## Archives With Visual Memory Hanoi gives older stories a clear place to live. Use the Latest page for recent posts, the Archive page for a date-led index with image previews, custom tag and author directory pages, and native tag and author pages for focused browsing. Preview the demo pages: [Latest](https://hanoi.aspirethemes.com/latest/), [Archive](https://hanoi.aspirethemes.com/archive/), [Tags directory](https://hanoi.aspirethemes.com/tags/), [Authors directory](https://hanoi.aspirethemes.com/authors/), [Food & Drink tag](https://hanoi.aspirethemes.com/tag/food-drink/), and [Emma author](https://hanoi.aspirethemes.com/author/emma/). Tags can also become visual entry points through homepage tag cards, tag images, and accent colors. ## Responsive Editorial Design The homepage, navigation, story layouts, media, and reader tools keep the same editorial order across desktop, tablet, and mobile. ## Is Hanoi Right for You? Choose Hanoi if you want a visual Ghost publication shaped by images, video, topic browsing, and long-form reading. Choose [Taba](https://aspirethemes.com/themes/taba) if you need a larger news or magazine structure with heavier editorial sections, video coverage, and newsroom-style publishing. Choose [Ubud](https://aspirethemes.com/themes/ubud) or [Marsa](https://aspirethemes.com/themes/marsa) if you want a simpler personal newsletter, author site, or blog. Choose [Hakone](https://aspirethemes.com/themes/hakone) if typography and full-post reading are more important than visual magazine structure. ## What Hanoi Includes Hanoi stays close to Ghost. The theme adds editorial structure, media treatment, and reader tools while keeping publishing, memberships, newsletters, comments, search, custom fonts, Accent color, and custom settings inside Ghost Admin. - Editorial homepage sections for Featured posts, intro copy, tag cards, Latest Stories, Editor's Pick, and newsletter signup - Navigation previews for internal posts, pages, tags, and authors, with video previews for supported video stories - Latest, Archive, tag directory, author directory, native tag, and native author pages - Default, Hero, Fullscreen, Split, and Video post layouts - Video previews in post cards, navigation previews, and a scroll-expanding Video post layout - Voice reader, text-size controls, comments drawer, sharing, related posts, author context, and image lightbox controls - Ghost 6 support, all Ghost editor cards, native search, native comments, memberships, Portal, newsletters, custom fonts, and custom settings - Translation-ready theme text with 12 included language files: English, Danish, Dutch, Finnish, French, German, Hebrew, Italian, Portuguese, Brazilian Portuguese, Spanish, and Turkish Ghost 6.0 Ghost Native Search Ghost Native Comments Ghost Custom Fonts Ghost Custom Settings Dropdown Menu Current Version 1.0.0 — 23 June 2026 [Documentation](https://aspirethemes.com/docs/hanoi) · [Changelog](https://aspirethemes.com/changelogs/hanoi) [Buy — $149](https://buy.stripe.com/9B69AT1o3fgr5ND3TPc3m0n?client_reference_id=at1_site-button) [Demo](https://hanoi.aspirethemes.com) Aspire Themes is trusted by 3,000+ customers One-time Purchase Free Support & Updates 30-Day Money-Back Guarantee If you're unhappy, get a full refund, no questions! Source: https://aspirethemes.com/themes/hanoi --- Resource: https://aspirethemes.com/themes/hue.md # Hue Ghost Theme for Podcast Websites > Build a podcast website in Ghost with numbered episodes, separate blog posts, embedded players, listening links, memberships, and dark mode. - Canonical page: [Hue Ghost Theme for Podcast Websites](https://aspirethemes.com/themes/hue) - Price: $149 USD - Version: 1.1.2 - Last updated: 27-08-2025 - Demo: https://hue.aspirethemes.com - Documentation: https://aspirethemes.com/docs/hue Hue is a Ghost theme for podcasters who want episode pages, show notes, memberships, and regular articles on one site. The homepage lists podcast episodes in order, while a separate blog keeps written posts distinct from the show archive. Explore the [demo](https://hue.aspirethemes.com) or read the [documentation](https://aspirethemes.com/docs/hue). ## Podcast Homepage Present the show title, description, cover image, listening links, and email subscription form in the homepage hero. Numbered episode cards appear below it. ## Publish Episodes and Articles Hue uses Ghost tags and routes to separate two publishing streams: - Add the `podcast` tag to an episode. It appears on the homepage with an automatically generated episode number. - Add the `blog` tag to an article. It appears on the separate `/blog` page. Upload Hue’s included `routes.yaml` file after installing the theme. This required step sends `podcast` posts to the homepage and `blog` posts to `/blog`. ## Add Your Podcast Player Hue does not provide audio hosting or a custom podcast player. Host your show with a podcast service, copy its player embed code, and paste that code into a Ghost HTML card on the episode page. Use the rest of the Ghost editor for show notes, images, links, transcripts, and member-only content. ## Link to Listening Services Add current listening links to the homepage hero, including Apple Podcasts, Spotify, YouTube, Overcast, Pocket Casts, Castro, and your podcast RSS feed. Only services with a saved URL appear. ## Memberships and Subscriptions Hue connects its email forms, Log in and Subscribe actions, access labels, and restricted-content prompts to Ghost memberships. Podcast episodes and blog posts can be public, member-only, paid, or limited to specific tiers. ## Light, Dark, and Responsive Layouts Hue follows the reader’s operating-system preference for light or dark mode and provides a navigation control for switching manually. Episode cards, article pages, navigation, and subscription controls adapt to phone, tablet, and desktop layouts. ## Is Hue Right for You? Choose Hue if your podcast already has a hosting service and you want a Ghost website for episodes, show notes, written articles, memberships, and email subscriptions. Hue is not an audio host; its podcast player comes from the service you embed. ## What Hue Includes - Ghost 6 support - Numbered episode cards - Separate podcast and blog routes - Podcast player embeds through Ghost HTML cards - Listening-service and RSS links - Ghost memberships, subscriptions, search, and comments - Public, Members, and Paid labels on post cards - Related posts and sharing - Light and dark modes - Responsive videos and tables - Syntax highlighting ## Translation Support Translation-ready theme text with 11 included language files: English, Arabic, Danish, Dutch, Finnish, French, German, Italian, Portuguese, Spanish, and Turkish. Deploy with GitHub Use the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub Action to upload theme changes to Ghost from your repository. Source: https://aspirethemes.com/themes/hue --- Resource: https://aspirethemes.com/themes/krabi.md # Krabi Ghost Theme for Magazine-Style Blogs > Magazine‑style Ghost theme with two‑column layout, sidebar newsletter, tags menu, authors page, translations, and native search. - Canonical page: [Krabi Ghost Theme for Magazine-Style Blogs](https://aspirethemes.com/themes/krabi) - Price: $149 USD - Version: 1.2.1 - Last updated: 25-08-2025 - Demo: https://krabi.aspirethemes.com/ - Documentation: https://aspirethemes.com/docs/krabi Krabi is a magazine-style Ghost theme with a two-column layout, a sidebar newsletter form, and persistent topic navigation. --- ## Responsive layout Krabi adapts to phones, tablets, and desktop screens of any size. --- ## Tags menu The tags menu keeps topic links visible on every page. When the tags exceed the available width, the menu scrolls horizontally. --- ## Tags page Krabi includes a dedicated tags page that lists your tags with a photo, name, description, and post count. --- ## Authors page List every author in one place with the [custom authors page ↗](https://aspirethemes.com/docs/krabi#authors-page). --- ## Accessibility details Krabi includes a skip-to-content link and labels its main navigation, tags menu, and search control for assistive technology. --- ## Posts without feature images Krabi preserves the homepage and article layouts when posts do not include feature images. This is how the homepage looks without images. The article layout works without a feature image too. ## Centered post layout Follow the [two documented steps ↗](https://aspirethemes.com/docs/krabi#center-post-page) to remove the sidebar and center the article. --- ## Is Krabi right for your publication? Choose Krabi when you want a familiar magazine structure: recent stories in a main column, a persistent sidebar for subscriptions and context, and topic links that remain easy to reach. If the homepage needs independently curated editorial sections or several feature-card formats, choose a more modular newsroom theme. --- ## Translation support Translation-ready theme text with 12 included language files: English, Arabic, Danish, Dutch, Finnish, French, German, Italian, Portuguese, Romanian, Spanish, and Turkish. --- Deploy with GitHub Use the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub Action to upload theme changes to Ghost from your repository. --- ## More Krabi features - Responsive videos - Responsive tables - Table of Contents - Related posts - Syntax highlighting - Lazy loading images for optimal performance - Social sharing icons (Twitter, Pinterest, Facebook, etc.) - Public, Members, and Paid labels on the posts list for easy scanning Source: https://aspirethemes.com/themes/krabi --- Resource: https://aspirethemes.com/themes/marsa.md # Marsa Ghost Theme for Blogs and Newsletters > Build a configurable Ghost publication with 23 color palettes, post modal, topic sections, memberships, newsletters, testimonials, and sortable archive. - Canonical page: [Marsa Ghost Theme for Blogs and Newsletters](https://aspirethemes.com/themes/marsa) - Price: $149 USD - Version: 1.0.1 - Last updated: 09-09-2025 - Demo: https://marsa.aspirethemes.com - Documentation: https://aspirethemes.notion.site/Marsa-Documentation-1ceb78f638d881548229d214f6ff5aba Marsa is a Ghost theme for blogs, newsletters, and multi-author publications that need a configurable homepage instead of a fixed chronological feed. Use featured stories, topic sections, recent posts, member-only collections, newsletter choices, and testimonials to shape the front page around your publication. Explore the [demo](https://marsa.aspirethemes.com) or read the [documentation](https://aspirethemes.notion.site/Marsa-Documentation-1ceb78f638d881548229d214f6ff5aba). ## Configure the Homepage Control Marsa’s homepage sections from Ghost Admin. Choose how many featured and recent posts to show, display every topic or selected tags, and add a section for members-only, paid, or specific-tier content. The featured section gives selected stories a prominent opening position. Topic sections organize recurring subjects, while the latest-posts section keeps the main feed current. ## Memberships and Newsletters Create a homepage collection for free members, paid members, specific tiers, or every restricted access level. Marsa marks protected stories and connects access prompts to Ghost memberships. If your publication offers more than one newsletter, readers can select the newsletters they want before subscribing. Signed-in members can open their newsletter preferences through Ghost Portal. Marsa can also display testimonials created as tagged Ghost pages. ## Open Articles in a Modal Let readers open articles in a focused modal while keeping the homepage behind them. They can close the modal to continue browsing or follow the article link to its full page. You can disable modal reading from Ghost Admin. Article pages include reading time, a table of contents for longer posts, related stories, comments, and sharing controls. ## Topics, Authors, and Archives Keep selected tags in the header or show every available tag. The Browse by Topics panel includes each topic’s post count. For multi-author publications, post cards can show an author profile with the author’s name, image, and bio. The archive presents posts in a paginated table that readers can sort by title, date, or reading time. ## Color and Typography Settings Choose from 23 preset color palettes or switch to Custom to set the site background, text, header, and homepage banner colors. Choose one of Marsa’s two font pairings or use Ghost’s native heading and body font settings. ## Is Marsa Right for You? Choose Marsa if you want a publication homepage with several independently controlled sections, topic-led discovery, memberships, multiple newsletters, and an optional modal reading experience. If you want a smaller, text-led blog with fewer homepage controls, consider [Sinai](https://aspirethemes.com/themes/sinai) instead. ## What Marsa Includes - Ghost 6 support - Ghost native search and comments - All Ghost editor cards - Featured, topic, latest, exclusive, newsletter, and testimonial homepage sections - Optional post modal - Sticky header and configurable topic menu - Multi-author support - Sortable archive page - Reading time, table of contents, related posts, and sharing - Ghost memberships, paid content, and newsletter preferences - 23 preset palettes and custom color controls - Ghost native font settings - Theme text in 11 included language files: English, Arabic, Danish, Dutch, Finnish, French, German, Italian, Portuguese, Spanish, and Turkish Ghost 6.0 Ghost Native Search Ghost Native Comments Ghost Custom Fonts Ghost Custom Settings Ghost Native Landing Pages Current Version 1.0.1 — 09 September 2025 [Documentation ↗](https://aspirethemes.notion.site/Marsa-Documentation-1ceb78f638d881548229d214f6ff5aba) · [Changelog](https://aspirethemes.com/changelogs/marsa) [Buy — $149](https://buy.stripe.com/bJedR9eaPgkvdg5fCxc3m0l?client_reference_id=at1_site-button) [Demo](https://marsa.aspirethemes.com) Trusted by 30+ customers One-time Purchase Free Support & Updates 30-Day Money-Back Guarantee If you're unhappy, get a full refund, no questions! Source: https://aspirethemes.com/themes/marsa --- Resource: https://aspirethemes.com/themes/moshi.md # Moshi Ghost Theme for Newsletter Websites > A Ghost newsletter theme with configurable signup, introduction, logos, testimonials, statistics, and recent-post sections. - Canonical page: [Moshi Ghost Theme for Newsletter Websites](https://aspirethemes.com/themes/moshi) - Price: $149 USD - Version: 1.0.1 - Last updated: 19-08-2025 - Demo: https://moshi.aspirethemes.com - Documentation: https://aspirethemes.notion.site/Moshi-Documentation-815c75790f8641359a55b466524e52a6 Moshi is a Ghost theme for newsletter websites, with a mobile-friendly homepage focused on subscriptions and recent posts. Change the homepage colors, fonts, content, and section order from Ghost Admin. No code is required. Build the homepage with the following sections: --- ## Signup section Invite visitors to join your newsletter, then customize the section's text, colors, and fonts. --- ## Logos section Add logos from media outlets, organizations, or businesses associated with your newsletter. --- ## Introduction section Describe your newsletter, share its purpose, or introduce your team. You can also add images, videos, galleries, and toggles. --- ## Testimonials section Add comments from subscribers to show what readers value about your newsletter. --- ## Statistics section Add figures such as subscriber, view, or share counts. --- ## Recent posts section Show recent posts so visitors can sample your newsletter before subscribing. --- ## Is Moshi right for your newsletter? Choose Moshi when the homepage should work like a newsletter landing page: explain the publication, establish trust, offer a sample of recent posts, and ask readers to subscribe. You arrange the sections yourself, so it works for a focused newsletter brand rather than a complex magazine archive. The demo content is not included with the theme, and the homepage is empty after installation. Follow the documentation to add and order the sections you want. --- ## More Moshi features - Reading time - Support for all Ghost editor cards - Custom settings for LinkedIn and YouTube links - GitHub Actions integration for theme deployment - Sharing icons for Twitter, WhatsApp, Facebook, and LinkedIn - Translation-ready theme text with 11 included language files: English, Arabic, Danish, Dutch, Finnish, French, German, Italian, Portuguese, Spanish, and Turkish Ghost 6.0 Ghost Native Search Ghost Native Comments Ghost Custom Settings Ghost Native Landing Pages Current Version 1.0.1 — 19 August 2025 [Documentation ↗](https://aspirethemes.notion.site/Moshi-Documentation-815c75790f8641359a55b466524e52a6) · [Changelog](https://aspirethemes.com/changelogs/moshi) [Buy — $149](https://buy.stripe.com/dR65ohcVEgug0BadR7?client_reference_id=at1_site-button) [Demo](https://moshi.aspirethemes.com) Trusted by 30+ customers One-time Purchase Free Support & Updates 30-Day Money-Back Guarantee If you're unhappy, get a full refund, no questions! Source: https://aspirethemes.com/themes/moshi --- Resource: https://aspirethemes.com/themes/nubia.md # Nubia Ghost Theme for Image-Led Blogs > A Ghost theme for image-led blogs and small magazines, with a varied post grid, article sidebar, dark mode, memberships, and comments. - Canonical page: [Nubia Ghost Theme for Image-Led Blogs](https://aspirethemes.com/themes/nubia) - Price: $149 USD - Version: 1.5.6 - Last updated: 11-05-2026 - Demo: https://nubia.aspirethemes.com - Documentation: https://aspirethemes.com/docs/nubia ## An image-led home for regular publishing Nubia turns your latest posts into a varied visual grid instead of a uniform list. Large lead images give important stories room, while smaller cards keep the rest of the homepage easy to scan. It suits personal blogs and small magazines that publish articles regularly and have strong photography or artwork to show. --- ## Article pages with useful context Each article keeps the main story in focus and adds a sidebar for the author, topics, and recent posts. Related posts and social sharing give readers a clear route to continue after they finish. The layout adapts for phones, tablets, and desktop screens, including responsive video embeds and tables inside posts. --- ## Light or dark presentation Use Nubia's default light design or enable its [dark color scheme](https://aspirethemes.com/docs/nubia#dark-mode) ↗ in Ghost. This is a site-wide choice, so you can match the theme to your publication before launch. --- ## Browse by topic Nubia's custom tags page shows each topic's image, name, description, and post count. It gives established archives a visual starting point beyond the latest-post feed. --- ## Meet the authors The [custom authors page](https://aspirethemes.com/docs/nubia#authors-page) ↗ introduces every contributor in one place. Individual author profiles collect their posts and label social links, locations, and post counts for assistive technology. --- ## Memberships and discussion Nubia works with Ghost memberships for free and paid content. Readers can subscribe from the site, sign in to their account, and see an upgrade prompt when a post is restricted. Use Ghost's native comments for member discussions, or connect Disqus with the theme setting provided. --- ## Is Nubia right for your publication? Choose Nubia when your publishing rhythm revolves around image-led articles, a clear topic archive, and a straightforward reading experience. If you need a highly structured newsroom homepage with several independently managed sections, a more modular magazine theme may be a better fit. --- Deploy with GitHub Use the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub Action to upload theme changes to Ghost from your repository. --- ## Nubia also comes with - Ghost Native Search - Syntax highlighting - Drop caps for article openings - Advertisement image and link settings for posts - Instagram, Pinterest, YouTube, and LinkedIn profile links - Translation-ready theme text with 11 included language files: English, Danish, Dutch, Finnish, French, German, Italian, Portuguese, Romanian, Spanish, and Turkish Source: https://aspirethemes.com/themes/nubia --- Resource: https://aspirethemes.com/themes/penang.md # Penang Ghost Theme for Membership Publications > Build a Ghost membership publication with signup forms, account links, gated-content prompts, topic sections, author pages, and dark mode. - Canonical page: [Penang Ghost Theme for Membership Publications](https://aspirethemes.com/themes/penang) - Price: $149 USD - Version: 1.3.4 - Last updated: 26-08-2025 - Demo: https://penang.aspirethemes.com - Documentation: https://aspirethemes.com/docs/penang Penang is a Ghost theme for independent blogs and publications built around subscriptions and member-only content. Ghost manages member accounts, access rules, and paid subscriptions. Penang connects those features to the public site through signup forms, account links, access labels, and restricted-content prompts. Explore the [demo](https://penang.aspirethemes.com) or read the [documentation](https://aspirethemes.com/docs/penang). ## Membership From Signup to Access Invite readers to subscribe from the homepage hero, site footer, or individual posts. The header gives logged-out readers Log in and Subscribe actions, then shows an Account link after they sign in. When someone opens restricted content, Penang provides the appropriate next step to subscribe, log in, or upgrade. Post cards label Public, Members, and Paid stories so readers can see the access level before opening an article. ## Homepage Sections Use the homepage hero for an introduction, publication image, and subscription form. Add sections for selected tags from Ghost settings, and choose whether to show the authors section. The main post feed uses two columns. A [documented customization](https://aspirethemes.com/docs/penang#three-columns-layout-display-for-home-posts) changes it to three columns when you want a denser homepage. ## Browse by Topic Keep publication topics visible with a tags menu on every page. The menu scrolls horizontally when its links exceed the available width. The tags directory shows each topic’s image, name, description, and post count. ## Author Directory Use the [authors page](https://aspirethemes.com/docs/penang#authors-page) to present every contributor in one place. You can also display an authors section on the homepage. ## Light, Dark, and Responsive Layouts Penang follows the reader’s operating-system preference for light or dark mode and provides a navigation control for switching manually. The homepage, article pages, navigation, and membership controls adapt to phone, tablet, and desktop layouts. ## Is Penang Right for You? Choose Penang if you want a subscription-focused blog or small publication with visible member actions, gated-content prompts, topic browsing, and an author directory. Penang works best for article-led publishing. If your priority is a complex newsroom homepage, extensive video publishing, or multiple custom story layouts, consider one of Aspire’s editorial magazine themes instead. ## What Penang Includes - Ghost 6 support - Ghost native search and comments - Homepage, footer, and post subscription forms - Log in, Subscribe, and Account actions - Prompts for member-only, paid, and specific-tier content - Public, Members, and Paid labels on post cards - Selected-tag homepage sections - Optional homepage authors section - Tags and authors directories - Related posts and social sharing - Responsive videos and tables - Syntax highlighting - Translation-ready theme text with 12 included language files: English, Arabic, Danish, Dutch, Finnish, French, German, Italian, Polish, Portuguese, Spanish, and Turkish Deploy with GitHub Use the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub Action to upload theme changes to Ghost from your repository. Source: https://aspirethemes.com/themes/penang --- Resource: https://aspirethemes.com/themes/petra.md # Petra Ghost Theme for Personal Blogs and Newsletters > A Ghost theme for personal blogs and newsletters, with an introduction, visual highlights, featured stories, recent posts, and subscriptions. - Canonical page: [Petra Ghost Theme for Personal Blogs and Newsletters](https://aspirethemes.com/themes/petra) - Price: $149 USD - Version: 1.0.4 - Last updated: 21-08-2025 - Demo: https://petra.aspirethemes.com - Documentation: https://aspirethemes.com/docs/petra Petra gives personal blogs and newsletters a focused homepage for an introduction, highlights, featured posts, and recent posts. Start by introducing yourself or your publication. Then show highlights, featured stories, and recent posts. --- ## Responsive layout Petra adjusts to phone, tablet, and desktop screens of any size. --- ## Color settings Change Petra's colors from Ghost Admin. No code is required. --- ## Accessibility details Petra includes a skip-to-content link for keyboard and screen-reader navigation, along with labels for interface controls. --- ## Image lightbox Petra displays post images in a lightbox, so readers can view them without leaving the page. --- ## Translation support Translation-ready theme text with 11 included language files: English, Arabic, Danish, Dutch, Finnish, French, German, Italian, Portuguese, Spanish, and Turkish. --- Deploy with GitHub Use the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub Action to upload theme changes to Ghost from your repository. --- ## Is Petra right for your publication? Choose Petra when you want a personal introduction and a small set of highlighted links to lead into your writing. It fits an individual writer or compact newsletter better than a multi-author magazine with dense topic navigation and several editorial departments. --- ## More Petra features - Ghost Native Search - Ghost Native Comments - Post reading-time - Responsive videos - Responsive tables - Syntax highlighting - Lazy-loading images for optimal performance --- ## Where does the name Petra come from? Petra is an ancient city carved into the rock formations of southern Jordan. I visited in 2021 during my four-month backpacking trip through the Middle East and Africa, and it was one of the best places I saw on that trip. Source: https://aspirethemes.com/themes/petra --- Resource: https://aspirethemes.com/themes/sinai.md # Sinai Ghost Theme for Minimal Blogs and Magazines > Build a minimal Ghost blog or simple magazine with readable layouts, tag sections, comments, search, memberships, six color schemes, and custom colors. - Canonical page: [Sinai Ghost Theme for Minimal Blogs and Magazines](https://aspirethemes.com/themes/sinai) - Price: $149 USD - Version: 1.2.4 - Last updated: 06-07-2026 - Demo: https://sinai.aspirethemes.com - Documentation: https://aspirethemes.com/docs/sinai Sinai is a premium Ghost theme for minimal blogs, simple magazines, and text-led publications. Explore the [demo](https://sinai.aspirethemes.com) or read the [documentation](https://aspirethemes.com/docs/sinai). ## For Text-Led Publishing Sinai is made for publications where the post list and article page do the main work. The homepage starts with latest posts in a clean grid. Post cards show images, dates, tags, titles, and excerpts. Article pages keep the reading column centered, with feature images when a story needs a visual lead. Use Sinai for essays, personal publishing, culture blogs, niche magazines, research notes, and member-supported writing that does not need a heavy newsroom layout. ## Homepage Tag Sections Sinai can add homepage sections for selected tags. Add tag slugs in Ghost Admin. Sinai adds one homepage section per tag and shows the four latest posts from that tag. Use these sections for recurring topics, columns, departments, or content categories that need a place below the main post grid. ## Topic Browsing Sinai gives readers clear ways to browse older posts. The tags page shows each tag with its image, name, and post count. Native tag pages collect every post for that topic, so the archive stays browsable as the site grows. ## Color and Typography Settings Choose Default Colors, Custom Colors, Soft Plum, Dark Charcoal, Dark Moss, or Dark Claret from Ghost Admin. Custom Colors lets you set the site background and main text colors, while Ghost's Accent color is used for content links. Sinai also supports Ghost Custom Fonts. By default, body text, navigation, labels, and article titles use Jost, while post card and teaser titles use Playfair Display. ## Reading, Sharing, and Comments Sinai uses Ghost's built-in article tools. Post pages include centered content, reading time, author links, Ghost's native share modal, Ghost comments, and related posts from matching tags. Member-only posts can show a subscription call to action through Ghost memberships and Portal. Sinai uses responsive layouts, clear heading structure, and accessible labels for key interface controls. The final contrast depends on the colors you choose in Ghost Admin. ## Responsive Reading Layouts Post cards, article pages, navigation, media, and homepage tag sections keep the same publishing order across desktop, tablet, and mobile. ## Is Sinai Right for You? Choose Sinai if you want a minimal Ghost blog or simple magazine with readable post layouts, tag-based discovery, memberships, comments, search, sharing, color schemes, and Ghost Admin controls. Choose [Hanoi](https://aspirethemes.com/themes/hanoi) if images, video, navigation previews, and custom story layouts should shape the publication. Choose [Taba](https://aspirethemes.com/themes/taba) if you need a larger news or magazine system with heavier homepage sections, video coverage, newsletters, stock tickers, and reader tools. Choose [Ubud](https://aspirethemes.com/themes/ubud) or [Marsa](https://aspirethemes.com/themes/marsa) if you want a simpler personal newsletter, author site, or lightweight blog. ## What Sinai Includes Sinai uses Ghost Admin for publishing, memberships, comments, search, custom fonts, Accent color, navigation, social accounts, and theme settings. - Ghost 6 support - Ghost native comments - Ghost native search - Ghost custom fonts - Ghost memberships and Portal links - Homepage sections for selected tags, with four latest posts per tag - Visual tags page and native tag pages - Native author pages with staff social links - Related posts from matching tags - Responsive videos - Responsive tables - Native Ghost share modal - Footer links from Ghost social accounts - Page title and feature image setting - Translation-ready theme text with 10 included language files: English, Danish, Dutch, Finnish, French, German, Italian, Portuguese, Spanish, and Turkish Ghost 6.0 Ghost Native Search Ghost Native Comments Ghost Custom Fonts Ghost Custom Settings Current Version 1.2.4 — 06 July 2026 [Documentation](https://aspirethemes.com/docs/sinai) · [Changelog](https://aspirethemes.com/changelogs/sinai) [Buy — $149](https://buy.stripe.com/5kAaIB3l45PCgA86ou?client_reference_id=at1_site-button) [Demo](https://sinai.aspirethemes.com) Trusted by 90+ customers One-time Purchase Free Support & Updates 30-Day Money-Back Guarantee If you're unhappy, get a full refund, no questions! Source: https://aspirethemes.com/themes/sinai --- Resource: https://aspirethemes.com/themes/siwa.md # Siwa Ghost Theme for Personal Blogs and Newsletters > Siwa is a Ghost theme for personal blogs and newsletters. Introduce yourself, guide readers into your stories, and invite them to subscribe. - Canonical page: [Siwa Ghost Theme for Personal Blogs and Newsletters](https://aspirethemes.com/themes/siwa) - Price: $149 USD - Version: 1.0.0 - Last updated: 24-09-2026 - Demo: https://siwa.aspirethemes.com - Documentation: https://aspirethemes.com/docs/siwa Siwa brings a personal introduction, visual story discovery, and newsletter signup into one publication. It suits independent writers and small visual magazines that publish words, photographs, or video and want readers to get to know the person behind the work. ## A Personal Introduction Give readers a person to connect with before they choose a story. The homepage introduction has room for your words beside a portrait or video, so you can explain what you publish and invite visitors to stay. A video can make that introduction more personal. Visitors press **Play** to watch with sound in a lightbox; the page stays quiet until they choose to watch. Reader quotes follow the introduction. Add the words and attribution yourself, with an optional background color for each quote. They sit between meeting the publisher and exploring the work. ## Featured Stories Your newest post may not be the best place to begin. Choose up to three Featured stories to introduce your work through large cards, excerpts, and images or muted video previews. Individual background colors give each story its own emphasis. The Latest Stories grid follows with up to six recent posts, excluding the stories already selected for Featured. Returning readers can find what has changed while new visitors still have a clear starting point. ## Navigation Previews A title tells readers where a link goes; an image gives them a glimpse of what they will find. Desktop dropdowns pair grouped links with previews from posts, pages, tags, and authors. Supported video stories can show muted previews. On mobile, the menu keeps the grouped links in a drawer. Previews are a desktop enhancement: links remain usable when an image or video is unavailable. ## Browse Beyond the Homepage As your publication grows, readers need a way back to earlier work. Archive presents titles and dates in a compact list, while Latest offers an image grid. A reader can scan for a familiar title or browse for something that catches their eye. Tag and author pages offer other routes into the collection, and the tags directory lets readers choose a subject. ## Five Post Layouts A written essay, a photo story, and a studio film can begin differently. Siwa gives you five post layouts, so the opening can suit the piece while the publication keeps its identity. Use Default for a centered title above the image, Hero for a title over the image, Fullscreen for a screen-filling cover, or Split to place the image beside the title and excerpt. Each example below opens in the demo. For a story that begins with moving images, **Post Video** places the first supported video above the article. It supports native Ghost video, YouTube, and Vimeo, with playback started by the reader. The same story can have muted previews in cards and desktop navigation. Video that belongs farther into a piece can stay within an ordinary article instead. ## Reading Tools Once the story begins, readers can adjust the text size or use **Listen** to hear it read aloud through their browser’s text-to-speech support. Available voices depend on the browser and device. A reading progress bar and automatic table of contents help readers follow longer pieces. Sharing and Ghost comments are close at hand; comments open in a side panel when enabled. ## Image Lightbox A photograph may deserve a closer look than the article column allows. Readers can open unlinked article images and galleries in a fullscreen viewer, then move between images with the arrows, keyboard, or a swipe. ## Make It Your Publication The site palette sets the background for your publication. Start with dark Default Colors, or choose Cloud Dancer, Kombu Green, Port Royale, or Sodalite Blue. Custom Colors lets you set your own background and text pair; Ghost’s accent color controls buttons and links. Individual story cards and sections can have their own backgrounds. A mint introduction and a peach Featured card can share a dark site, with contrasting text selected automatically. You can also use Ghost custom fonts. ## Newsletters and Memberships After readers have explored your work, give them a specific reason to receive the next piece. The newsletter section has its own heading, description, and optional image, with choices drawn from the newsletters you configure in Ghost. Visitors can choose what they want in their inbox. With an image, the section pairs artwork and signup controls on desktop and stacks them on smaller screens. Without one, the words and form use a centered column. This shared section appears before the footer across the site for signed-out visitors when Ghost Members is enabled and your newsletter page is published. Siwa also supports Ghost’s native memberships, including member-only and paid posts. Signed-in members do not see the repeated signup section. The [newsletter setup guide](https://aspirethemes.com/docs/siwa#site-newsletter) explains how to add your copy, image, and newsletter choices. ## Stock Quotes If you write about US stocks, inline quotes can put the latest available price and percentage change beside the symbol in your text. Quotes require a Finnhub API key and separate setup. The recommended [stock ticker setup](https://aspirethemes.com/stock-ticker/) uses a Cloudflare account to keep the key private; a direct setup is also available. Symbol coverage and request limits depend on Finnhub. ## Speed and Quality The Siwa demo scored 100 for Performance, Accessibility, Best Practices, and SEO in the test shown below. Scores vary with content, hosting, and test conditions. ## Is Siwa Right for You? Open the [Siwa demo](https://siwa.aspirethemes.com) to explore the introduction, try a video story, and browse the Archive. The [setup guide](https://aspirethemes.com/docs/siwa) covers the homepage sections, post layouts, colors, and memberships. Also included: mobile navigation, tag and author pages, native Ghost search, and twelve interface translations. Ghost 6.0 Ghost Native Search Ghost Native Comments Ghost Custom Fonts Ghost Custom Settings Dropdown Menu Current Version 1.0.0 — 24 September 2026 [Documentation](https://aspirethemes.com/docs/siwa) · [Changelog](https://aspirethemes.com/changelogs/siwa) [Buy — $149](https://buy.stripe.com/8x2aEX7Mr0lxgsh0HDc3m0q?client_reference_id=at1_site-button) [Demo](https://siwa.aspirethemes.com) Aspire Themes is trusted by 3,000+ customers One-time Purchase Free Support & Updates 30-Day Money-Back Guarantee If you're unhappy, get a full refund, no questions! Source: https://aspirethemes.com/themes/siwa --- Resource: https://aspirethemes.com/themes/taba.md # Taba Ghost Theme for Newsrooms and Digital Magazines > Build a Ghost newsroom or magazine with editorial sections, video publishing, memberships, newsletters, stock tickers, and reader tools. - Canonical page: [Taba Ghost Theme for Newsrooms and Digital Magazines](https://aspirethemes.com/themes/taba) - Price: $149 USD - Version: 1.0.0 - Last updated: 11-04-2026 - Demo: https://taba.aspirethemes.com - Documentation: https://www.notion.so/30eb78f638d881608ddec173236d6cc9 Taba is a Ghost theme for newsrooms and digital magazines that publish across several topics and media formats. It combines a structured front page, eleven custom story layouts, video publishing, memberships, newsletters, and article tools. Explore the [demo](https://taba.aspirethemes.com), [dark demo](https://taba-dark.aspirethemes.com/), or read the [documentation](https://www.notion.so/30eb78f638d881608ddec173236d6cc9). ## Editorial Homepage Build a front page with featured stories, topic sections, Editors’ Picks, video coverage, and curated story columns. Each section gives editors a distinct place to lead with a story or maintain recurring coverage. ## Slideshow, Gallery, and Video Feature Cards Use slideshow, gallery, video, and autoplay video cards for visual reporting, interviews, magazine features, and lead stories that need more than one static image. See the [feature card examples](https://taba.aspirethemes.com/features/). ## Light, Dark, and Custom Colors Choose the default palette, five preset light and dark schemes, or Custom Colors for your own background, text, and accent colors. ## Responsive Editorial Design The homepage, navigation, story layouts, video, and reading tools keep the same editorial order across mobile, tablet, and desktop screens. ## Article Reading Tools and Sharing Articles include text-size controls, voice playback, reading progress, a media lightbox, comments, sharing, and print styles for long-form reading. ## Video Publishing Publish interviews, reports, explainers, and multimedia series with homepage video sections, video story layouts, video cards, and a standalone video archive. Taba works with Ghost video cards and YouTube embeds. ## Stock Ticker for Market Coverage Taba includes stock ticker support for market coverage, company reporting, and business commentary. Add stock tags to relevant posts to display ticker symbols, prices, and movement. You can also show inline ticker references when a story mentions a symbol, as shown in this [demo story](https://taba.aspirethemes.com/the-ipo-markets-slow-thaw/). Stock quotes require a Cloudflare account and a Finnhub API key. Use the [stock ticker setup](https://aspirethemes.com/stock-ticker/) to connect them. ## Navigation For Growing Archives Help readers browse a growing archive through topic navigation, dropdown menus, related posts, tag pages, author pages, and Ghost search. ## Memberships and Newsletters Taba supports member-only and paid posts, member accounts, newsletter signup flows, and donation calls to action. Its [custom newsletters page](https://taba.aspirethemes.com/newsletters/) lets readers choose newsletters and signed-in members manage their preferences through Ghost Portal. ## Story Layouts For Every Format Choose from eleven custom post layouts for galleries, image-led features, and video stories. Wide, hero, banner, cover, background, and theater treatments give major stories a distinct opening while the article body remains consistent. ## Sticky Announcement Bar Promote a newsletter, membership, donation, announcement, or campaign with a sticky message and optional button. Show it to everyone, members, or non-members from Ghost settings. ## Google Preferred Source Button Help readers follow your publication more easily with support for Google Preferred Source for news publishers. ## Customize From Ghost Settings Customize colors, fonts, homepage sections, navigation, social links, donation buttons, and the sticky bar from Ghost Admin. ## Is Taba right for your publication? Choose Taba when a newsroom or magazine needs several independently managed homepage sections, visual and video story formats, deep topic navigation, and audience tools in one theme. Choose [Tripoli](https://aspirethemes.com/themes/tripoli) for a lighter multi-author magazine built around featured stories, topic sections, and conventional article layouts. Choose [Hanoi](https://aspirethemes.com/themes/hanoi) when image-led discovery and creative story presentation matter more than newsroom density. ## Taba also includes - Ghost 6 support, all Ghost editor cards, native search, native comments, and custom fonts - Author profiles, related posts, tag pages, and a header Topics menu - Facebook and X links from Ghost, plus LinkedIn, Bluesky, Mastodon, TikTok, YouTube, and Instagram settings - Translation-ready theme text with 12 included language files: English, Danish, Dutch, Finnish, French, German, Hebrew, Italian, Portuguese, Brazilian Portuguese, Spanish, and Turkish Ghost 6.0 Ghost Native Search Ghost Native Comments Ghost Custom Fonts Ghost Custom Settings Dropdown Menu Current Version 1.0.0 — 11 April 2026 [Documentation ↗](https://www.notion.so/30eb78f638d881608ddec173236d6cc9) · [Changelog](https://aspirethemes.com/changelogs/taba) [Buy — $149](https://buy.stripe.com/fZu6oH3wb9W7b7X2PLc3m0m?client_reference_id=at1_site-button) [Demo](https://taba.aspirethemes.com) Aspire Themes is trusted by 3,000+ customers One-time Purchase Free Support & Updates 30-Day Money-Back Guarantee If you're unhappy, get a full refund, no questions! Source: https://aspirethemes.com/themes/taba --- Resource: https://aspirethemes.com/themes/tripoli.md # Tripoli Ghost Theme for News and Magazines > A Ghost theme for news and multi-author magazines, with Editors' Picks, topic sections, author and tag directories, dark mode, and memberships. - Canonical page: [Tripoli Ghost Theme for News and Magazines](https://aspirethemes.com/themes/tripoli) - Price: $149 USD - Version: 1.1.0 - Last updated: 02-05-2026 - Demo: https://tripoli.aspirethemes.com - Documentation: https://aspirethemes.com/docs/tripoli Tripoli is a Ghost theme for news websites, online magazines, and multi-author publications. Tripoli highlights featured articles at the top and keeps recent posts visible, so readers see what matters from the first glance. Dark mode follows the reader’s device settings, and a toggle lets them switch it on or off. ## Build a layered magazine homepage ### Editors' Picks Give selected stories a dedicated section on the homepage. ### Homepage Tag Sections Group articles by tag on the homepage so readers can browse recurring topics. ### Tags Page Show all [tags](https://tripoli.aspirethemes.com/tags/) on one page. Set a distinct color for each tag from Ghost Admin. ### Authors Page Show every [author](https://tripoli.aspirethemes.com/authors/) with their biography and recent articles. ### Table of Contents Add an automatically generated table of contents to long articles. --- ## Is Tripoli right for your publication? Choose Tripoli when several authors publish across recurring topics and the homepage needs to balance featured stories, Editors' Picks, recent posts, and tag sections. It offers more editorial structure than a simple blog while remaining lighter than a newsroom theme built around video, financial data, and many specialized story layouts. --- ## More Tripoli Features ### Content Presentation - **Reading time indicator** — Shows the estimated reading time - **Table of Contents** — Helps readers navigate long articles - **Right-to-left support** — Supports publications in RTL languages - **Ghost editor cards** — Supports all Ghost editor cards - **3 Date Format Types:** - Month — Day — Year - Day — Month — Year - Year — Month — Day ### Design & Navigation - **Full-width navigation** — Accommodates longer navigation menus - **Dark mode** — Follows the reader's device preference and includes a manual toggle - **Responsive design** — Adapts to mobile, tablet, and desktop screens ### Engagement & Monetization - **Social links** — Theme settings for Instagram, LinkedIn, Discord, Mastodon, and YouTube - **Article sharing** — Links for Twitter, WhatsApp, Pinterest, Facebook, and LinkedIn - **Membership features:** - [Subscribers-only content example](https://tripoli.aspirethemes.com/subscribers-only/) - [Paid member content example](https://tripoli.aspirethemes.com/paid-members/) - [Specific tiers content example](https://tripoli.aspirethemes.com/specific-tiers/) - **Ghost Translation Support** — Includes 13 language files for theme text: English, Arabic, Danish, Dutch, Finnish, French, German, Italian, Portuguese, Brazilian Portuguese, Spanish, Swedish, and Turkish Ghost 6.0 Ghost Native Search Ghost Native Comments Ghost Custom Fonts Ghost Custom Settings Dark Mode Current Version 1.1.0 — 02 May 2026 [Documentation](https://aspirethemes.com/docs/tripoli) · [Changelog](https://aspirethemes.com/changelogs/tripoli) [Buy — $149](https://buy.stripe.com/6oE3g92h0di43Nm7sz?client_reference_id=at1_site-button) [Demo](https://tripoli.aspirethemes.com) Trusted by 500+ customers One-time Purchase Free Support & Updates 30-Day Money-Back Guarantee If you're unhappy, get a full refund, no questions! Source: https://aspirethemes.com/themes/tripoli --- Resource: https://aspirethemes.com/themes/ubud.md # Ubud Ghost Theme for Personal Newsletters > A Ghost theme for personal newsletters, with six homepage styles, featured and recent posts, subscription forms, archives, and memberships. - Canonical page: [Ubud Ghost Theme for Personal Newsletters](https://aspirethemes.com/themes/ubud) - Price: $149 USD - Version: 1.1.2 - Last updated: 24-08-2025 - Demo: https://ubud.aspirethemes.com - Documentation: https://aspirethemes.com/docs/ubud ## Personal newsletter homepage Ubud gives personal newsletters and blogs a focused homepage for an introduction, featured stories, recent posts, and subscription forms. Welcome visitors with a photograph and a short introduction. --- ## Six homepage styles Choose the homepage layout that fits your publication, and change it later without switching themes. Use the captions below to preview each layout. ## Color schemes Choose from nine documented color schemes, ranging from light earthy tones to darker palettes. Copy a documented set of CSS color values into Ghost Code Injection to apply a scheme. The [color scheme documentation](https://aspirethemes.com/docs/ubud#color-scheme-examples) provides the values for each option. About Dark Mode Ubud uses one color scheme at a time, so **readers cannot switch between light and dark modes**. For a dark website, use a [dark color scheme](https://aspirethemes.com/docs/ubud#color-scheme-examples). A reader-controlled mode switch is not planned. --- ## Responsive layout Ubud adjusts to phone, tablet, and desktop screens of any size. --- ## Accessibility details Ubud includes a skip-to-content link and labels its main navigation and interface controls for assistive technology. --- ## Posts without feature images Ubud preserves its homepage, post cards, and article layouts when posts do not include feature images. ## Organize your blog posts and archives Blog page Recent posts appear on the homepage, while the Blog page contains the complete post collection. The “Load More” button reveals additional posts without leaving the page. Archive page The Archive page groups posts by month and provides links to browse by tag. --- ## Subscriptions and member content Ubud includes subscription forms on the homepage and article pages. It also labels public, member-only, and paid posts in the post list, and works with Ghost Portal for account access and paid subscriptions. --- ## Is Ubud right for your publication? Choose Ubud when a personal introduction, a small selection of featured work, and newsletter growth matter more than a dense magazine front page. Its six homepage styles let you change the presentation without rebuilding the content structure. For several authors, many topic sections, or a newsroom workflow, choose a more editorial theme. --- ## Translation support Translation-ready theme text with 12 included language files: English, Arabic, Danish, Dutch, Finnish, French, German, Hebrew, Italian, Portuguese, Spanish, and Turkish. --- Deploy with GitHub Use the [Deploy Ghost Theme](https://github.com/marketplace/actions/deploy-ghost-theme) GitHub Action to upload theme changes to Ghost from your repository. --- ## More Ubud features - Ghost Native Search - Ghost Native Comments - Reading time - Responsive videos - Responsive tables - Syntax highlighting - Lazy-loading images for optimal performance - Social sharing icons (Twitter, Pinterest, Facebook, etc.) - Public, Members, and Paid labels on the posts list for easy scanning --- ## Where does the name Ubud come from? Ubud is a lovely town in Bali, Indonesia. I visited Ubud in 2019 for two weeks during my three-month backpacking trip around Southeast Asia, and it was one of the best places I saw on that trip. Inspired by the calmness of Ubud and the great environment, I wished to translate the experience into this theme’s design. Someday, I hope you’ll visit Ubud and enjoy it as much as I did. Source: https://aspirethemes.com/themes/ubud