Skip to content

Feature Activation

Neylon Santos edited this page Jun 17, 2025 · 1 revision

🎛️ Ativação de Funcionalidades

A Ativação de Funcionalidades é o mecanismo central do Sistema Modular do Contramaré que permite ligar e desligar funcionalidades completas do site com apenas uma linha de código.

📋 O que é a Ativação de Funcionalidades?

É um sistema de chaves booleanas que controla quais recursos estão disponíveis no site:

  • Define quais páginas são acessíveis
  • Determina quais links aparecem no menu
  • Controla quais posts são exibidos em listas e individualmente
  • Mantém a experiência do usuário consistente

⚙️ Configuração Básica

As funcionalidades são controladas no arquivo _config.yml através da chave features:

# ========================================
# CONTROLE DE FUNCIONALIDADES
# ========================================

features:
  # Página de frases inspiradoras
  quotes_page: false

  # Página principal do blog
  blog_page: true

  # Página de contato
  contact_page: true

  # Página sobre/manifesto
  about_page: true

🎮 Como Ativar uma Funcionalidade

Para ativar uma funcionalidade, defina seu valor como true:

features:
  quotes_page: true  # ← Mudança de false para true

O que acontece quando você ativa uma funcionalidade:

  1. Links no menu relacionados são exibidos automaticamente
  2. Páginas associadas se tornam acessíveis
  3. Posts da categoria correspondente aparecem em listas
  4. Posts individuais das categorias associadas ficam acessíveis

🛑 Como Desativar uma Funcionalidade

Para desativar uma funcionalidade, defina seu valor como false:

features:
  quotes_page: false  # ← Mudança de true para false

O que acontece quando você desativa uma funcionalidade:

  1. Links no menu relacionados são automaticamente removidos
  2. Páginas associadas mostram mensagem de "em desenvolvimento"
  3. Posts da categoria correspondente são ocultados das listas
  4. Posts individuais das categorias associadas mostram mensagem de indisponibilidade

⚠️ Considerações Importantes

  1. Reinicie o Jekyll após alterar o arquivo _config.yml:
# O Jekyll não monitora mudanças no _config.yml automaticamente
bundle exec jekyll clean
bundle exec jekyll serve
  1. Verifique o mapeamento de categorias para garantir que os posts sejam filtrados corretamente:
category_feature_map:
  "Frases": "quotes_page"  # Deve corresponder a uma feature ativa
  1. Teste as páginas protegidas para garantir que mostrem a mensagem de indisponibilidade corretamente

📝 Funcionalidades Disponíveis

📖 quotes_page

Controla o sistema de frases inspiradoras.

  • Quando ATIVA:

    • Menu "FRASES" visível
    • Página /quotes/ acessível
    • Posts da categoria "Frases" visíveis em listas
    • Posts individuais de frases acessíveis
  • Quando INATIVA:

    • Menu "FRASES" oculto
    • Página /quotes/ mostra "em desenvolvimento"
    • Posts de frases ocultos em todas as listas
    • Posts individuais de frases mostram "indisponível"

📰 blog_page

Controla o sistema principal de artigos.

  • Quando ATIVA:

    • Menu "BLOG" visível
    • Página /blog/ acessível
    • Posts das categorias associadas visíveis em listas
    • Posts individuais acessíveis
  • Quando INATIVA:

    • Menu "BLOG" oculto
    • Página /blog/ mostra "em desenvolvimento"
    • Posts das categorias associadas ocultos
    • Posts individuais mostram "indisponível"

📞 contact_page

Controla o formulário de contato.

  • Quando ATIVA:

    • Menu "CONTATO" visível
    • Página /contact/ acessível
  • Quando INATIVA:

    • Menu "CONTATO" oculto
    • Página /contact/ mostra "em desenvolvimento"

👤 about_page

Controla a página sobre/manifesto.

  • Quando ATIVA:

    • Menu "SOBRE" visível
    • Página /about/ acessível
  • Quando INATIVA:

    • Menu "SOBRE" oculto
    • Página /about/ mostra "em desenvolvimento"

🔄 Casos de Uso

🚀 Lançamento Incremental

Libere funcionalidades gradualmente:

# Fase 1: Site minimalista
features:
  quotes_page: false
  blog_page: true
  contact_page: false
  about_page: true

# Fase 2: Adicionando contato
features:
  quotes_page: false
  blog_page: true
  contact_page: true  # ← Novidade!
  about_page: true

# Fase 3: Site completo
features:
  quotes_page: true   # ← Novidade!
  blog_page: true
  contact_page: true
  about_page: true

🔧 Manutenção Temporária

Desative temporariamente uma seção problemática:

# Durante manutenção do formulário de contato
features:
  quotes_page: true
  blog_page: true
  contact_page: false  # ← Temporariamente desativado
  about_page: true

🧪 Testes A/B

Compare diferentes configurações do site:

# Versão A: Blog como destaque
features:
  quotes_page: false
  blog_page: true
  contact_page: true
  about_page: true

# Versão B: Frases como destaque
features:
  quotes_page: true
  blog_page: false
  contact_page: true
  about_page: true

🛠️ Criando Novas Funcionalidades

Para adicionar uma nova funcionalidade controlável:

1️⃣ Adicione a funcionalidade em _config.yml:

features:
  quotes_page: false
  blog_page: true
  contact_page: true
  about_page: true
  newsletter_page: false  # ← Nova funcionalidade

2️⃣ Adicione mapeamento de categoria (se necessário):

category_feature_map:
  "Frases": "quotes_page"
  "Blog": "blog_page"
  "Newsletter": "newsletter_page"  # ← Nova categoria mapeada

3️⃣ Implemente proteção na página:

<!-- pages/newsletter.html -->
{% if site.features.newsletter_page %}
  <h1>Newsletter</h1>
  <!-- Conteúdo da newsletter -->
{% else %}
  {% include content_unavailable.html %}
{% endif %}

4️⃣ Adicione ao menu de navegação:

<!-- _includes/header.html -->
{% if site.features.newsletter_page %}
<li class="nav-item">
  <a class="nav-link" href="/newsletter/">NEWSLETTER</a>
</li>
{% endif %}

🔍 Verificando Estado das Funcionalidades

Para checar quais funcionalidades estão ativas:

<!-- Debug de funcionalidades -->
<div style="background: #f0f0f0; padding: 10px; margin: 10px 0;">
  <h4>Estado das Funcionalidades:</h4>
  <ul>
    <li>quotes_page: {{ site.features.quotes_page }}</li>
    <li>blog_page: {{ site.features.blog_page }}</li>
    <li>contact_page: {{ site.features.contact_page }}</li>
    <li>about_page: {{ site.features.about_page }}</li>
  </ul>
</div>

🔄 Próximos Passos

Clone this wiki locally