FlatPress CMS

logotipo do FlatPress CMS

Seu ponto de partida sobre o FlatPress CMS no idioma português

GitHub deste site

Informações diversas sobre temas para o FlatPress CMS

Alterar um tema

Para instalar navegue até a pasta do flatpress fp-interface->themes e descompacte o arquivo. Abra o site no painel de controle, acesse o menu Temas e clique no tema desejado, em seguida, você pode selecionar um outro estilo.


Temas disponíveis

No site oficial há poucos temas interessantes, e os que funcionam estão com design de blogs antigos, e que portanto, não são responsivos.

Um ponto positivo do CMS é que além do tema do blog, é possível personalizar o tema do painel de administração e inserir múltiplos estilos.

Compatíveis com v1.2.1: 23, Avelion, Azure, Bearggero*, BitterSweet, Black Minimalism, Blue Bayou, Dark, Deckay 4.0, Dilectio, Disciple, Emerald, Esh, FlatRead*, Flat Misty Look*, FPAleksandr, FPSkeleton* , Gray*, Grey Matter*, Hemingway*, Insel Fixed Header*, IMobile, Inove*, IoVetro, iTyp, Leggero v2 plus, Leggero3c+1, Ligero, Mini Simple*, Nautica22 Liquid, NHWS Scalable*, Ornate*, Pastels*, PivotX*, Quaderno, Simpla Flex*, Simple Wood*, Snail , Soul Vision, , A Touch of Glass* , Webfi, Windows, Xubox, e o tema que não está listado no wiki: RamblingRoss.

* coloque o mouse no asterisco para ver o comentário relacionado


Estrutura da pasta fp-interface


fp-interface/ <-- Contém a camada de apresentação, temas e traduções lang/ cs-cz/ en-us/ ... pt-br/ lang.admin.config.php lang.admin.entry.php lang.admin.main.php lang.admin.maintain.php lang.admin.php lang.admin.plugin.php lang.admin.static.php lang.admin.themes.php lang.admin.uploader.php lang.admin.widgets.php lang.comments.php lang.comments.php lang.contact.php lang.default.php sharedtpl/ atom.tpl commentadminctrls.tpl comment-atom.tpl comment-form.tpl commentmail.tpl comment-rss.tpl comments.tpl contact.tpl entryadminctrls.tpl errorlist.tpl form.css login.tpl login_success.tpl rss.tpl search.tpl search_results.tpl themes/ leggero/ admin.tpl comments.tpl cpheader.tpl default.tpl entry-default.tpl footer.tpl header.tpl id index.tpl preview.png preview.tpl previewstatic.tpl static.tpl theme.conf.php widgets.tpl flatmaas-rev/ preview.png style.conf.php imgs/ arrow.gif backshade.png backshade-2.png backshade-3.png blockquote.png entry.png fp-logo.png fp-logo-crop.jpg fp-logo-crop.png sf_h4.png shade.png transp.gif res/ admin.css column.css common.css globals.css style.css toggleMenu.js leggero/ preview.png style.conf.php imgs/ backshade.png backshade-2.png backshade-3.png buttonsh.png buttonsh2.png shade.png res/ admin.css column.css common.css globals.css print.css style.css leggero-v2/ preview.png style.conf.php imgs/ back.jpg backshade.png buttonsh.png buttonsh2.png res/ admin.css column.css common.css globals.css print.css style.css

Informações de desenvolvimento

PHP Template

O FlatPress utiliza o Smarty para auxílio na criação de temas.

Smarty é um sistema que traduz templates contendo tags especiais para o php. Ele nos permite abstrair mais da lógica e a facilitar ao projetar um modelo. Caso não tenha familiaridade, sugiro que leia a documentação v3 e v4 (somente em inglês) e a v2 (em português, mas desatualizada).

Está em teste a atualização de versão do FlatPress com o Smarty 4.x em branch separado.

Estrutura Padrão

Utilize o tema leggero como base e altere as variáveis. Os arquivos abaixo são os requeridos.

fp-interface/ themes/ pastaNomeTema/ id <- Contém o mesmo nome da pasta do tema theme.conf.php <- Arquivo com as configurações, a variável theme['version'] deve ser maior que 0.70 para o estilo carregar corretamente admin.tpl <- Entrada da página de administração index.tpl <- Página de entrada do tema (blog ou site) default.tpl <- Página padrão utilizada na paginação, no comentário, página de erro etc static.tpl <- Requerido quando há páginas estáticas, por exemplo, página 'Sobre' previewstatic.tpl <- Se não interessar a pré-visualização, crie o arquivo com o texto "Pré-visualização Desativada" comments.tpl <- Template necessário ao chamar a URL com final '.../SeuArtigo/comments' Não é obrigatório, deixe vazio caso não vá utilizar comentários ou essa URL Você pode utilizar o Disqus substituindo todo conteúdo de '{comments}...{/comments}' por '{literal} código JS {/literal}' (mas não recomendo) preview.tpl <- Item incluso no início do Editor quando edita uma postagem Se não interessar a pré-visualização, crie o arquivo com o texto "Pré-visualização Desativada" preview.png <- Visualização padrão do tema que aparece no painel pastaNomeDoEstilo/ <- Deve ser inserido no arquivo de configuração acima na variável theme['default_style'] o nome dessa pasta preview.png <- Visualização do estilo que personalizado style.conf.php <- Arquivo de configuração do estilo res/ <- Contém os arquivos de recursos utilizados no template como css, dentre outros style.css admin.css pastaNomeDoEstilo2/ <- Seguir a mesma estrutura do 'pastaNomeDoEstilo/' ... pastaNomeDoEstilo3/ ...

Abaixo o conteúdo de alguns arquivos com algumas informações

# index.tpl {* Este é um comentário em Smarty que não será mostrado nem processado *} <!-- Você pode incluir comentário HTML também, que ficarão visíveis no código --> {* Essa index.tpl é a página de entrada do blog, você pode incluir só HTML se quiser *} {* Inclui um arquivo com o cabeçalho do HTML (não é obrigatório, inclusão de arquivos) *} {include file=header.tpl} <div id="main"> {* Define uma marcação de bloco 'igual a tag HTML, tem apenas fins semanticos' *} {entry_block} {* define as entradas - requerido *} {entry} {include file='entry-default.tpl'} {/entry} {* A paginação requer o template default.tpl *} <div class="navigation"> {nextpage}{prevpage} </div> {/entry_block} </div> {* não é obrigatório separar os widgets em outro arquivo, pode ser inserido nesse arquivo *} {include file=widgets.tpl} {include file=footer.tpl}
# admin.tpl {* Página de entrada padrão do painel de administração *} {* Inclui um arquivo com o cabeçalho do HTML (não é obrigatório, inclusão de arquivos, caso não queira) *} {* Editando da maneira correta você pode refazer o painel do modo que achar mais interessante *} {* Baixe outros temas e veja os arquivos de cada um e edite conforme suas necessidades *} {include file=cpheader.tpl} <div id="cpmain"> <div class="entry"> <ul id="admin-small-nav"> <li><a href="{$smarty.const.BLOG_BASEURL}">Home</a></li> <li><a href="{$smarty.const.BLOG_BASEURL}login.php?do=logout">Logout</a></li> </ul> {page} <h1 class="title">{$subject}</h1> <div class="body">{controlpanel}</div> {/page} </div> </div> {include file=footer.tpl}
# theme.conf.php <?php /* * Theme Name: NomeDoSeuTema * Theme URI: http://www.nomeDoSiteDoTema.com * Description: Descreva aqui sobre seu tema.<br><br>Este tema possui outros estilos <a href="admin.php?p=themes&action=style">veja aqui</a> * Version: 0.71 * Author: NomeDeQuemCriou * Author URI: http://www.nomeDoSiteDoDesenvolvedor.net */ $theme['name'] = 'NomeDoSeuTema'; $theme['author'] = 'NomeDeQuemCriou'; $theme['www'] = 'http://www.nomeDoSiteDoTema.com'; $theme['description'] = 'Descreva aqui sobre seu tema.'; # coloque aqui um numero da versão; devido a bug de não imprimir a pasta do estilo padrão, deve ser igual ou superior a 0.71 # sugiro para testes até 0.99 e versões estáveis 1.0 em diante $theme['version'] = 0.71; $theme['default_style'] = 'pastaNomeDoEstilo'; # trata-se da pasta do estilo padrão $theme['style_def'] = 'style.css'; # nome do arquivo CSS para o estilo padrão $theme['style_admin'] = 'admin.css'; # css do painel de administração # sobrescreve o menu padrão e o layout do painel remove_filter('admin_head', 'admin_head_action'); # registra dois widgetsets para o tema register_widgetset('right'); register_widgetset('left'); ?>
# style.conf.php <?php /* * Style Name: Nome do Estilo * Style URI: http://www.nomeDoSiteDoTema.com * Description: Informação sobre o estilo * * Version: 0.705 # Número da versão do estilo * Author: NomeDeQuemCriou * Author URI: http://www.nomeDoSiteDoDesenvolvedor.net */ $style['name'] = 'NomeDoSeuEstilo'; $style['author'] = 'NomeDeQuemCriou'; $style['www'] = 'http://www.nomeDoSiteDoTema.com'; # versão do estilo $style['version'] = 0.705; # arquivos padrões do estilo localizados dentro da pasta 'res' $style['style_def'] = 'style.css'; $style['style_admin'] = 'admin.css'; $style['style_print'] = 'print.css'; $style['style'] = 'default'; ?>
# Exemplo de inserção de arquivo - url válida {* caminho absoluto *} {include file="/usr/local/include/templates/cabecalho.tpl"} {* caminho absoluto (idem) *} {include file="file:/usr/local/include/templates/cabecalho.tpl"} {* caminho absoluto do windows (DEVE usar o prefixo "file:") *} {include file="file:C:/www/pub/templates/cabecalho.tpl"} {* incluir a partir do recurso de template chamado "db" *} {include file="db:header.tpl"} ------------------------------------------------------------------- # Trabalhando diretamente com PHP {php} // Inclua aqui códigos PHP que serão ignorados pelo processador Smarty // Script php diretamente no template include("/caminho/para/condicoes_do_tempo.php"); // Use esse comando no início do index.tpl para verificar quais as variáveis do flatpress echo '<pre>'; print_r($this->get_template_vars()); echo '</pre>'; {/php} ------------------------------------------------------------------- # Carregando arquivo externo PHP e atribuindo no template # Modo correto de usar ao invés de "{php} ... {/php}" que está depreciada # load_nav.php ------------ <?php // carrega variáveis de um banco de dados mysql e define elas para o template require_once("MySQL.class.php"); $sql = new MySQL; $sql->query("select * from site_nav_sections order by name",SQL_ALL); $this->assign('sections',$sql->record); ?> # index.tpl --------- {* inclui o arquivo com os dados acima *} {include_php file="/caminho/para/load_nav.php"} {* itera sobre os dados '$sections' atribuidos no arquivo acima *} {foreach item="curr_section" from=$sections} <a href="{$curr_section.url}">{$curr_section.name}</a><br> {foreachelse} Nenhum resultado encontrado {/foreach} ------------------------------------------------------------------- # Miscelaneas {* tudo que estiver dentro das tags abaixo será apresentado em uma linha *} {strip} <table border=0> <tr> <td> ... </table> {/strip} {* será renderizado no navegador como: *} <table border=0><tr><td>... # Email com codificação em JS ou Hexadecimal {mailto address="me@domain.com" encode="javascript" subject="Hello to you!" cc="you@domain.com,they@domain.com" extra='class="email"'} {mailto address="me@domain.com" encode="hex" extra='class="email"'}

Constantes do Tema

  • {$flatpress.title} - Título do Blog
  • {$flatpress.subtitle} - Legenda do blog
  • {$flatpress.footer} - O texto mostrado na parte inferior da página)
  • {$flatpress.www} - A URL do Blog especificada na Área de Administração
  • {$flatpress.autor} - Nome do autor
  • {$flatpress.email} - Endereço de e-mail
  • {$flatpress.maxentries} - Número máximo de entradas mostradas por página
  • {$flatpress.version} - Versão do CMS
  • {$flatpress.charset} - Informa o conjunto de caracteres
  • {$flatpress.themeurl} - Retorna a URL do tema que está ativa (por exemplo: /fp-interface/themes/leggero/)

  • {$subject} - Título da postagem
  • {$pagetitle} - Contém o título da página que está sendo visualizada

Constantes do Painel

  • {$fp_config.locale.lang} - Informa o idioma corrente do FlatPress, por exemplo 'pt-br' para Português, e 'en-us' para Inglês Americano
  • {$fp_config.locale.dateformat} - Formato da data
  • {$fp_config.locale.timeformat} - Formato da hora

  • {$panelstrings.descr} - Descrição do Painel, dentro da Área de Administração
  • {$panelstrings.head} - O título do Painel, dentro da Área de Administração

Outros

A variável reservada smarty possui várias utilidades, destaco abaixo apenas algumas:

  • {$smarty.const.BLOG_BASEURL} - Informa a URL base, por exemplo, para a instalação na pasta flatpress retornará https://www.site.com/flatpress/
  • {$smarty.now|date_format:"%d/%m/%Y %H:%M:%S"} - Formata a hora no padrão português dd/mm/yyyy hh:mm:ss
  • {$smarty.server.SERVER_NAME} - Retorna o nome do servidor

  • {$smarty.get.page} - Mostra o valor de exibição da página do URL ($_GET) .../index.php?page=foo
  • {$smarty.post.page} - Retorna o valor da variável page da requisição $_POST .../index.php?page=foo
  • {#foo#} ou {$smarty.config.foo} - Retorna o valor da váriavel 'foo' definida em um arquivo .conf carregada pela sintaxe "{config_load file='foo.conf'}" [+]

  • {literal} conteúdo {literal} - Envolva o texto ou código com essas tags quando precisar que o processador Smarty deixe como está escrito
  • {"texto "|substr:3|strtoupper} - Remove as 3 primeiras letras do subtítulo e altera para maiuscula (após o '|' é chamado a função e os ':' separa os parâmetros) [+]
  • {$artigo|truncate:40:"..."} - Quebra o conteúdo da string em 40 caracteres e insere os 3 pontinhos (uso de 2 parâmetros)

  • {nextpage}/{prevpage} - Variáveis de paginação para pagina próxima e antiga

Implementar e Mover as Extensões

Na estrutura do tema você irá deixar uma ou mais áreas para inserir as extensões (plugins). Estas são movimentadas de um local para o outro através dos widgets.

# Insere o widget na coluna esquerda do tema <div class="col-left"> {widget pos=left} {$subject} {$content} {/widget} </div> # Insere o widget na coluna direita do tema <div class="col-right"> {widget pos=right} {$subject} {$content} {/widget} </div> # outros valores de pos (posição) são 'top' e 'bottom' {widget pos=top} ... {widget pos=bottom} ...

Lembre que o valor após 'pos' acima deve estar registrada na configuração do arquivo /theme.conf.php utilizando register_widgetset('valor').

Caso queira definir um valor de pos, além dos informados acima, edite o arquivo /fp-content/config/widgets.conf.php e insira mais um valor no array.

Leia mais sobre os widgets e o desenvolvimento das extensões e inserção no tema.

O ideal é sempre separar os arquivos de template .tpl logicamente, por exemplo, navtop.tpl (para navegação no topo), header.tpl para cabeçalho e widget-left.tpl para coluna esquerda e etc, quando há mais de uma variável com o mesmo nome no mesmo arquivo, nesse caso o smarty irá processá-las separadamente. Simule o erro ao copiar o conteúdo de widgets.tpl do arquivo default.tpl e colar na 5a linha.




Mais informações no wiki oficial sobre Widgets e criação de tema