Integrate with Ghost
Use native content, membership, search, comments, and pagination.
Ghostcn installs Handlebars partials. Ghost supplies the page context and native helpers. Use post components inside a post or post loop and author cards inside an author context:
{{#foreach posts}}
{{> "components/post-card"}}
{{/foreach}}
{{#post}}
{{> "components/post-header"}}
{{/post}}Membership and pricing
Pricing Table uses active public Ghost tiers and their actual currencies, prices, and benefits. Portal links target the tier and billing interval. Membership blocks respect disabled, invite-only, restricted signup, and paid membership settings, and can legitimately render nothing.
Newsletter Form uses native member-form attributes. If signup terms require consent, the component opens Portal. Signed-in members don’t receive another signup form.
Render the paywall once
Do not output protected post HTML outside Ghost’s access checks. A custom CTA after native protected {{content}} can duplicate the paywall.
The starter uses partials/content-cta.hbs for one custom paywall, preserving Ghost’s access checks and public preview. Merge that pattern into an existing theme instead of stacking a second CTA below protected content.
Pagination
Ghost’s {{pagination}} helper uses the copied partials/pagination.hbs automatically. Call the partial directly instead when passing styles:
{{> "pagination" pagination class="my-12" buttonClass="rounded-xl"}}Search, Portal, and comments
These services come from Ghost, not the playground. Keep {{ghost_head}} and {{ghost_foot}} in the layout. Ghostcn classes don’t style the separate UI owned by those services.
Validate in a real publication
gscan checks compatibility, not whether every layout and membership path behaves as intended. Also test real posts, editor cards, free/paid access, restricted signup, navigation by keyboard, small screens, and light/dark/automatic modes on your target Ghost version.
Was this helpful?