Mind Bending

Conforme destacado nesses outros artigos, agora estou usando o Pelican. Mas simplesmente instalá-lo não é o suficiente, é necessário customizá-lo para atender suas necessidades. Para isso, hoje vamos ver como configurar o Pelican através do comando pelicanconf.py.

Pelican

É importante lembrar que todas as configurações estão documentadas aqui e eu não vou poder explicar todas, vou passar rapidamente pelas mais importantes e as que eu precisei modificar.

Configuração Básica

Primeiro confirme a configuração básica do Pelican, isto é, SITENAME, AUTHOR, TIMEZONE e paginação:

AUTHOR = u'Magnun'
SITENAME = u'Mind Bending'
TIMEZONE = 'America/Sao_Paulo'
DEFAULT_PAGINATION = 10

Para uma lista completa dos fusos existentes (e seu respectivo TZ) veja este artigo da Wikipédia.

Configurando Seu Feed

Na documentação oficial do Pelican, exitem diversas configurações para o seu feed, seja ele RSS ou Atom, para uma lista completa de configurações veja a seção Feed Settings.

Mas as principais configurações que você talvez precise alterar são:

  1. FEED_ALL_RSS e FEED_ALL_ATOM: Que define o nome do arquivo onde será armazenado o feed de todos os seus artigos, em RSS ou Atom;
  2. CATEGORY_FEED_RSS e CATEGORY_FEED_ATOM: Que definne o nome do arquivo onde será armazenado o feed de cada categoria (o nome da categoria é definido por %s), seja ele RSS ou Atom.

Abaixo as minhas configurações:

FEED_ALL_RSS = 'feeds.rss'
CATEGORY_FEED_RSS = 'feeds/%s.rss'
FEED_ALL_ATOM = 'feeds.atom'
CATEGORY_FEED_ATOM = 'feeds/%s.atom'
FEED_USE_SUMMARY = True

Customização do Menu e Tag Cloud

Estas configurações estão intimamente ligadas a implementação do tema que você está usando, ou seja, elas podem vir a não funcionar caso o autor do tema não as tenha implementado corretamente.

As seguintes configurações definem se será exibido (ou não) links para categorias e páginas no menu do seu site:

DISPLAY_CATEGORIES_ON_MENU = False
DISPLAY_PAGES_ON_MENU = False

Já as configurações abaixo definem o tamanho da tagcloud e a quantidade de variações de tamanho de fonte:

TAG_CLOUD_STEPS = 8
TAG_CLOUD_MAX_ITEMS = 100

Configurando Temas e Plugins

Este tema é extremamente extenso e não vou cobrir com muitos detalhes neste momento. Vou apenas demonstrar como ativar plugins e selecionar um tema par seu site:

# Plugins
PLUGIN_PATH = './.plugins'
PLUGINS = [
        'gzip_cache',
        'sitemap',
        'related_posts',
    ]

THEME = "./.themes/boothack"

Convenientemente o pelican tem uma configuração chamada PLUGIN_PATH (seu uso não é obrigatório), responsável por indicar onde todos os plugins estão armazenados. Sendo possível, em seguida, apenas informar uma lista (ou tupla) contendo os nomes dos plugins que você deseja ativar.

Uma vez que só é possível ativa um tema por vez no Pelican, os desenvolvedores acharam desnecessário a definição de uma variável similar ao PLUGIN_PATH para os temas. Desta forma, para ativar um tema para seu site, basta informar seu nome (e caminho) na variável THEME.

É importante lembrar que muitos temas e plugins possuem configurações próprias que podem ser incluídas neste mesmo arquivo. Então recomendo que leia atentamente a documentação dos plugins e tema utilizados.

Arquivos Estáticos

Para a devida configuração do seu site você pode precisar usar alguns arquivos estáticos, como o robots.txt ou favicon.ico, ou até mesmo informar onde estarão armazenadas suas imagens e áudios.

Para informar onde estão estes arquivos basta você informá-los na variável STATIC_PATH, todos estes diretórios serão copiados para o destino mantendo a estrutura das pastas.

STATIC_PATHS = [
    'audio',
    'images',
    'extra/robots.txt',
    'extra/favicon.ico',
    ]

Infelizmente nem todos os arquivos devem ser copiados mantendo a mesma estrutura, por exemplo os arquivos robots.txt e favicon.ico. Estes arquivos deveriam estar na raiz do site.

Para controlar o destino dos arquivos estáticos podemos utilizar a variável EXTRA_PATH_METADATA, conforme exemplo abaixo:

EXTRA_PATH_METADATA = {
    'extra/robots.txt': {'path': 'robots.txt'},
    'extra/favicon.ico': {'path': 'favicon.ico'},
    }

Paginação

Não sei dizer se é algo pessoal, ou se é resquício do Wordpress, mas a forma como o Pelican faz paginações (do índice por exemplo) me incomodou bastante. Por padrão o Pelican monta os índices da seguinte forma: index.html, index2.html, index3.html e etc. Eu realmente esperava que o índice fosse organizado da seguinte forma: /index.html, /page/2/index.html, /page/3/index.html e etc.

Felizmente, encontrei uma configuração que resolve isso:

PAGINATION_PATTERNS = (
    (1, '{base_name}/', '{base_name}/index.html'),
    (2, '{base_name}/page/{number}/', '{base_name}/page/{number}/index.html'),
)

Artigos, Páginas, Categorias, Tags e Autores

Da mesma forma não me agradou muito a forma como o Pelican salva os artigos, páginas, categorias, tags e autores. Todos são salvos nos formatos {slug}.html, category/{slug}.html e assim por diante.

Pessoalmente eu prefiro que as páginas sigam a estrutura similar ao utilizado para os índices, por exemplo, category/{slug}/index.html. Para que este comportamento seja atingido utilizei a seguinte configuração:

ARTICLE_URL = "{slug}"
ARTICLE_SAVE_AS = "{slug}/index.html"

PAGE_URL = "{slug}"
PAGE_SAVE_AS = "{slug}/index.html"

CATEGORY_URL = "category/{slug}"
CATEGORY_SAVE_AS = "category/{slug}/index.html"

TAG_URL = "tag/{slug}"
TAG_SAVE_AS = "tag/{slug}/index.html"

AUTHOR_URL = 'author/{slug}'
AUTHOR_SAVE_AS = 'author/{slug}/index.html'

Notem que boa parte dessas configurações refletem preferências minhas e não devem ser um padrão para todos.

Próximos Artigos

Por enquanto é só pessoal, mas vou continuar tentando escrever sobre o Pelican com a mesma frequência pois, ainda quero mostrar como utilizar e configurar plugins, temas, NGINX e o Git como gestor de workflow.

Até mais…

Magnun

Magnun

Engenheiro de telecomunicações por formação, mas trabalha com suporte à infraestrutura GNU/Linux, e nas horas vagas é Programador OpenSource (Python e C) desenhista e escritor do Mind Bending Blog.


Comments

comments powered by Disqus