Download - Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesita saber sobre los 8 principales cambios en Drupal 8
➔ Carlos Ospina- Gerente de Cuenta Técnico, Acquia ➔ Jairo Alberto Pinzón- Gerente General, SeeD➔ Aldibier Morales- CTO y Cofundador de SeeD
Angie @Webchick Byron
@webchick
… Desde entonces
➔ El blog de Dries del 8 de Septiembre◆ http://buytaert.net/drupal-8-now-ships-with-beta-to-beta-
updates➔ Actualizaciones beta-a-beta ➔ Oportunidad para comenzar a desarrollar en Drupal 8
◆ Sitios que dependen mayormente de las funcionalidades proporcionadas en el core de Drupal 8
◆ Proyectos que tomaran varios meses de desarrollo ◆ Sitios para los cuales el beneficio de usar Drupal 8
sobrepasan el esfuerzo de trabajar con módulos que aún no cuentan con la versión de Drupal 8 correspondiente
1. Experiencia mejorada en la creación de
contenido
¿Cuál es el propósito de este webinar?
• Ir a través de los 8 principales cambios de Drupal 8, en orden de rareza. ;)
• Recorrer algunos de los grandes cambios en la API de D8 para desarrolladores de módulos
• Responder a las preguntas frecuentes
• Preguntas y respuestas
2. Enfoque a móviles primero
3. Mejoras en
construcción de sitios
¡Vistas en el Core!
¿Qué es el módulo Vistas?• Creación totalmente personalizable de:
• "Admin listings"
• Contenido lateral
• Galerías de imágenes
• "Slideshows" (presentación en diapositivas)
• Salida en XML/JSON
¡con cero líneas de código!
Mejoras en los bloques
Nuevos tipos de campos
4. Multidioma++
¡Todo es traducible!• Contenido
• Bloques
• Menús
• Perfiles de usuarios
• Taxonomías
• Vistas
• Estilos de imágenes
• Formatos de texto
• Comentarios
• Feeds
• …y más!
• ¡No se requieren módulos contribuidos!
5. Administración de la configuración
Un sistema central para resolver este problema
variable_set()/variable_get()
ctools_export_object()/ctools_export_load_object()
db_select()/db_update()/db_delete()
$conf[...];hook_update_N()
drush fu
6. Mejoras para desarrolladores Front-end
Formularios HTML5
PHPTemplate es ahora Twig7.x: page.tpl.php 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; ?>" alt="<?php print 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 %}
• Un sintaxis más sencillo para los diseñadores • Variables auto-escaped para mejor seguridad
http://twig.sensiolabs.org
No más soporte (en el core) para IE 6, 7 y 8
7. Servicios Web
8. Código moderno orientado a objetos - OO
Advertencia: Las cosas se van a poner... extrañas.
"Saliendo del aislamiento"
Las mejores prácticas del PHP moderno
• PHP 5.4+
• Classes/Interfaces
• Namespaces
• Traits
• Dependency Injection
• La mayoría de estándares PSR-*
Soportado por Symfony2
Tutorial: http://fabien.potencier.org/article/50/create-your-own-framework-on-top-of-the-symfony2-components-part-1
…y docenas de otras librerías (las mejores)
…and dozens of other librariesUn vistazo bajo el capó
YAML, YAML en todas partes
7.x: example.info 8.x: example.info.ymlname = Exampledescription = "Example module"core = 7.xfiles[] = example.testconfig = admin/config/exampledependencies[] = node
name: Exampletype: moduledescription: "Example module"core: 8.xconfig: admin.exampledependencies: - node
• Nueva propiedad "type" obligatoria• No más archivos [] (vamos a llegar a esto más
adelante)• Las paths ahora tienen nombre de máquina
para prevenir daños (también vamos a llegar a esto más adelante)
Classes, classes en todas partes
sites/all/modules
example
▼
▼
example.test
7.xmodule
sexampl
e
▼
▼
8.x
src▼
ExampleForm.php
ExampleInterface.php
ExampleController.php
…Páginas, formularios, bloques, etc. Ahora todo es orientado a objetos.
"Hello World" en Drupal 7
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.');}
example.module
Drupalismo: "ArrayPIs" ;)
"Hello World" en Drupal 8example.hello: path: '/hello' defaults: _content: '\Drupal\example\ExampleController::hello' requirements: _permission: 'access content'
example.routing.yml
<?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.')); }}
src/ExampleController.php
"Orgullosamente tomado de otro lado":
- YAML- Autocarga de clases
PSR-4- Código OO
Definiendo un bloque: 7.xexample.module<?phpfunction 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;}
Drupalismo: ”código misterioso" APIs
basadas en convenciones de
nombres
Definiendo un bloque: 8.x<?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.')
)); } }
src/Plugin/Block/ExampleBlock.php
" Orgullosamente inventado en otro
lado":- Anotaciones
- APIs definidas por interfaces
Definiendo un bloque: 8.x<?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.')
)); } }
src/Plugin/Block/ExampleBlock.php
¡Entérate de más!
https://api.drupal.org/api/drupal/8 https://www.drupal.org/documentation/developer/api
Cada cambio de API en Drupal 8
https://www.drupal.org/list-changes
Resumen de grandes mejoras• Mejora en la experiencia
de creación de contenidos
• Desarrollo orientado a móviles
• Vistas, modelado de contenido expandido
• Multidioma++
• Administración de la configuración
• Twig y HTML5
• Servicios Web
• Código OO moderno
• …y ¡otros cientos de mejoras!
• Y en total detalle: https://www.acquia.com/resources/ebooks/ultimate-guide-drupal-8
¡Respuesta a las preguntas espinosas sobre Drupal 8!
¿Cuándo será lanzado Drupal 8?
¿Cuando es "cuando esté listo"?
Algún tiempo después de que este gráfico llegue a cero.
https://www.drupal.org/drupal-8.0/get-involved
¿Qué es lo que queda en la lista?
• Mejoras/ajustes de rendimiento
• Mejoras/ajustes de seguridad
• Ruta de actualización de Beta-a-beta
• A futuro (PHP7, Symfony 3, etc.)
beta -> rc -> 8.0.0• Mientras el conteo de “issues”
críticos > 0, crear lanzamientos betas mensuales (acá estamos)
• Si los issues críticos === 0, iniciar lanzamientos quincenales de versiones candidatas (tal como las ventanas de lanzamiento de D6/D7)
• Solo arreglos críticos, no bloqueantes (Ej: documentación), con parches lanzados solo sobre la versión candidata, para evitar regresiones.
• Una vez la cantidad , importancia, y naturaleza de los asuntos críticos parezcan manejables, se establecerá una fecha de lanzamiento >= 3 semanas después.
https://www.drupal.org/core/release-cycle#rc
alpha releases
beta
RC1
Acá estamos!
x
“CUANDO ESTÉ”
¿qué pasa después de 8.0.0?
• Se termina el soporte a Drupal 6 3 meses después del lanzamiento de Drupal 8.0.0.
• Lanzamientos de de corrección de errores/seguridad continúan en la agenda mensual tal como ahora en D6/D7.
• Nuevos "lanzamientos de funcionalidades" de Drupal 8 cada 6 meses (8.1.x, 8.2.x…) with non-BC breaking improvements.
• Drupal 9 no tendrá una rama hasta mucho después, cuando haya suficiente "carne" (propuestas de cambios completadas y que no puedan ser implementadas en 8.x) para hacer un producto atractivo
• Drupal 8 ingresa en modo "LTS" (solo correcciones de seguridad) después de Drupal 9.0.0
D6 NO MÁS
SOPORTE
8.2.0
8.1.0
NUEVAS CARACTERÍSTICAS
…
¿Qué pasará con las actualizaciones?
• Ruta de Actualización entre versiones 8.x
• No soportada en el “core” todavía; ver https://www.drupal.org/project/head2head en contribución por el momento
• Ruta de Migración entre las versiones más importantes (6/7 => 8)
• Desarrolle su nuevo sitio en Drupal 8, luego migre el contenido, usuarios, etc. …cambio y fuera
• Drupal 6 => 8 ya es posible hacer migraciones! Drupal 7 => 8 migraciones en progreso…
• Debe portar su código personalizado; quédese con los módulos contribuidos que funcionan, si puede
Empiece a portar su código personalizado
https://www.drupal.org/project/drupalmoduleupgrader
¿Cuándo puedo usar D8?
Algunos adoptantes tempranos ya lo están usando…
¿Cuándo se podrá usar D8 masivamente?
Desarrollador de módulos/temas
*ya mismo*!(todavía hay tiempo de
mejoras en las APIs!)
Mayoría
Una vez se cruce este limite
total
D8
D7
Adoptante temprano
Una vez soportadas las actualizaciones beta a
beta(porta tus
contribuciones)
Conservadores
Cuando todo esté estable y la comunidad empiece a
hablar de D9
Deja que la comunidad sea tu guía.https://www.drupal.org/project/usage/drupal
Estoy construyendo un sitio Uso D7 o D8?
http://www.slideshare.net/horncologne/why-drupal-8-why-now-aprmay-2015
Drupal 7 Drupal 8
Orientada al publico Interno/prototipo/investigación
Despliegue rápido Menos urgente
Grande, necesidades complejas Puede ser hecho con lo que ya hay en el core
Completo conjunto de funcionalidades Sitio a modo de brochure
Misión critica Experimental
Equipo de desarrollo limitadoEquipo de desarrollo
experto/Cómodo con el parcheo constante
Desarrolladores más cómodos con código procedimental
Desarrolladores cómodos con código OO / Symfony
¿Te quedas con D7? Te queremos contar cómo obtener características de D8 en D7
En Drupal 8 Equivalente en Drupal 7WYSIWYG CKEditor: https://drupal.org/project/ckeditor
In-Place Editing Quick Edit: https://drupal.org/project/quickedit
Responsive Toolbar “Mobile Friendly Navigation Toolbar"https://drupal.org/project/navbar
Responsive Front-End Theme Omega, Zen, Adaptive, etc. base themes
Responsive Admin Theme Ember: https://drupal.org/project/ember
Responsive Images Picture: https://drupal.org/project/picture
Responsive Tables Responsive Tables: https://drupal.org/project/responsive_tables
Simplified Overlay Escape Admin: https://drupal.org/project/escape_admin
Multilingual Internationalization: https://www.drupal.org/project/i18nEntity Translation: https://www.drupal.org/project/entity_translation
Better Blocks Bean: https://www.drupal.org/project/bean
Configuration Management Features: https://www.drupal.org/project/features
Web Services RESTful Web Services: https://www.drupal.org/project/restws
¡Gracias! :)¿Preguntas?