Tudo o que você precisa saber sobre 8 principais mudanças no Drupal 8
Escrito por: Angela "@webchick" Byron Apresentado por: Diego Lorenzetti, Brenno Valerio e Leo Nunes Traduzido por:
22 de setembro de 2015
Diego Lorenzetti [email protected] https://goo.gl/uJ6Em6 Desenvolvedor na:
Sobre mim:
O que faremos nesse
Webinar? • Analisaremos oito principais mudanças do Drupal 8,
em ordem de "nerdice" ;)
• Passaremos por algumas das maiores mudanças na API do Drupal 8 para desenvolvedores de módulos
• Responderemos a perguntas frequentes
• Perguntas & Respostas
1. Experiência de Criação de Conteúdo
Melhorada
2. (Mobile First)
3. Melhorias no Site Builder
Módulo Views no Core!
O que faz o Módulo Views? Cria elementos totalmente customizáveis como:
• Listagens
• Conteúdos na barra lateral
• Galerias de imagens
• Slideshows
• Saída de dados XML/ JSON
Blocos Melhorados
Novos Tipos de Campos
4. Multilíngue++
Tudo é Traduzível! • Estilos de imagens
• Formatos de textos
• Comentários
• Feeds
• ... e mais!
Não são necessários módulos contrib!
• Conteúdo
• Blocos
• Menus
• Perfis de usuários
• Taxonomias
• Views
5. Gerenciamento de Configurações
6. Melhorias no Desenvolvimento Front-end
Formulários HTML
PHPTemplate agora é Twig 7.x: page.tpl.php
• Sintaxe amigável para designers • Variáveis auto-escaped para melhor segurança http://twig.sensiolabs.org
8.x: page.html.twig <div id="page-wrapper"> <div id="page"> <div id="header"> <div class="section clearfix"> <?php if ($logo): ?> <a href="<?php print $front_page; ?>“ title="<?php print t('Home'); ?>“ rel="home" id="logo"> <img src="<?php print $logo; ?>" print
alt="<?php t('Home'); ?>" />
</a> <?php endif; ?>
<div class="layout-container"> <header role="banner">
{% if logo %} <a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home"> <img src="{{ logo }}" alt="{{ 'Home'|t }}"/> </a>
{% endif %}
Fim do suporte nativo ao IE 6, 7 e 8
7. Web Services
8. Código Moderno, Orientado a Objetos
Atenção: as coisas estão prestes a se tornar... geeky
"Saindo da Ilha"
Melhores e Modernas Práticas PHP
• PHP 5.4+ • Classes/Interfaces
• Namespaces
• Traits
• Dependency Injection
• Maioria dos padrões PSR-*
Powered by Symfony2
Tutorial: http://fabien.potencier.org/article/50/create-your-own-framework-on-
top-of-the-symfony2-components-part-1
…e dezenas de bibliotecas
de primeira linha
…
Um olhar sob o capô
YAML, YAML por toda parte
7.x: example.info 8.x: example.info.yml
name = Example description = "Example module" core = 7.x files[] = example.test config = admin/config/example dependencies[] = node
name: Example type: module description: "Example module" core: 8.x config: admin.example dependencies: -node
• Requer nova propriedade "type" • Sem mais arquivos[] (explicaremos mais
tarde) • Caminhos agora tem nome de máquina
para ajudar a prevenir quebra (explicaremos mais tarde)
Drupalismo: Tipo ini "Orgulhosamente inventado em outro lugar": YAML
Classes, classes por toda parte
sites/all/modules
example ▼
example.test
7.x ▼ modules
example
8.x ▼
▼
src ▼ ExampleController.php ExampleForm.php
ExampleInterface.php
Páginas, formulários, blocos, etc. agora são orientados a objetos.
"Hello World" no Drupal 7 example.module
Drupalismo: "ArrayPIs" ;)
function example_menu() { $items['hello'] = array(
'title' => 'Hello world’, 'page callback' => '_example_page', 'access callback' => 'user_access', 'access arguments' => 'access content',
); return $items;
} function_example_page() {
return t('Hello world.'); }
"Hello world" no Drupal 8
<?php namespace Drupal\example; use Drupal\Core\Controller\ControllerBase; /** * Returns responses for Example module routes.
*/ class ExampleController extends ControllerBase { public function hello() {
return new Response($this->t('Hello world.')); } }
"Orgulhosamente inventado em outro lugar":
- PSR-4 Class Autoloader - YAML
-Código OO
example.routing.yml example.hello:
path: '/hello' defaults: _content: '\Drupal\example\ExampleController::hello' requirements: _permission: 'access content’
Definindo um bloco: 7.x
Drupalismo: APIs "Mystery Meat" baseadas em convenções de nomenclatura
example.module
<?php function example_block_info() { $blocks['example'] = array(
'info' => t('Example block'), ); return $blocks; } function example_block_view($delta = '') { $block = array(); switch ($delta) { case 'example': $block['subject'] = t('Example block'); $block['content'] = array(
'hello' => array( '#markup' => t('Hello world'), ),
); break; } return $block; }
Definindo um bloco: 8.x src/Plugin/Block/ExampleBlock.php
"Orgulhosamente Inventado em outro lugar": - Annotations
- APIs definidas por Interfaces
<?php namespace Drupal\example\Plugin\Block; use Drupal\block\BlockBase; /** * Provides the Example block. * @Block( * id = "example", * admin_label = @Translation("Example block"), * category = @Translation("Example") *) */ class ExampleBlock extends BlockBase {
public function build() { return array('hello' => array ( '#markup' => $this->t('Hello world.') )); }
}
Leia mais sobre isso!
https://www.drupal.org/documentation/developer/api https://api.drupal.org/api/drupal/8
Todas as mudanças na API do Drupal 8
https://www.drupal.org/list-changes
Sumário das novidades!
• Experiência de Criação de Conteúdo melhorada
• Mobile First • Views, expandindo a
modelagem de conteúdo • Multilíngue++
• Gerenciamento de Configurações
• Twig & HTML5
• Web Services
• Código Moderno, Orientado a Objetos
…e centenas de outras melhorias!
Escopo completo: https://www.acquia.com/resources/ ebooks/ultimate-guide-drupal-8
MAIS DE 2.900 pessoas contribuíram com o Drupal 8 até
agora!
Repostas para suas perguntas
sobre o Drupal 8!
Quando o Drupal 8 será lançado?
Quando é "quando estiver pronto"?
https://www.drupal.org/drupal-8.0/get-involved
Algum tempo depois desse gráfico atingir zero.
O que falta nessa lista?
• Correções/melhorias na performance
• Correções/melhorias de
segurança
• Upgrade de versão beta-para-beta
• À prova de futuro: (PHP7,
Symfony 3, etc.)
Beta -> rc -> 8.0.0 • WHILE COUNT de problemas
críticos >0, crie versões beta mensamenlte (estamos aqui!)
• IF problemas críticos === 0, comece versões candidatas a lançamento bi-semanais (assim como no D6 e D7)
• Apenas consertos críticos ou patches extremamente não disruptivos são comitados durante RC, para previnir regreções.
https://www.drupal.org/core/release-cycle#rc
• Uma vez que contagem, grau, e natureza dos problemas críticos parecerem gerenciáveis, marque uma data de lançamento para >= 3 semanas depois
O que acontece depois do 8.0.0? • O suporte ao Drupal 6 termina 3 meses
depois do lançamento do Drupal 8.0.0's.
• Lançamentos de correções de bugs continuam na programação mensal como é agora no D6/D7.
• Novos lançamentos de "feature" do Drupal 8 a cada 6 meses (8.1.x, 8.2.x…).
• Drupal 9 se previsão até muito tempo depois, quando tiver "carne" o bastante (completadas as propostas de mudança que não podem ser comitadas no 8.x) para fazer um produto convincente.
• Drupal 8 entra no modo "LTS“ (apenas correções de segurança) depois do Drupal 9.
E sobre os upgrades?
Caminho de migração entre versões principais (6/7 => 8)
Construa seu site em Drupal 8 como um novo site, depois igre o conteúdo, usuários, etc.
Drupal 6 => 8 já existem migrações! Drupal 7 => 8 migrações em progresso.
Deve-se fazer a portabilidade de seu próprio código customizado; fique com seus módulos conhecidos se possível!
Caminho de upgrade entre versões 8.x Ainda não tem suporte nativo; veja no contrib:
https://www.drupal.org/project/head2head
http://www.drupal.org/project/drupalmoduleupgrader
Dê início à portabilidade do seu código customizado
Quando eu posso usar o D8?
Alguns pioneiros já começaram...
Quando o D8 será usado pela
maioria?
Desenvolvedores de Temas e
Módulos
*Agora*! (ainda dá tempo de corrigir APIs!)
Maioria
Quando essas linhas se cruzarem
total
D8
D7
Pioneiros
Quando houver suporte para
upgrade beta-para-beta
Plataforma provada, mas a
comunidade esperando o D9
Conservadores
Deixe a comunidade ser seu guia. https://www.drupal.org/project/usage/drupal
http://www.slideshare.net/ahorncologne/why-drupal-8-why-now-aprmay-2015
De extrema importância Time de desenvolvimento
limitado Time de experts,
confortável realizando reparos
Devs sentem-se mais confortáveis com código
procedural
Devs sentem-se mais confortáveis com código OO e
Symfony
Menos urgente
Brochuware Muitos recursos
Público
Rápida Publicação Necessidades complexas
Drupal 8
Drupal 7
Interno / R&D / Protótipo
Feito com o que está no core
Experimental
Estou fazendo um site novo. Começo com D7 ou D8?
Ficando com o D7? Saiba como obter as vantagens do D8 hoje!
Features Nativas do D8 Contribuições Equivalentes do D7 WYSIWYG CKEditor: https://drupal.org/project/ckeditor
Edição no Local Quick Edit: https://drupal.org/project/quickedit
Barra de Ferramentas Responsiva “Mobile Friendly Navigation Toolbar" https://drupal.org/project/navbar
Front-End Responsivo Omega, Zen, Adaptive, etc. base themes Admin Responsivo Ember: https://drupal.org/project/ember
Imagens Responsivas Picture: https://drupal.org/project/picture Tabelas Responsivas Responsive Tables: https://drupal.org/project/responsive_tables
Overlay Simplificado Escape Admin: https://drupal.org/project/escape_admin Multilíngue Internationalization: https://www.drupal.org/project/i18n
Entity Translation: https://www.drupal.org/project/entity_translation
Blocos Melhorados Bean: https://www.drupal.org/project/bean Configurações Features: https://www.drupal.org/project/features
Web Services RESTful Web Services: https://www.drupal.org/project/restws
Obrigado! :) Perguntas?