USA: Sicherheits-NGO warnt vor Hype selbstfahrender Autos

heise online Newsticker - 8. März 2018 - 11:30
Das US-Parlament arbeitet an einer Öffnung der Schleusen für selbstfahrende Autos. Kritiker warnen vor zu viel Optimismus: Die Branche mache "unbegründete und übertriebene Vorhersagen" über die Verfügbarkeit und Verlässlichkeit der autonomen Kfz.

Besonderes Anwaltspostfach: EDV-Gerichtstag diskutiert beA und darüber hinaus

heise online Newsticker - 8. März 2018 - 11:00
Der Deutsche EDV-Gerichtstag beschäftigte sich auf einer Tagung in Berlin mit der Frage, wie das "besondere Anwaltspostfach" beA weiter entwickelt und verbessert werden kann.

Zahlen, bitte! 63 Elemente für eine universelle Ordnung

heise online Newsticker - 8. März 2018 - 11:00
Um das Periodensystem der Elemente kommt niemand im Chemieunterricht herum. Aber wie ist Dmitri Mendelejew vor 149 Jahren eigentlich auf die Idee gekommen, die damals bekannten Elemente derartig anzuordnen?

Daimlers digitaler Scheinwerfer wirft Symbole auf die Straße

heise online Newsticker - 8. März 2018 - 10:30
Mit einer Auflösung von einer Million Pixel pro Scheinwerfer sollen Daimlers neue Scheinwerfer beispielsweise Markierungen auf die Straße projizieren können und bei Fernlicht nicht blenden.

Autonome Autos: Laser-System und Algorithmen helfen verdeckte Objekte zu erkennen

heise online Newsticker - 8. März 2018 - 10:30
Forscher der kalifornischen Stanford Universität haben ein Laser-System entwickelt, das um die Ecke gucken und verdeckte Objekte rekonstruierten kann. Noch arbeitet die Hardware zu langsam, um sie in autonomen Autos einsetzen zu können.

Telekom MagentaMobil XL: Unbegrenztes Datenvolumen für 80 Euro

heise online Newsticker - 8. März 2018 - 10:30
Die Deutsche Telekom hat einen neuen Tarif mit echter LTE-Flat vorgestellt, der für 80 Euro unbegrenztes Datenvolumen in Deutschland bietet. Fürs Roaming im EU-Ausland stehen bei MagentaMobil XL 23 GByte an Volumen bereit.

Schweizer AKW Beznau nahe deutscher Grenze darf wieder ans Netz

heise online Newsticker - 8. März 2018 - 9:30
Im Stahl des Reaktorbehälters waren Aluminiumoxid-Einschlüsse gefunden worden. Der AKW-Betreiber hat nun nachgewiesen, dass sie die Sicherheit nicht negativ beeinflussen.

Gutenberg.org: S. Fischer Verlag kritisiert Aussperrung der deutschen Nutzer

heise online Newsticker - 8. März 2018 - 9:00
Die Aussperrung deutscher Internetnutzer vom Project Gutenberg lege nahe, dass es den Machern nicht darum gehe, das Gerichtsurteil umzusetzen, sondern Nutzerwut auf den Verlag zu lenken. So sieht es jedenfalls der Verlag, der erfolgreich geklagt hatte.

Congstar: LTE-Option kostet 5 Euro

heise online Newsticker - 8. März 2018 - 8:00
Congstar hat eine LTE-Option für zwei Tarife angekündigt. Die Option kostet 5 Euro zusätzlich und erlaubt Geschwindigkeiten von bis zu 50 Mbit/s.

Community: Community Working Group Call for New Members

Planet Drupal - 8. März 2018 - 4:03

Are you interested in volunteer work primarily concerned with community health, conflict resolution, and Drupal Code of Conduct matters? Then the Drupal Community Working Group (CWG) can benefit from your help. We are looking to add new volunteer members to our small, but dedicated, team and we’d like to hear from you! 

About the CWG

As our Charter states “The mission of the Community Working Group (CWG) is to uphold the Drupal Code of Conduct in order to maintain a friendly and welcoming community for the Drupal project.”; this means we very often deal with conflict resolution and guidance in the handling of Code of Conduct violations involving Drupal Community members and Drupal Community spaces. Although this sometimes can take a big chunk of our time, we also work on proactive tasks involving community health, growth, and awareness. For example, we get to honor amazing members of the community with the prestigious Aaron Winborn Award as well as work on tools and processes to facilitate community health and growth.

We currently are a diverse group of five members from three continents and we are looking to continue to diversify. We come from different backgrounds, and have different experiences, perspectives, and opinions, but we all share a deep desire to help community members and have them treat one another with respect, dignity, and encouragement. 

About you

Characteristics that are in line with what we do and what we are looking for:

  • Patient and open-minded
    We are often involved in high-stress and/or highly emotional situations. As facilitators, we must be able to listen to all sides patiently and without judgment to try to fully understand the situation as best we can. Although the work we do is rewarding and necessary, sometimes the issues we deal with can be tough and emotionally draining, and individuals looking to join the CWG need to be aware that it can involve a fair amount of emotional labor.
  • Self-driven and self-motivated
    A typical time commitment for CWG members is a couple hours a week, though that can vary. We are all volunteer members and, as such, juggle our own work-life-community schedules and try to create a balance where we do as much as we can without getting burned-out. We encourage and support members taking breaks from CWG business when needed.
  • Discrete and confidential
    We often deal with sensitive and confidential information and all members are expected to safeguard any and all information we come in contact with in our roles as CWG members. Additionally, we disclose any potential conflicts of interest and recuse ourselves when appropriate.
  • Love for the community
    All members of the CWG are volunteers and donate our own time and efforts while doing work we consider important and necessary. The main drive behind our work is the health of the community and its members.
  • The desire to uphold the Drupal Code of Conduct and share the Drupal values and principles.
    This almost goes without saying, but we think it is worth it for you to take a(nother) look at the Drupal Code of Conduct.
Still with us?

If you think you’d be a good fit or know someone you think is, please reach out!

Dries Buytaert: Drupal 8.5.0 released

Planet Drupal - 8. März 2018 - 3:45

Earlier today, we released Drupal 8.5.0, which ships with improved features for content authors, site builders and developers.

Content authors can benefit from enhanced media support and content moderation workflows. It is now easier to upload, manage and reuse media assets, in addition to moving content between different workflow states (e.g. draft, archived, published, etc).

Drupal 8.5.0 also ships with a Settings Tray module, which improves the experience for site builders. Under the hood, the Settings Tray module uses Drupal 8.5's new off-canvas dialog library; Drupal module developers are encouraged to start using these new features to improve the end-user experience of their modules.

It's also exciting to see additional improvements to Drupal's REST API. With every new release, Drupal continues to extend investments in being an API-first platform, which makes it easier to integrate with JavaScript frameworks, mobile applications, marketing solutions and more.

Finally, Drupal 8.5 also ships with significant improvements for Drupal 7 to Drupal 8 migration. After four years of work, 1,300+ closed issues and contributions from over 570 Drualists, the migrate system's underlying architecture in Drupal 8.5 is fully stable. With the exception of sites with multilingual content, the migration path is now considered stable. Needless to say, this is a significant milestone.

These are just a few of the major highlights. For more details about what is new in Drupal 8.5, please check out the official release announcement and the detailed release notes.

What I'm probably most excited about is the fact that the new Drupal 8 release system is starting to hit its stride. The number of people contributing to Drupal continues to grow and the number of new features scheduled for Drupal 8.6 and beyond is exciting.

In future releases, we plan to add a media library, support for remote media types like YouTube videos, support for content staging, a layout builder, JSON API support, GraphQL support, a React-based administration application and a better out-of-the-box experience for evaluators. While we have made important progress on these features, they are not yet ready for core inclusion and/or production use. The layout builder is available in Drupal 8.5 as an experimental module; you can beta test the layout builder if you are interested in trying it out.

I want to extend a special thank you to the many contributors that helped make Drupal 8.5 possible. Hundreds of people and organizations have contributed to Drupal 8.5. It can be hard to appreciate what you can't see, but behind every bugfix and new feature there are a number of people and organizations that have given their time and resources to contribute back. Thank you!

Drupal blog: Drupal 8.5.0 is now available

Planet Drupal - 7. März 2018 - 23:51
What's new in Drupal 8.5.0?

This new version makes Media module available for all, improves migrations significantly, stabilizes the Content Moderation and Settings Tray modules, serves dynamic pages faster with BigPipe enabled by default, and introduces a new experimental entity layout user interface. The release includes several very important fixes for workflows of content translations and supports running on PHP 7.2.

Download Drupal 8.5.0

Media in core improved and available to all site builders

In Drupal 8.4, we added a Media API to core that drew on work from the contributed Media Entity module, but the module was hidden from the user interface due to user experience issues. In Drupal 8.5, many of the usability issues have been addressed, and the module now can be enabled normally. Media in Drupal 8.5 supports uploading and playing audio and video files, as well as listing and reusing media.

For an optimal user experience, we suggest enhancing the core feature set with the rich ecosystem of contributed modules that extends the core Media module. In future releases, we will improve the core user experience with a media library and other tools, add WYSIWYG integration, add support for remote media types like YouTube videos, and provide an upgrade path for existing basic File and Image field data on existing sites.

Settings Tray and Content Moderation now stable

Two experimental modules originally added with Drupal 8.2.0 have been steadily improving in past releases and are now stable. The Settings Tray module provides a quick solution to manage settings in context, such as moving items around in a menu block. The Content Moderation module allows defining content workflow states such as Draft, Archived, and Published, as well as which roles have the ability to move content between states. Drupal 8.5.0 also adds support for translations to be moderated independently.

New experimental Layout Builder module

The new experimental Layout Builder module provides display layout capabilities for articles, pages, user profiles, and other entity displays. Layout Builder uses the same "outside-in" user interface that Settings Tray module does, allowing site builders to edit their layouts on the actual page (rather than having to go to a separate form on the backend). The current user interface is a basic implementation but we expect it will improve significantly in the coming months.

Big steps for migrations

After over four years of work, this release marks the Migrate system's architecture stable. The Drupal Migrate and Drupal Migrate UI modules are also considered stable for upgrading monolingual sites. (Multilingual site upgrades are still not fully supported.) Support for incremental migrations is also included in this release. See the migrate announcement for further details on migrating to Drupal 8.

BigPipe by default

The BigPipe module provides an advanced implementation of Facebook's BigPipe page rendering strategy for greatly improved perceived performance for pages with dynamic, personalized, or uncacheable content. The module was added in Drupal 8.1.0 experimentally and became stable in Drupal 8.3.0. Following real-world testing, Big Pipe is now included as part of Drupal 8.5.0's Standard installation profile, so that all Drupal 8 sites will be faster by default. BigPipe is also the first new Drupal 8 feature to mature from an experimental prototype all the way to being part of a standard installation!

Groundwork for a Drupal 8 "Out of the Box" demo

Drupal 8.5.0 includes the groundwork for a new demo profile and theme from the Out of the Box Initiative, which will be a beautiful, modern demonstration of Drupal's capabilities. This will allow us to provide the demo experimentally, possibly in a future Drupal 8.5 release. (The demo profile and theme should not be used on actual production or development sites since no backwards compatibility or upgrade paths are provided.) If you'd like to see this demo in action, you can also see it in the 8.6.x development version.

PHP 7.2 now supported

Drupal 8.5.0 now runs on PHP 7.2, which comes with new features and improves performance over PHP 7.1. PHP 7.2 is now the recommended PHP version to use with Drupal 8.

What does this mean for me? Drupal 8 site owners

Update to 8.5.0 to continue receiving bug and security fixes. The next bugfix release (8.5.1) is scheduled for April 4, 2018.

Updating your site from 8.4.5 to 8.5.0 with update.php is exactly the same as updating from 8.4.4 to 8.4.5. Drupal 8.5.0 also has updates to several dependencies, including a backwards-compatible update to a Symfony long-term-support release (which will be supported for many years). Modules, themes, and translations may need updates for these and other changes in this minor release, so test the update carefully before updating your production site.

Note that Drupal 8 will require PHP 7 starting in March 2019, one year from now. If your site is hosted on PHP 5.5 or 5.6, you should begin planning to upgrade (and consider upgrading to PHP 7.2 now that it is supported). See the Drupal core announcement about the PHP 5 end-of-life for more information.

Drupal 6 and 7 site owners

Drupal 7 is still fully supported and will continue to receive bug and security fixes throughout all minor releases of Drupal 8. Drupal 6 is no longer supported. See the migrate announcement for further details on migrating to Drupal 8.

Translation, module, and theme contributors

Minor releases like Drupal 8.5.0 include backwards-compatible API additions for developers as well as new features. Read the 8.5.0 release notes for more details on the improvements for developers in this release.

Since minor releases are backwards-compatible, modules, themes, and translations that supported Drupal 8.4.x and earlier will be compatible with 8.5.x as well. However, the new version does include some changes to strings, user interfaces, internal APIs and API deprecations. This means that some small updates may be required for your translations, modules, and themes. See the announcement of the 8.5.0 release candidate for more background information.

Drupal blog: Big steps for migrations in Drupal 8.5.0

Planet Drupal - 7. März 2018 - 23:51

After over four years of work with over 570 contributors and 1300+ closed issues, Drupal 8.5.0 releases the Migrate system's architecture as fully stable. This means that developers can write migration paths without worrying for stability of the underlying system.

On top of that the Migrate Drupal and Migrate Drupal UI modules (providing Drupal 6 and 7 to Drupal 8 migrations) are considered stable for upgrading monolingual sites. All of the remaining critical issues for the Migrate Drupal module's upgrade paths and stability are related to multilingual migration support (so multilingual site upgrades are still not fully supported).

Support for incremental migrations is now also available, which means that site owners can work gradually on their new Drupal 8 site while content is still being added to the old site. When migrations (including incremental migrations) are run through the user interface, site owners will now see a warning if some data on the Drupal 8 site might be overwritten. (A similar fix for Drush is not yet available, so be careful not to overwrite data if you run a migration on the command line.) 

Upgrade instructions for Drupal 6 and Drupal 7 sites can be found in the Upgrading to Drupal 8 handbook. Your old site can still remain up and running while you test migrating your data into your new Drupal 8 site. If you happen to find a bug, that is not a known migrate issue, your detailed bug report with steps to reproduce is a big help!

Unlike previous versions, Drupal 8 stores translated content as single entities. Multilingual sites with reference fields (node_reference, entity_reference) or multilingual menus can upgrade to Drupal 8 using Drush, executing the desired migrations one by one. In this process you need to create and run a series of additional custom migrations to reflect the new entity identifiers assigned during earlier migrations. There is no automation implemented for this process yet.

Data can be migrated to Drupal 8 also from non-Drupal sources such as CSV, XML, JSON, or directly from 3rd party systems' databases. For instructions and examples, refer to Migrate API handbook.

Huge thanks again to all the contributors who made this possible.

InternetDevels: From Drupal 8.1.0 to Drupal 8.5.0: great features | Infographic

Planet Drupal - 7. März 2018 - 23:35

To honor the Drupal 8.5.0 release on March 7, we will not just describe what’s new in it. Drupal 8 has already had 5 awesome minor releases: Drupal 8.1.0, Drupal 8.2.0, Drupal 8.3.0, Drupal 8.4.0, and now Drupal 8.5.0. Each of these versions gives us great novelties that make Drupal 8 easier to use for editors, faster, more innovative, and more.

Read more

Drupal.org blog: What’s new on Drupal.org? - February 2018

Planet Drupal - 7. März 2018 - 22:53

Read our Roadmap to understand how this work falls into priorities set by the Drupal Association with direction and collaboration from the Board and community.

Drupal.org Updates Reimagining Drupal.org's front pages to serve distinct personas

Drupal serves a wide audience of users, from developers to marketers to content editors and beyond. Historically, Drupal.org has been focused on our community of contributors, whether those contributions are in code, documentation, volunteer support, camp organizing, etc. However, only 1 in 15 visitors to Drupal.org are an authenticated user, and the rest are primarily visiting Drupal.org as representatives of an end-user organization that is evaluating Drupal. We want to serve these visitors better.

In February we held an off-site in Portland to consolidate our research about the personas within end-user organizations who make the decision to adopt Drupal. We identified three key roles:

  • Technical evaluators - who are often developer evangelists within their organization

  • Marketing and business users -who are evaluating Drupal as a platform. They are interested in the editorial experience and time-to-market for building a solution that integrates with tools they already use

  • Agencies - who are already using Drupal for their clients, or are considering making it central to their business.

From there, we developed some initial concepts for a reimagining of the front page of Drupal.org to better serve these first three personas.

This work will carry us through DrupalCon Nashville and beyond, so expect additional updates over the coming months.

Contribution credit update

The Drupal project has an innovative system of crediting users and sponsoring organizations for the work they contribute. However, as a system that we've pioneered, there is always room for additional improvements. One area that needed improvement was the date used for the assignment of credit. In the past, the credit for a user or organization would be tracked to the timestamp of the latest activity on the issue. This was a good approximation, but additional comments after issue resolution would bump the date of the credit.

We've updated the way that contribution credits are calculated - so that it is now based on the date that the issue was closed(status last changed) instead of the date of the last change to the issue. This change affects both individual contribution credits and the marketplace ranking.

Documentation improvements

As our new team member Dhanya has come on board, she has helped make some great improvements to the documentation system, including: fixing the display of sidebar lists of guide contents, increasing the visibility of the current page indicators, and swapping the grid treatment for a more readable guide contents layout

Accessibility and readability

We've made two additional small fixes.

One for accessibility - improving the keyboard 'skip to…' links in the Drupal.org top navigation.

… And one for navigating issues, fixing a bug that prevented links to comments on multi-page threads. Now, any Drupal.org user who receives an email notification about a multi-page issue should be properly linked to the correct comment.

Preparing our live-streaming capability for DrupalCon Nashville

For DrupalCon Nashville, rather than relying on a vendor, we are going to be managing the live stream of the keynotes and closing session ourselves, together with the AV staff of the venue. In February we spent some time putting together our equipment and running some streaming tests.

Continued work to reduce our PCI scope

In February we finished migrating our donation process for both USD and Euro donations to new payment processors to reduce our PCI scope and thus maintenance costs. We've also launched the beta of the membership system, and will hopefully complete the migration of existing memberships soon.

If you are not yet a member of the Drupal Association, and would like to support us both by joining and helping us test the new membership system, you can sign up here. (If you are an existing member, please continue to process your renewals on the original system for now).

Infrastructure Updates Git servers updated

We migrated our existing git infrastructure from bare metal servers to virtual machines, which will help to make our infrastructure more flexible and portable in the future. This has been an ongoing effort, and the git servers are among the last of the servers to be migrated.

Continued tuning of Perimeter X

PerimeterX helps to identify bad actor behavior and DDOS attempts and mitigate them at the edge of our network. We established our relationship in January, and throughout February have been monitoring and tuning our configuration to better protect Drupal.org. We've already managed to mitigate a persistent DDOS attack which has recurred every couple of months, and hopefully we can make more improvements to protect Drupal.org, and reduce the pager burden on our team.

———

As always, we’d like to say thanks to all the volunteers who work with us, and to the Drupal Association Supporters, who make it possible for us to work on these projects. In particular we want to thank:

If you would like to support our work as an individual or an organization, consider becoming a member of the Drupal Association.

Follow us on Twitter for regular updates: @drupal_org, @drupal_infra

Lullabot: Better SVG Sprite Re-use with Twig in Drupal 8

Planet Drupal - 7. März 2018 - 21:57

There are many advantages to using SVG for the icons on a website. If you’re not familiar with SVG (aka Scalable Vector Graphics) it is an open-standard image format that uses XML to describe graphical images. SVG is great for performance, flexibility, and they look great on high-resolution displays. Though SVG can be really useful, one downside to implementing them can be the effort it takes to reuse them across a Drupal theme in various .html.twig files. SVG markup can be complex due to the number of attributes and, in some cases, there can also be a lot of markup. This issue can in part be mitigated by using inline SVG with the <use> element coupled with SVG Sprites. The combination of these two is a great solution—but unfortunately only gets part of the way to ideal reusability as the markup is still verbose for a single icon, and the number of SVG attributes needed can be hard to remember.

Wouldn’t it be nice if there was a way not to repeat all this code over again wherever we wanted to use an SVG? In this article we outline a way to reuse icons across template files in a Drupal 8 theme by creating a Twig helper function to reuse the markup.

Implementing a custom Twig custom function is fairly accessible to those comfortable with writing custom Drupal themes, but because of the way Drupal separates functionality between what can be defined in a module and what can be defined in a theme, we will need to create a module to contain our custom Twig function. To get started, create a new directory inside <drupalroot>/modules/custom with the following files and directories inside it. For the sake of this article I named the module svgy and the source is available on GitHub.

svgy ├── src │ └── TwigExtension │ └── Svgy.php ├── svgy.info.yml └── svgy.services.yml

One important thing to note here is that we do not actually have a .module file in our directory. This is not required by Drupal, and the Twig extension which adds our function will be defined as a service and autoload the Svgy.php within the src/TwigExtension directory. Don’t worry if you are unfamiliar with defining custom services in Drupal 8, this article explains all you need to know to get going with what we need for our Twig function.

Now that the directory and file structure is in place, we first need to add the correct metadata to svgy.info.yml:

name: svgy type: module description: Add a Twig function to make using inline SVG easier. core: 8.x

Next the necessary information needs to be added to svgy.services.yml. The contents of this file tells Drupal to autoload the Svgy.php file in the src/TwigExtension directory:

services: svgy.twig.extension: class: Drupal\svgy\TwigExtension\Svgy tags: - { name: twig.extension }

Now that Svgy.php is going to be loaded, add the code for our Twig function into it:

<?php namespace Drupal\svgy\TwigExtension; class Svgy extends \Twig_Extension { /** * List the custom Twig fuctions. * * @return array */ public function getFunctions() { return [ // Defines a new 'icon' function. new \Twig_SimpleFunction('icon', array($this, 'getInlineSvg')), ]; } /** * Get the name of the service listed in svgy.services.yml * * @return string */ public function getName() { return "svgy.twig.extension"; } /** * Callback for the icon() Twig function. * * @return array */ public static function getInlineSvg($name, $title) { return [ '#type' => 'inline_template', '#template' => '<span class="icon__wrapper"><svg class="icon icon--{{ name }}" role="img" title="{{ title }}" xmlns:xlink="http://www.w3.org/1999/xlink"><use xlink:href="#{{ name }}"></use></svg></span>', '#context' => [ 'title' => $title, 'name' => $name, ], ]; } }

More information regarding defining custom Twig extensions is available here. For the purpose of this article the most important part to explain is the inlineSvgMarkup. This function takes two arguments:

  • $name = the unique #id of the icon
  • $title = a string used as the title of the element for better accessibility

When invoked, this function returns a render array with the #type as an inline_template. We use this template type for two reasons: Twig in Drupal 8 has built-in filtering for security reasons and using inline_template allows us to get around that more easily. Since this markup is fairly small and not going to be changed often, we don’t need to create an extra .html.twig file to contain our SVG code.

Implementing the Custom Function In A Theme

Now that the custom twig extension for our icon function is created, how is this implemented in a theme? An example of the following implemented in a theme can be found on GitHub.

The first thing you have to do is add an inline SVG to your theme. The icons inside this SVG should have unique ids. In most situations it is best to generate this SVG “sprite” using something like svgstore as part of your build process. But to keep today’s example simple, I’ve created a simple SVG with two icons and placed it in a theme at <themeroot>/images/icons.svg.

After the icons.svg is in place in the theme you can include it in in the rendered page with the following in the [<themename>.theme](https://www.drupal.org/docs/8/theming-drupal-8/drupal-8-theme-folder-structure#theme) file:

function <theme_name>_preprocess_html(&$variables) { // Get the contents of the SVG sprite. $icons = file_get_contents(\Drupal::theme()->getActiveTheme()->getPath() . '/images/icons.svg'); // Add a new render array to page_bottom so the icons // get added to the page. $variables['page_bottom']['icons'] = array( '#type' => 'inline_template', '#template' => '<span class="hidden">' . $icons . '</span>', ); }

This appends a new render array to the page_bottom variable that is printed out inside Drupal core’s html.html.twig template file. If you haven’t overridden this template in your theme, the icons will get printed out automatically. If you have overridden html.html.twig in your theme—just make sure you are still printing page_bottom inside it: ({{ page_bottom }} is all you need.

The .hidden class that is used in the wrapping <span> here is one provided by Drupal 8 core. It applies display: none; to the element. This results in hiding it both visually and from screen readers. Since the individual icons from the SVG will be referenced elsewhere in the page this is the desired outcome.

In the example theme on GitHub, this results in the following output on the page:

<span class="hidden"><?xml version="1.0" encoding="UTF-8"?> <svg viewBox="0 0 130 117" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <polygon id="down-arrow" fill="#50E3C2" points="64.5 117 0 0 129 0"></polygon> <polygon id="up-arrow" fill="#50E3C2" points="65.5 0 130 117 1 117"></polygon> </svg></span>

Now that the SVG “sprite” is included on the page we can start referencing the individual icons within our SVG sprite with the custom Twig function. After you have cleared Drupal’s cache registry, icons can be added with this:

{{ icon('up-arrow', 'Navigate up') }}

The first argument passed into the function here, up-arrow, is used to reference an existing id in the SVG example included above. The second argument, Navigate up the page, is used as the title of the SVG to better describe contents of the element to users navigating with screen readers.

The resulting markup of this implementation of the icon() function when rendered in a page looks like:

<span class="icon__wrapper"> <svg class="icon icon--up-arrow" role="img" title="Navigate up" xmlns:xlink="http://www.w3.org/1999/xlink"> <use xlink:href="#up-arrow"></use> </svg> </span>

As you can see, the resulting markup is much larger than just the single line where we used the icon() Twig function. This makes it a lot cleaner to reuse icons throughout our .html.twig files. In addition to making templates easier to read and not having to remember all the necessary <svg> attributes, we also ensure consistency in how icons get included throughout the project.

As Drupal themers, it is great to have flexibility like this provided by Twig. If you’re interested in digging deeper into other types of Twig extensions, I encourage you to checkout the Twig Tweak module, which has examples of other helpful Twig extensions.

Have more questions about SVG? Here are some other helpful articles

Renault: Konzeptstudie EZ-GO für den Stadtverkehr der Zukunft

heise online Newsticker - 7. März 2018 - 20:00
Individualverkehr war gestern – in Zukunft kommt man in der Stadt mit Ride-Hailing oder Ride-Sharing von A nach B. Ranault präsentiert ein Konzeptfahrzeug mit großer Einstiegsluke, das seinen Insassen stilvoll durch die Statdt befördern soll.

Human-Robot Interaction: Ethnographie der Roboter

heise online Newsticker - 7. März 2018 - 19:30
Während Ingenieure in aller Welt an neuen Robotern tüfteln, klappt deren Zusammenleben mit den Menschen nicht immer reibungslos. Wissenschaftler wollen deshalb nun Methoden der Ethnographie auf Roboter anwenden.

AMD-Grafiktreiber 18.3.1 zum Download: Optimiert für Final Fantasy XV und Warhammer Vermintide 2

heise online Newsticker - 7. März 2018 - 19:30
Der neue Radeon-Treiber ist für Final Fantasy XV und Warhammer Vermintide 2 optimiert. Überdies behebt er zahlreiche Probleme und verhindert Abstürze in Sea of Thieves.

Clang kompiliert Chrome auch für Windows

heise online Newsticker - 7. März 2018 - 19:30
Das Team hinter dem Browser setzt nun auch für Microsofts Betriebssystem auf das quelloffene Compiler-Frontend. Es ersetzt jedoch Visual Studio nicht komplett, sondern ergänzt Microsofts Entwicklungsumgebung und Build-Werkzeuge.