Caminho no Gestor modulos/publisher/
publisher define tipos de publicação: nome, prefixo de caminho, template e campos personalizados. Essas definições são utilizadas pelo módulo publisher-pages para preencher publicações. O módulo aparece como Publicador Definições, no grupo de administração do Gestor.
Como usar
-
Abra
publisher/e escolha adicionar (publisher/adicionar/). As rotas declaradas são iguais nos recursos pt-br e en, relativas à raiz do idioma. -
Informe
name, revisepath_prefixe selecione um template ativo do idioma atual comtarget=publisher. O navegador formata o prefixo em minúsculas, sem acentos, com hífens e barra final; editar o nome também pode recalcular esse prefixo. -
Carregue os campos do template. Adicione todos de uma vez ou crie campos individualmente, defina rótulo, descrição, tipo e obrigatoriedade. Vincule cada campo à variável correspondente do template; o vínculo adota seu identificador e tipo. Use as setas para ordenar.
-
Salve. A edição abre em
publisher/editar/?id=<slug>.publisher/clonar/?id=<slug>reaproveita prefixo e esquema, mas requer nome e seleção de template para o novo registro. -
A listagem oferece editar, clonar, ativar/desativar e excluir. Para criar o conteúdo de uma publicação, use
publisher-pages.
Templates já usados por publicadores não excluídos aparecem desabilitados no seletor; na edição, o template do próprio registro continua selecionável. Para reutilizar o desenho, clone o template no módulo admin-templates.
Referência técnica
Despacho e operações
publisher_start() inclui as bibliotecas declaradas (interface, html). No fluxo normal, configura a listagem em publisher_interfaces_padroes(), inicia a interface e despacha adicionar, editar ou clonar; a interface compartilhada finaliza a operação. A listagem configura as ações status e excluir para essa interface.
O único caso AJAX próprio é template-load, entre interface_ajax_iniciar() e interface_ajax_finalizar(). Recebe params.template_id e params.fields_schema, consulta template ativo do idioma atual e alvo publisher, e devolve status=Ok, modelo, campos e publisherFields. Template inexistente produz status=Erro. A extração reconhece @[[publisher#tipo#id]]@ e elimina duplicatas pelo par tipo/id, preservando a primeira ocorrência.
O JSON não declara hooks nem hooks.api; não há widget público próprio neste diretório. ModulosOperacoesData.json não semeia operação específica para publisher. A disponibilidade administrativa é a do módulo e da interface comum; os botões do seletor não constituem uma permissão adicional.
Tabela publisher
| Colunas | Contrato das migrations |
|---|---|
id_publisher |
Chave numérica gerada |
id, language |
Slug até 100 caracteres, idioma até 10 (padrão pt-br); índice único conjunto |
name |
String obrigatória, até 255 |
path_prefix, template_id |
Strings opcionais, até 255 |
fields_schema |
JSON opcional |
id_usuarios, plugin |
Autor (inteiro, padrão 1, aceita nulo) e origem de plugin (string até 255) |
status, versao |
Caractere, padrão A; inteiro, padrão 1 |
data_criacao, data_modificacao |
Datas; a segunda tem atualização automática |
user_modified, system_updated |
Indicadores inteiros, padrão 0 |
A criação gera slug a partir do nome no idioma atual, status A e versão 1. A edição compara os valores anteriores, registra histórico e backups de prefixo/template quando aplicáveis, incrementa versão e marca user_modified=1. Alterar o nome pode alterar o slug, salvo presença de _gestor-nao-alterar-id.
fields_schema e templates
O navegador salva duas listas, na ordem dos campos da tela:
{
"fields": [
{"id":"titulo","label":"Título","description":"Título principal","type":"text","mandatory":true}
],
"template_map": [
{"id":"titulo","variable":"[[publisher#text#titulo]]","found_template":true,"linked_template":true}
]
}fields contém campos com id e rótulo preenchidos. Os tipos disponíveis na tela são text, textarea, html e image. template_map também inclui variáveis do template ainda não vinculadas. O vínculo é recuperado de linked_template, usando o mesmo id; template_field_id é estado da interface, não uma propriedade persistida por esse serializador.
Ao gravar, o PHP converte marcadores [[...]] em @[[...]]@; ao editar/clonar, faz o inverso. publisher_normalize_array() ordena recursivamente as chaves para comparar JSON na edição, mas mantém a ordem efetiva dos elementos das listas.
Os templates fornecidos são noticias-simples e noticias-imagem-destaque, ambos Tailwind e alvo publisher. O primeiro usa texto, descrição e HTML; o segundo acrescenta imagem e texto alternativo. Os ids das variáveis diferem entre os idiomas (titulo/title, conteudo/content, por exemplo). O modo de IA publisher orienta a geração do corpo HTML e dos marcadores a partir dos campos.
Limitações e divergências do legado
A documentação antiga em português inventava tabelas publicador_tipos/publicador_taxonomias e workflows de aprovação. O controlador usa publisher; não implementa esses workflows nem o dashboard de rascunhos descrito no manual antigo. Os templates embarcados são os dois modelos de notícias acima.
Veja também
Controles do painel Tailwind
A escolha de modelos usa cartões compactos e prévias; controles e ações de copiar seguem o padrão compartilhado.
Convenções compartilhadas: Interface administrativa.