Migração de TYPO3 para Drupal: Guia Prático para Desenvolvedores
Migração de TYPO3 para Drupal: Um Guia Prático para Desenvolvedores
Se você já ficou olhando para um backend TYPO3 e pensou, "deve haver um jeito melhor," acredite em mim, você está longe de ser o único. TYPO3 tem seu poder – não vou discutir isso. Tem sido o CMS preferido para inúmeras empresas europeias e sites governamentais por mais de vinte anos. Mas, vamos ser honestos aqui, o cenário dos desenvolvedores mudou muito. Muitas organizações estão descobrindo que Drupal oferece uma configuração mais moderna, uma comunidade mais forte e um caminho mais fácil para arquiteturas headless/desacopladas.
Estive profundamente envolvido em algumas migrações TYPO3-para-Drupal nos últimos dois anos, e foi uma jornada bem desafiadora desvendando modelos de conteúdo do mundo real. Eles geralmente são uma bagunça emaranhada. Este guia é o que eu teria gostado que alguém me tivesse entregue antes da minha primeira migração. Vou cobrir todos os detalhes técnicos, os passos obrigatórios de planejamento e aquelas minas terrestres irritantes que podem estragar sua linha do tempo se você não ficar atento.
Índice
- Por que as organizações deixam TYPO3
- TYPO3 vs Drupal: Uma Comparação Honesta
- Auditoria Pré-Migração e Planejamento
- Modelagem de Conteúdo: Mapeando TYPO3 para Drupal
- Ferramentas de Migração e Abordagem Técnica
- Lidando com TypoScript TYPO3 e Extensões
- Estrutura de URL e Preservação de SEO
- Tornando-se Headless Após a Migração
- Estimativas de Linha do Tempo, Custo e Pessoal
- Lista de Verificação Pós-Migração
- Perguntas Frequentes

Por que as organizações deixam TYPO3
Vamos ser francos: TYPO3 não é um CMS ruim. É tremendamente flexível, lida nativamente com configurações multi-site e multi-idioma, possuindo uma base de fãs dedicada especialmente na região DACH. Então por que as pessoas abandonam o barco?
Ouço praticamente as mesmas razões toda vez:
Disponibilidade de desenvolvedores. Fora da Europa Central, encontrar desenvolvedores TYPO3 é tão difícil quanto encontrar uma agulha num palheiro. Drupal, por outro lado, reclama aproximadamente 1,3 milhões de desenvolvedores globalmente, de acordo com o relatório de comunidade 2024 do Drupal.org. TYPO3? Nem tanto. Se seus desenvolvedores TYPO3 sênior decidirem partir, preencher essas vagas pode levar uma eternidade.
Momentum do ecossistema. Com o lançamento do Drupal 11 no final de 2024, houve enormes avanços na UI de administração, um novo sistema de receitas e capacidades incríveis com foco em API. Claro, TYPO3 v13 é sólido, mas a taxa de inovação no Drupal, particularmente em torno de configurações headless, é notavelmente mais rápida.
Arquitetura headless/desacoplada. Planejando servir conteúdo para um frontend Next.js ou Astro sofisticado? JSON:API e plugins GraphQL do Drupal são profissionais experientes. TYPO3 tem sua própria extensão headless, mas é menos madura com menor apoio.
Custo total de propriedade. Hospedar TYPO3 geralmente custa mais caro. Sua infraestrutura especializada significa que você poderia acabar gastando mais. O Drupal funciona praticamente em qualquer lugar, desde Pantheon até Acquia, mesmo uma stack LAMP básica mantém tudo funcionando perfeitamente.
TYPO3 vs Drupal: Uma Comparação Honesta
Antes de se lançar de cabeça em um movimento, certifique-se de que Drupal genuinamente vai resolver seus pontos de dor. Aqui está o resumo a partir de 2025:
| Recurso | TYPO3 v13 | Drupal 11 |
|---|---|---|
| Modelagem de Conteúdo | Flexível mas depende de TCA | Sistema de entidade/campo com UI de gerenciamento de campos |
| Multi-idioma | Suporte nativo estelar | Suporte nativo igualmente estelar |
| Multi-site | Multi-site padrão com árvores de conteúdo | Possível, frequentemente melhor com Domain Access ou instalações separadas |
| Headless/API | Tem uma extensão headless | JSON:API principal, GraphQL contrib |
| Modelagem | Templates Fluid + TypoScript | Executa em templates Twig |
| Ecossistema de Extensão/Módulo | ~1.800 extensões em TER | ~50.000+ módulos em Drupal.org |
| UI de Administração | Forte, mas desatualizada (recebendo um novo visual em v13) | Elegante e moderno no Drupal 11 |
| Comunidade de Desenvolvedores | ~500 contribuidores ativos | 8.000+ contribuidores ativos |
| Opções de Hospedagem | Auto-hospedado ou especializado | Auto-hospedado, Pantheon, Acquia, Platform.sh, Lagoon |
| Requisito de PHP | PHP 8.2+ | PHP 8.3+ |
| Taxa de Agência Típica | €100-180/hr (região DACH) | $80-200/hr (global) |
O modelo de árvore de páginas do TYPO3 é uma joia rara. Editores que adoram gerenciar hierarquias complexas de páginas em TYPO3 podem achar o estilo do Drupal — a combinação de tipos de conteúdo e taxonomia — requer um pouco de ajuste. Agende alguns treinamentos de editor para facilitar essa transição.
Auditoria Pré-Migração e Planejamento
Este estágio determina o destino da maioria das migrações. Tudo está no planejamento, não nos tempos técnicos.
Inventário de Conteúdo
Comece auditando tudo na sua configuração TYPO3:
- Páginas: Tire da árvore de páginas, documentando cada
doktype(tipo de página) que você tem em jogo. - Elementos de conteúdo: Cada
CType(tipo de conteúdo) precisa de atenção — seja texto, texto com imagem, HTML, ou coisas personalizadas viamaskoucontent_defender. - Extensões: Anote cada extensão que você tem. Descubra se existe um equivalente em Drupal.
- Referências de arquivo: TYPO3's FAL (File Abstraction Layer) lida com mídia. Mapeie estas para os spots de mídia do Drupal.
- Usuários de backend e permissões: Os grupos intricados de usuários de backend TYPO3 com acesso em nível de página e campo devem ser traduzidos para funções e permissões do Drupal.
Aqui está uma consulta SQL útil para um resumo de elemento de conteúdo do seu banco de dados TYPO3:
SELECT CType, COUNT(*) as count
FROM tt_content
WHERE deleted = 0 AND hidden = 0
GROUP BY CType
ORDER BY count DESC;
Com isso, você obtém uma visão rápida dos tipos de conteúdo com os quais está trabalhando. Em um caso, descobri uma instância TYPO3 vantando-se de 40+ tipos de elemento de conteúdo personalizados, onde apenas uma dúzia estava sendo usada ativamente. Não arraste peso morto.
O que manter, o que descartar
Aqui está sua chance de fazer uma faxina. Use uma ferramenta de auditoria de conteúdo como Screaming Frog ou Sitebulb para descobrir:
- Páginas sem tráfego nos últimos doze meses
- Conteúdo duplicado ou quase idêntico
- Links internos quebrados
- Arquivos de mídia órfãos
Tipicamente, há um corte de 30-50% de conteúdo em grandes migrações TYPO3. Menos páginas significam migrações mais rápidas.

Modelagem de Conteúdo: Mapeando TYPO3 para Drupal
Puxe as mangas. Este é o levantamento intelectual pesado. TYPO3 e Drupal lidam com conteúdo de forma muito diferente.
Modelo do TYPO3
TYPO3 gira em torno de páginas. Tudo está guardado numa árvore de páginas. Elementos de conteúdo (registros em tt_content) se encaixam em páginas em colunas (colPos). Registros personalizados definidos através de modelos Extbase ou TCA ficam em tabelas separadas mas geralmente são vinculados a partir de páginas.
Modelo do Drupal
Drupal é tudo sobre entidades. Você cria tipos de conteúdo (pacotes de nó), cada um com campos dedicados. Páginas são apenas uma entre muitos tipos de conteúdo. Taxonomia, parágrafos (usando o módulo Paragraphs) e Layout Builder dominam a composição de conteúdo estruturado.
O Mapeamento
Aqui está uma tabela de mapeamento típica que uso como minha bússola:
| Conceito TYPO3 | Equivalente Drupal |
|---|---|
| Página (doktype: standard) | Node (content type: Page) |
| Página (doktype: shortcut) | Redirecionamento de URL |
| Página (doktype: link) | Node com campo de link ou redirecionamento |
| Elemento de conteúdo (CType: text) | Tipo de parágrafo ou campo Body |
| Elemento de conteúdo (CType: image) | Referência de entidade de mídia |
| Elemento de conteúdo (CType: textpic) | Tipo de parágrafo com texto + mídia |
| Elemento de conteúdo (CType: gridelements) | Seção do Layout Builder |
| Referência de arquivo FAL | Entidade de mídia |
| sys_category | Termo de taxonomia |
| fe_users | Entidade de usuário do Drupal |
| be_users | Entidade de usuário do Drupal com função de administrador |
| Modelo TypoScript | Template Twig |
| Plugin Extbase | Módulo Drupal personalizado |
| Elementos de conteúdo Mask/DCE | Tipos de parágrafo |
A maior mudança? Mover elementos de conteúdo para Parágrafos. TYPO3 empilha elementos de conteúdo em colunas de página, que mapeiam bem para o módulo Paragraphs do Drupal. Editores empilham páginas a partir de tipos de parágrafo reutilizáveis — é surpreendentemente perfeito.
Ferramentas de Migração e Abordagem Técnica
Drupal's Migrate API é excelente. Mas aviso: não possui um plugin de fonte nativo TYPO3. Você terá que desenvolver alguns plugins de fonte personalizados para extrair do banco de dados TYPO3.
Abordagem 1: Migração Direta do Banco de Dados
Conecte a Migrate API do Drupal diretamente ao seu banco de dados MySQL/MariaDB TYPO3:
// Exemplo de plugin de fonte de migração para páginas TYPO3
namespace Drupal\typo3_migrate\Plugin\migrate\source;
use Drupal\migrate\Plugin\migrate\source\SqlBase;
use Drupal\migrate\Row;
/**
* @MigrateSource(id = "typo3_pages")
*/
class Typo3Pages extends SqlBase {
public function query() {
return $this->select('pages', 'p')
->fields('p', ['uid', 'title', 'slug', 'abstract', 'doktype', 'crdate', 'tstamp'])
->condition('p.deleted', 0)
->condition('p.hidden', 0)
->condition('p.doktype', [1, 4], 'IN');
}
public function fields() {
return [
'uid' => $this->t('Page ID'),
'title' => $this->t('Page title'),
'slug' => $this->t('URL slug'),
'abstract' => $this->t('Abstract/summary'),
];
}
public function getIds() {
return ['uid' => ['type' => 'integer']];
}
public function prepareRow(Row $row) {
// Carregue elementos de conteúdo associados
$pid = $row->getSourceProperty('uid');
$content = $this->select('tt_content', 'tt')
->fields('tt')
->condition('tt.pid', $pid)
->condition('tt.deleted', 0)
->orderBy('tt.sorting')
->execute()
->fetchAll();
$row->setSourceProperty('content_elements', $content);
return parent::prepareRow($row);
}
}
Eu gosto dessa abordagem. É sobre ter controle total e permite que você lide com as peculiaridades do TYPO3 (como exclusões reversíveis e sobreposições de espaço de trabalho) no seu código.
Abordagem 2: Exportar/Importar via JSON ou XML
Algumas equipes escolhem exportar conteúdo TYPO3 em formatos estruturados (digamos, através de extensões TYPO3 personalizadas ou comandos CLI) e depois importá-los em Drupal. Claro, adiciona outra camada, mas é útil se você está apreensivo em manter conexões diretas de banco de dados durante a migração.
Abordagem 3: Híbrida com Análise Manual
Tem um site menor (menos de 500 páginas)? Fazer uma migração de dados estruturados automaticamente enquanto trata manualmente páginas principais pode funcionar lindamente. Pode parecer primitivo, mas quando o conteúdo está entrelaçado com lógica de renderização específica do TYPO3, a migração automatizada frequentemente resulta em disparates.
Lidando com TypoScript TYPO3 e Extensões
TypoScript
Vamos ir direto ao assunto: TypoScript não migra. É uma linguagem de config específica do TYPO3, sem um verdadeiro contraparte em outro lugar. Seu trabalho é documentar o que cada modelo TypoScript faz em termos leigos e depois reconstruí-lo como templates Twig e config Drupal. É trabalhoso mas necessário.
Extensões
Aqui está uma comparação útil de extensões TYPO3 comuns e seus equivalentes Drupal:
| Extensão TYPO3 | Equivalente Drupal |
|---|---|
| news | Tipo de conteúdo principal + Views |
| powermail | Módulo Webform |
| solr (ext:solr) | Search API + Solr |
| realurl / routing | Pathauto + roteamento principal |
| gridelements | Layout Builder ou Paragraphs |
| mask | Paragraphs |
| tt_address | Tipo de conteúdo personalizado ou CiviCRM |
| ke_search | Search API |
| femanager | Módulo de usuário + personalizado |
| cal/events | Tipo de conteúdo personalizado + Views |
Extensões Extbase personalizadas precisam ser reescritas como módulos Drupal. Sem atalhos — certifique-se de orçar para isso.
Estrutura de URL e Preservação de SEO
Mexa isso, e você perde tráfego orgânico. Já vi organizações perderem até 40% do tráfego de pesquisa pós-migração devido ao manuseio inadequado de redirecionamentos.
Passos
- Exporte todos os URLs do TYPO3. Use uma ferramenta CLI ou um rastreador para cada URL indexado.
- Mapeie estes para URLs Drupal. Use Pathauto do Drupal para geração de alias de URL, ficando próximo aos URLs existentes.
- Crie redirecionamentos para tudo que mudar. Implante o módulo Redirect em Drupal. Para montanhas de redirecionamentos, importe via CSV.
- Lide com prefixos de idioma. TYPO3 usa
/de/,/en/,/fr/- certifique-se de que as configurações de idioma do Drupal espelham isto. - Envie sitemaps atualizados para Google Search Console imediatamente.
# Exemplo de formato CSV de importação de redirecionamento para módulo Redirect do Drupal
source,redirect,status_code,language
/alte-seite,/new-page,301,de
/old-page/subpage,/new-page/subpage,301,en
/kontakt,/contact,301,de
Dica profissional: Mantenha a instância TYPO3 antiga ativa, embora somente leitura, por um mínimo de três meses após a migração. Você descobrirá URLs perdidos.
Tornando-se Headless Após a Migração
Drupal brilha em seu caminho para um frontend desacoplado. Com Drupal 11, o módulo JSON:API é sólido como uma rocha, e o ecossistema Drupal headless está florescendo.
Se você está pensando em uma abordagem headless — e em 2025, para a maioria dos sites orientados a conteúdo, vale a pena considerar — já nos aprofundamos bastante em /solutions/headless-cms-development.
Emparelhando frontends populares com Drupal:
- Next.js — O grande destaque.
next-drupalda Chapter Three facilita as coisas. Discutimos isso extensivamente em /capabilities/nextjs-development. - Astro — Perfeito para sites ricos em conteúdo que não são muito pesados no cliente. Veja /capabilities/astro-development.
- Nuxt — Se Vue é seu playground.
A beleza de primeiro migrar para Drupal é lançar com o frontend padrão Twig do Drupal. Depois, você pode mudar para um desacoplado. Não tente ambas as mudanças ao mesmo tempo — isso é pedir por caos do projeto.
Estimativas de Linha do Tempo, Custo e Pessoal
Números reais de projetos dos quais estive parte, ou tenho dados precisos (2024-2025):
| Tamanho do Site | Páginas | Linha do Tempo | Faixa de Orçamento | Equipe |
|---|---|---|---|---|
| Pequeno | <500 páginas | 2-3 meses | $30.000-60.000 | 2-3 desenvolvedores |
| Médio | 500-5.000 páginas | 4-6 meses | $60.000-150.000 | 3-5 desenvolvedores |
| Grande | 5.000-50.000 páginas | 6-12 meses | $150.000-400.000 | 5-8 desenvolvedores |
| Empresa | 50.000+ páginas | 12-18 meses | $400.000-1.000.000+ | 8-15 desenvolvedores |
Estes incluem tudo desde descoberta, modelagem de conteúdo, migração, tematização de frontend, QA e treinamento de editores. Manutenção contínua não está coberta aqui.
O grande fator de custo não é apenas a contagem de páginas — é complexidade. Um site de 2.000 páginas com 30 tipos de conteúdo personalizados e 4 idiomas custará mais do que um site simples de 10.000 páginas.
Considerando especificidades para seu caso? Verifique /pricing ou entre em contato diretamente.
Lista de Verificação Pós-Migração
Não pule esta lista de verificação. Confie em mim.
- Verifique todos os redirecionamentos. Certifique-se de que são 301s.
- Atualize Google Search Console com seu novo sitemap.
- Teste todos os formulários: contato, boletim, login.
- Certifique-se da precisão de conteúdo em múltiplos idiomas para cada idioma.
- Migre arquivos de mídia com precisão com texto alternativo e metadados.
- Verifique permissões de editor para cada função.
- Capture métricas de performance (Core Web Vitals).
- Verifique rastreamento de análise (eventos GA4, metas).
- Configure e teste CDN/cache.
- Habilite cabeçalhos de segurança (CSP, HSTS).
- Teste sistemas de backup e recuperação de desastres.
- Conclua treinamento de editor e forneça documentação.
- Mantenha a instância TYPO3 antiga disponível em modo somente leitura.
Perguntas Frequentes
Quanto tempo leva uma migração TYPO3 para Drupal normalmente?
Para sites de tamanho médio (500-5.000 páginas), é cerca de 4-6 meses do começo ao lançamento. O primeiro mês? Puramente descoberta e modelagem de conteúdo. Scripts de migração geralmente significam 6-8 semanas de trabalho. QA e treinamento de editores? Conte com outro mês. Se é uma configuração complexa multi-idioma, multi-site com extensões personalizadas, você está olhando para 9-12 meses.
Posso migrar conteúdo TYPO3 automaticamente, ou é manual?
Conteúdo estruturado como páginas, registros de notícias ou categorias? Absolutamente uma tarefa automatizada com a Migrate API do Drupal. Mas lógica de renderização complexa do TYPO3 pode precisar de algum cuidado manual. A maioria das migrações? Cerca de 70-80% automatizado, 20-30% manual.
Vou perder minhas classificações do Google durante a migração?
Não se você for diligente com seus redirecionamentos. Defina aqueles 301s para qualquer mudança de URL, fique próximo à sua estrutura de URL o máximo possível, envie aqueles sitemaps atualizados rapidamente. Você provavelmente verá uma queda, digamos 2-6 semanas. Mas um retorno é típico — os sites geralmente se recuperam para níveis pré-migração em 4-8 semanas e frequentemente veem melhorias em três meses devido a melhor performance.
Drupal é mais difícil de aprender do que TYPO3 para editores de conteúdo?
Diferente, não mais difícil. Aqueles acostumados ao modelo de árvore de páginas do TYPO3 podem precisar de tempo com a abordagem centrada em entidades do Drupal. O módulo Paragraphs oferece uma experiência de construção de conteúdo um tanto similar. Lembre-se de orçar cerca de 2-3 dias de treinamento para editores e forneça-lhes documentação específica de tipo de conteúdo e fluxo de trabalho.
O que acontece com minhas extensões TYPO3 durante a migração?
Cada extensão merece avaliação individual. Muitas têm equivalentes Drupal diretos (por exemplo, powermail → Webform, ext:news → tipo de conteúdo personalizado + Views, ext:solr → Search API + Solr). Extensões Extbase personalizadas? Elas precisarão de uma reescrita completa como módulos Drupal. Não há conversor — você precisará personalizar.
Devo ir headless ao migrar de TYPO3 para Drupal?
Depende de seus objetivos e linha do tempo. Se sua mudança é motivada por preocupações de desenvolvedor ou manutenibilidade, comece simples com tematização Twig do Drupal, mire para headless depois. Mas se sua equipe de frontend ama React ou uma configuração similar, e você deseja arquitetura de entrega moderna, considere planejar para headless desde o primeiro dia. Apenas lembre-se: fazer ambas as migrações e mudanças de frontend ao mesmo tempo? Esse é território de alto risco.
Como lidar com conteúdo em múltiplos idiomas na migração?
A configuração de idioma TYPO3 (sys_language_uid, l10n_parent) se alinha bem com o módulo Content Translation do Drupal. O truque? Acertar o mapeamento de idioma para idioma em seus scripts e garantir que o fallback corresponda às suas expectativas. Cuidado com conteúdo parcialmente traduzido — os modos de sobreposição de idioma TYPO3 (livre, conectado, rigoroso) não têm paralelos precisos de Drupal. Decisões editoriais sobre traduções incompletas podem ser necessárias.
Qual é o ROI de migrar de TYPO3 para Drupal?
Onde está o ROI? Principalmente ao reduzir despesas de desenvolvedor e acelerar o lançamento de recursos. Historicamente, as equipes que orientei veem cortes de cerca de 20-40% em custos de desenvolvimento no primeiro ano, graças principalmente a recrutamento de talento mais fácil e a ter um pool de módulos maior que reduz a necessidade de desenvolvimento personalizado. Custos de migração inicial podem ser pesados, mas a maioria deve se equilibrar em 18-24 meses.