Especial V2

Editoria de tagpage responsável por gerar os stack de cards e configurações do Especial V2.




Editorias

A mesma estrutura é utilizada pela Redação, TAB e Conteúdo Publicitário - em desenvolvimento a versão para BOL.

Produção:
- Redação: http://publicador.intranet/collection.jsp?contentUri=/uol/www/especiais/tagpage.xml
- Conteúdo Publicitário: http://publicador.intranet/collection.jsp?contentUri=/uol/www/especiais/publicidade/tagpage.xml
- TAB: http://publicador.intranet/collection.jsp?contentUri=/uol/www/especiais/tab/tagpage.xml

Homologação:
- Redação: http://publicador.intranet/collection.jsp?contentUri=/uol/www/especiais/webmaster/especial.xml
- Conteúdo Publicitário: http://publicador.intranet/collection.jsp?contentUri=/uol/www/especiais/webmaster/publicidade/publicidade.xml
- TAB: http://publicador.intranet/collection.jsp?contentUri=/uol/www/especiais/webmaster/tab/tab.xml



API específica para busca e remodel

Em projeto-grafico-v2 > macros > api > monaco > special.vm



Componentes utilizados do V2

A estrutura e componentes de interação, publicidade e seo são herdados do V2, sendo eles:
page, audience, headscripts, interaction, seo, ads



Componentes específicos

Os componentes abaixo foram desenvolvidos para o Especial, sendo eles:
special-ads, special-album, special-cover, special-embed, special-footer, special-image, special-latest, special-list, special-mktbar, special-quote, special-share, special-thematic, special-video



Como funciona?

Na "controller.vm" do "special" é carregado o objeto de dados, já tratado pela remodel através da API de busca específica. O objeto contém a estrutura completa do especial, incluindo todas as configurações de necessárias. As especificidades de cada card pode ser vista na documentação de cada componente específico do special.

Dados e componentes tratados:

[componente] special-ads
Renderiza as publicidades, seguindo a regra de itens.
Para todos os especiais, a primeira publicidade é exibida após o primeiro card ([0] capa, [1] 1º card).
Após isso, é renderizada a cada 5 cards - nunca sendo posicionada imediatamente antes do componente special-footer. Ex:

#pgv2_render("special-ads", {}, $special-cards)

[componente] special-mktbar
Renderiza uma barra fixa de publieditorial só quando o especial for da editoria Conteúdo Publicitário.
Ela aparece fixa a partir do primeiro card ([0] capa, [1] 1º card). Ex:

#if($data.template == "mkt")
  #pgv2_render("special-mktbar", {}, $special-cards)
#end

[componente] special-footer
Renderiza o footer, último componente carregado no especial, com as informações obtidas através do $data.especial.footer para serem consumidas pelo componente. Ex:

$_json.extend($data.especial.footer, {
 "share" : $data.interaction,
 "latest-news" : $data.latest-news
})


#pgv2_render("special-footer", $data.especial.footer, $special-cards)

[componente] audience
Passa as variáveis globais de audience que serão utilizadas e manipuladas por todo o Especial pelo script.js. Ex:

#pgv2_render("audience", {
 "title": "$!{data.cover.titulo-padrao}",
 "type" : "special",
 "name" : "Tagpage|Especiais",
 'mediaName' : 'Tagpage|Especiais',
 "tags" : $!uniqueTags
})

Dúvidas podem ser tiradas com o Júlio (jcavalcante@uolinc.com), Lucas (cin_lcaprio@uolinc.com) e Hélio (hgodinho@uolinc.com)

[componente] seo
Passa as variáveis que serão usadas nas metatags do head do Especial. Ex:

#pgv2_render("seo", {
 "title": "$!{data.cover.titulo-padrao} | $!{config.portal.title} $!{config.central.title}",
 "description" : "$!{data.interaction.defaults.description}",
 "og:title" : "$!{data.cover.titulo-padrao} | $!{config.portal.title} $!{config.central.title}"
})

[dados] $data.interaction
Extendemos os dados que recebemos da remodel com os dados tratados, para serem utilizados posteriormente em outros componentes. Ex:

$_json.extend($data.interaction, {
 "defaults" : {
   "title": "$!{data.cover.titulo-padrao} | $!{config.portal.title} $!{config.central.title}",
   "description" : "$!{data.interaction.twitter.title}",
   "type": "article"
  },
  "facebook" : {
    "publisher" : "https://www.facebook.com/$!{config.components.interaction.facebook.user}"
  },
  "twitter" : {
    "image" : {
      "src" : "$!{data.interaction.defaults.image.src}"
    }
  }
})


#pgv2_render("interaction", $data.interaction)

[dados] $data.content.tags
Se o campo tags for preenchido na configuração geral do Especial, as tags serão tratadas pelo componente ads para carregar campanhas específicas. Ex:

#set($uniqueTags = [])
#if($data.content.tags)
 #foreach($tag in $data.content.tags)
  #if($uniqueTags.indexOf($tag) == -1)
   #set($null = $uniqueTags.add($tag))
  #end
 #end
#set($config.components.ads.tags = $uniqueTags)
#end