Налаштування Ghost Members (підписки/пейволл)
Ghost Members — вбудована система підписчиків без зовнішніх плагінів. Інтегрується зі Stripe для платних рівнів доступу (Tiers). Підтримує безплатних підписчиків (email-лист), платні рівні з місячною/річною оплатою та paywall-контент.
Активація та базова налаштування
В Ghost Admin: Settings → Memberships:
- Включити Members: yes
- Default post access: Members only / Paid-members only / Free
- Portal: налаштування кнопки реєстрації та форм
Підключення Stripe
Admin → Settings → Memberships → Connect with Stripe
Потребує Stripe account (Standard або Connect). Ghost створює Products та Prices у Stripe автоматично. Webhooks налаштовуються Ghost CLI автоматично.
Рівні доступу (Tiers)
Admin → Settings → Memberships → Tiers
Кожен Tier має:
- Monthly/yearly ціни в Stripe
- Список переваг (відображається на сторінці підписки)
- Опис
Пейволл в контенті
В редакторі Koenig вставляємо розділювач Members:
[Відкрита частина статті]
⚡ Members Only [вставити карточку "Members Only"]
[Платний контент — доступен тільки підписчикам]
В теме Handlebars:
{{! post.hbs}}
{{#post}}
{{#if access}}
{{! Користувач має доступ — показуємо контент}}
<div class="gh-content">{{content}}</div>
{{else}}
{{! Нема доступу — пейволл}}
<div class="gh-content">{{content}}</div>
{{! Ghost автоматично обрізає контент за маркером}}
<div class="paywall" data-members-only>
{{#if @member}}
{{! Авторизован, але нема потрібного рівня}}
<h3>Ця стаття для платних підписчиків</h3>
<a href="#/portal/upgrade" data-portal="upgrade">Улучшити підписку</a>
{{else}}
{{! Не авторизован}}
<h3>Читайте без обмежень</h3>
<a href="#/portal/signup" data-portal="signup/free">Підписатися безплатно</a>
<a href="#/portal/signup" data-portal="signup">Стати платним підписчиком</a>
{{/if}}
</div>
{{/if}}
{{/post}}
Ghost Portal
Portal — вбудований віджет аутентифікації (iframe), вставляємий в тему:
{{! У footer.hbs або перед </body>}}
{{#if @labs.members}}
<script defer src="{{asset "js/portal.min.js"}}"></script>
{{/if}}
Управління відкриванням Portal через data-атрибути:
<a href="#/portal" data-portal>Вход</a>
<a href="#/portal/signup" data-portal="signup">Реєстрація</a>
<a href="#/portal/account" data-portal="account">Мій аккаунт</a>
Кастомний Signup Flow
{{! Форма з указанням конкретного Tier та періоду}}
<a href="#/portal/signup?plan=monthly" data-portal="signup/monthly">
Підписатися за {{price currency="USD" numberFormat="short"}}/мес
</a>
Проверка статусу підписчика
{{! Персоналізований контент}}
{{#if @member}}
<p>Привіт, {{@member.name}}!</p>
{{#if @member.paid}}
<span class="badge">Premium</span>
{{! Показати дані про підписку}}
{{#foreach @member.subscriptions}}
Підписка активна до {{date current_period_end format="DD.MM.YYYY"}}
{{/foreach}}
{{/if}}
{{/if}}
Webhook для синхронізації з зовнішніми системами
Ghost Admin → Settings → Integrations → Custom Integrations → Add webhook:
События: member.added, member.updated, member.deleted, member.payment.succeeded.
// Обработчик webhook (Node.js)
app.post('/ghost/webhook', express.json(), async (req, res) => {
const event = req.body;
if (event.member?.current?.subscribed && !event.member.previous?.subscribed) {
// Новий підписчик — додаємо в CRM
await addToCrm(event.member.current);
}
if (event.member?.current?.status === 'paid') {
// Новий платний підписчик — виділяємо доступ до Discord
await grantDiscordAccess(event.member.current.email);
}
res.sendStatus(200);
});
Налаштування Members з одним платним рівнем та базовим пейволлом — 1–2 дні. Кілька рівнів доступу, кастомний Portal UI, webhook-інтеграції — 3–5 днів.







