Ivan Tibezh at InternetDevels
План
● What is Drupal?
● Who uses Drupal?
● For end-users & clients
● For site builders
● Multilang
● For designers and themers
● For developers
● Summary
What is Drupal?
ЦМС з відкритим кодом.
Who uses Drupal?
...and more than a million other
organizations
Drupal 8
improvements for end-users & clients
Authoring improvement:
WYSIWYG in Core
Authoring improvement:
In-place editing
Authoring improvement:
In-place editing
Authoring improvement:
New content creation page
Authoring improvement:
Preview on the frontend
It’s mobile-first
Responsive themes, images,
breakpoints
Mobile-friendly administration
Drupal 8 improvements for site builders
Improved Data Modeling Tools:
New field types like Entity Reference
…plus, Link, Phone, Email, Comments!
Improved Data Modeling Tools:
New field types
Date/Datetime
Form displays: customize the look
and feel of data entry forms
Views in Core
Views = fully customizable...
With the Drupal 8 views, you can customize:
● Admin listings
● Sidebar content
● Image galleries
● Slideshows
● REST output
...with 0 lines of code!
Restyled administration interface
Multilingual improvements in Drupal 8
Community translation downloads
Language data tracking expanded
Translation on (almost) everything
Drupal 8 improvements for designers and themers
HTML5 Form Elements
New front-end libraries
Twig Example: node.html.twig
<article{{ attributes }}>
{{ title_prefix }}
{% if not page %}
<h2{{ title_attributes }}>
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
</h2>
{% endif %}
{{ title_suffix }}
{% if display_submitted %}
<footer class="node__meta">
{{ author_picture }}
<div class="node__submitted {{ author_attributes.class }}"{{
author_attributes|without('class') }}>
{% trans %}Submitted by {{ author_name|passthrough }} on {{ date }}{%
endtrans %}
{{ metadata }}
</div>
</footer>
{% endif %}
<div class="node__content {{ content_attributes.class }}"{{
content_attributes|without('class') }}>
{{ content|without('links') }}
</div>
{% if content.links %}
<div class="node__links">
{{ content.links }}
</div>
{% endif %}
</article>
node.tpl.php
<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?>
clearfix"<?php print $attributes; ?>>
<?php print $user_picture; ?>
<?php print render($title_prefix); ?>
<?php if (!$page): ?>
<h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"><?php
print $title; ?></a></h2>
<?php endif; ?>
<?php print render($title_suffix); ?>
<?php if ($display_submitted): ?>
<div class="submitted">
<?php print $submitted; ?>
</div>
<?php endif; ?>
<div class="content"<?php print $content_attributes; ?>>
<?php
hide($content['comments']); hide($content['links']);
print render($content);
?>
</div>
<?php print render($content['links']); ?>
<?php print render($content['comments']); ?>
</div>
Native Schema.org Output
Killed support for IE 6 & 7
(and most of 8)
Drupal 8 improvements for developers
Configuration management
dev stage production
Drush integration for automation
Web services
other systems or frameworks
desktop
Android applications
other Drupal sites
Flash components
iPhone applications
kiosk applications
● HttpFoundation
● HttpKernel
● Dependency
● Injection
● EventDispatcher
● Routing
● Yaml
Symfony framework
GETting data out of Drupal:
RESTful Web Services module
GETting data into Drupal: Guzzle
$client = Drupal::httpClient();
$config = Drupal::config('3rdparty.settings');
// Format arguments for passing in URL.
$arg = urlencode($argument);
// Pull data from 3rd party's REST API.
$api_key = $config->get('api_key');
$request =
$client-
>get("http://3rdparty.com/$arg/?key=$api_key");
// Get the response and do something with it.
$response = $request->send();
$json = $response->json();
...
Catch all of the improvements!
https://drupal.org/list-changes
https://drupal.org/contribute
Where do we need help?
● Finding and fixing bugs
● Performance
● Migration path
● Port contributed projects
● DOCUMENTATION!
● EXAMPLES!
● TOOLS!
● TESTING, TESTING, TESTING!
When should I use Drupal 8?
Keep your eye on https://drupal.org/project/usage/drupal
My own modules?
● Use
https://www.drupal.org/project/drupalmoduleupg
rader to start the upgrade of your code.
● If you need to / want to start your module fresh,
see https://www.drupal.org/project/console
DrupalTour. Rivne — Drupal 8 (Ivan Tibezh, InternetDevels)

DrupalTour. Rivne — Drupal 8 (Ivan Tibezh, InternetDevels)