Die ganz große Gamer-Koalition

heise online Newsticker - 24. August 2017 - 16:30
Zum Auftakt der Gamescom trafen die Spitzen aus Politik und YouTube zu einer "Wahlkampfarena" zusammen. Kaum überraschendes Ergebnis: Alle Parteien lieben Gamer. Politische Inhalte wurden aber kaum hinterfragt.

Videospiele: Verbraucherschützer warnen vor blinden Vorbestellungen

heise online Newsticker - 24. August 2017 - 16:30
Die Verbraucherzentrale Nordrhein-Westfalen warnt vor Vorbestellungen von Computerspielen lange bevor diese in den Handel kommen. Oft könnten die fertigen Titel nicht halten, was die Entwickler versprochen haben. Hilfreich wäre etwa mehr Geduld.

VMware kündigt Workstation 14 Pro und Fusion 10 Pro an

heise online Newsticker - 24. August 2017 - 16:30
Mit den kommenden Versionen Workstation 14 Pro und Fusion 10 Pro aktualisiert VMware seine Desktop-Virtualisierungspakete. Vor allem für Entwickler finden sich Neuerungen. Die Software soll bereits im Oktober erscheinen.

Fallout 4 und Skyrim in VR angespielt: Sind das wirklich die Virtual-Reality-Killerapps?

heise online Newsticker - 24. August 2017 - 16:00
Fallout 4 und Skyrim bieten genau das, was sich viele Spieler in VR wünschen: Riesige Spielwelten, gute Stories, ganz viel Freiheit. Wir haben die für den Winter angekündigten VR-Versionen angespielt - und sind mehr als zwiegespalten.

Um 18 Uhr geht's los: Simuliere die Kräfte an einem Quadrocopter-Arm

heise online Newsticker - 24. August 2017 - 16:00
Wer als Maker seine Projekte selbst entwirft, braucht Erfahrung, um abzuschätzen, ob alles halten wird wie gedacht. Die Alternative: Computersimulation! Heute abend ab 18 Uhr kostenlos übers Web bei SimScale zu lernen. Noch sind Plätze frei.

Evolving Web: Migrating Aliases and Redirects to Drupal 8

Planet Drupal - 24. August 2017 - 16:00

When content URLs change during migrations, it is always a good idea to do something to handle the old URLs to prevent them from suddenly starting to throw 404s which are bad for SEO. In this article, we'll discuss how to migrate URL aliases provided by the path module (part of D8 core) and URL redirects provided by the redirect module.

The Problem

Say we have two CSV files (given to us by the client):

The project requirement is to:

  • Migrate the contents of article.csv as article nodes.
  • Migrate the contents of category.csv as terms of a category terms.
  • Make the articles accessible at the path blog/{{ category-slug }}/{{ article-slug }}.
  • Make blog/{{ slug }}.php redirect to article/{{ article-slug }}.

Here, the term slug refers to a unique URL-friendly and SEO-friendly string.

Before We Start Migrate Node and Category Data

This part consists of two simple migrations:

The article data migration depends on the category data migration to associate each node to a specific category like:

# Migration processes process: ... field_category: plugin: 'migration_lookup' source: 'category' migration: 'example_category_data' no_stub: true ...

So, if we execute this migration, we will have all categories created as category terms and 50 squeaky new nodes belonging to those categories. Here's how it should look if we run the migrations using drush:

$ drush migrate-import example_article_data,example_category_data Processed 5 items (5 created, 0 updated, 0 failed, 0 ignored) - done with 'example_category_data' Processed 50 items (50 created, 0 updated, 0 failed, 0 ignored) - done with 'example_article_data'

Additionally, we will be able to access a list of articles in each category at the URL blog/{{ category-slug }}. This is because of the path parameter we set in the category data migration. The path parameter is processed by the path module to create URL aliases during certain migrations. We can also use the path parameter while creating nodes to generate URL aliases for those nodes. However, in this example, we will generate the URL aliases in a stand-alone migration.

Generate URL Aliases with Migrations

The next task will be to make the articles available at URLs like /blog/{{ category-slug }}/{{ article-slug }}. We use the example_article_alias migration to generate these additional URL aliases. Important sections of the migration are discussed below.

Source source: plugin: 'csv' path: 'article.csv' ... constants: slash: '/' source_prefix: '/node/' alias_prefix: '/blog/' und: 'und'

We use the article.csv file as our source data to iterate over articles. Also, we use source/constants to define certain data which we want to use in the migration, but we do not have in the CSV document.

Destination destination: plugin: 'url_alias'

Since we want to create URL aliases, we need to use the destination plugin url_alias provided by the path module. Reading documentation or taking a quick look at the plugin source at Drupal\path\Plugin\migrate\destination\UrlAlias::fields(), we can figure out the fields and configuration supported by this plugin.

Process ... temp_nid: plugin: 'migration_lookup' source: 'slug' migration: 'example_article_data' ... temp_category_slug: # First, retrieve the ID of the taxonomy term created during the "category_data" migration. - plugin: 'migration_lookup' source: 'category' migration: 'example_category_data' # Use a custom callback to get the category name. - plugin: 'callback' callable: '_migrate_example_paths_load_taxonomy_term_name' # Prepare a url-friendly version for the category. - plugin: 'machine_name'

Since we need to point the URL aliases to the nodes we created during the article data migration, we use use the migration_lookup plugin (formerly migration) to read the ID of the relevant node created during the article data migration. We store the node id in temp_nid. I added the prefix temp_ to the property name because we just need it temporarily for calculating another property and not for using it directly.

Similarly, we need to prepare a slug for the category to which the node belongs. We will use this slug to generate the alias property.

source: plugin: 'concat' source: - 'constants/source_prefix' - '@temp_nid'

Next, we generate the source, which is the path to which the alias will point. We do that by simply concatenating '/nid/' and '@temp_nid' using the concat plugin.

alias: plugin: 'concat' source: - 'constants/alias_prefix' - '@temp_category_slug' - 'constants/slash' - 'slug'

And finally, we generate the entire alias by concatenating '/article/', '@temp_category_slug', a '/' and the article's '@slug'. After running this migration like drush migrate-import example_article_alias, all the nodes should be accessible at /article/{{ category-slug }}/{{ article-slug }}.

Generate URL Redirects with Migrations

For the last requirement, we need to generate redirects, which takes us to the redirect module. So, we create another migration named example_article_redirect to generate redirects from /blog/{{ slug }}.php to the relevant nodes. Now, let's discuss some important lines of this migration.

Source constants: # The source path is not supposed to start with a "/". source_prefix: 'blog/' source_suffix: '.php' redirect_prefix: 'internal:/node/' uid_admin: 1 status_code: 301

We use source/constants to define certain data which we want to use in the migration, but we do not have in the CSV document.

Destination destination: plugin: 'entity:redirect'

In Drupal 8, every redirect rule is an entity. Hence, we use the entity plugin for the destination.

Process redirect_source: plugin: 'concat' source: - 'constants/source_prefix' - 'slug' - 'constants/source_suffix'

First, we determine the path to be redirected. This will be the path as in the old website, example, blog/{{ slug }}.php without a / in the front.

redirect_redirect: plugin: 'concat' source: - 'constants/redirect_prefix' - '@temp_nid'

Just like we did for generating aliases, we read node IDs from the article data migration and use them to generate URIs to which the user should be redirected when they visit one of the /blog/{{ slug }}.php paths. These destination URIs should be in the form internal:/node/{{ nid }}. The redirect module will intelligently use these URIs to determine the URL alias for those paths and redirect the user to the path /article/{{ slug }} instead of sending them to /node/{{ nid }}. This way, the redirects will not break even if we change the URL alias for a particular node after running the migrations.

# We want to generate 301 permanent redirects as opposed to 302 temporary redirects. status_code: 'constants/status_code'

We also specify a status_code and set it to 301. This will create 301 permanent redirects as opposed to 302 temporary redirects. Having done so and having run this third migration as well, we are all set!

Migration dependencies migration_dependencies: required: - 'example_article_data'

Since the migration of aliases and the migration of redirects both require access to the ID of the node which was generated during the article data migration, we need to add the above lines to define a migration_dependency. It will ensure that the example_article_data migration is executed before the alias and the redirect migrations. So if we run all the migrations of this example, we should see them executing in the correct order like:

$ drush mi --tag=example_article Processed 5 items (5 created, 0 updated, 0 failed, 0 ignored) - done with 'example_category_data' Processed 50 items (50 created, 0 updated, 0 failed, 0 ignored) - done with 'example_article_data' Processed 50 items (50 created, 0 updated, 0 failed, 0 ignored) - done with 'example_article_alias' Processed 50 items (50 created, 0 updated, 0 failed, 0 ignored) - done with 'example_article_redirect'Next steps + more awesome articles by Evolving Web

Acquia Developer Center Blog: Decoupled Drupal: POWDR’s Front End Architecture Build

Planet Drupal - 24. August 2017 - 15:46

In this article we’ll discuss the three main areas that needed to be addressed during the build of POWDR’s front end architecture: Routing & Syncing with the API, Component Driven Content, and the Build Process & Tools.

Tags: acquia drupal planet

Node.js: Ärger um Code of Conduct führt zu einem Fork

heise online Newsticker - 24. August 2017 - 15:30
Nachdem das Technical Steering Committee von Node.js eins seiner Mitglieder trotz angemahnter Verstöße nicht ausgeschlossen hatte, kam es zunächst zu Ärger innerhalb der Führung und Community und nun zu einem Fork mit dem Projektnamen Ayo.

Chromatic: Announcing our Drupal Coding Standards Series on Drupalize.me!

Planet Drupal - 24. August 2017 - 15:30

The folks at Drupalize.me provide the best Drupal training materials on the web, so we were more than happy to oblige them when they asked if they could release our Coding Standards guide as a free series on their platform.

Watchblog "BILDblog" startet Spendenaufruf

heise online Newsticker - 24. August 2017 - 14:30
Schon seit 2004 nimmt BILDblog die Berichterstattung deutscher Printmedien kritisch unter die Lupe. Um seine Arbeit trotz sinkender Werbeeinnahmen fortsetzen zu können, hofft das Watchblog nun auf das Engagement seiner Leser.

Teure Chips: RAM und NAND-Flash bleiben knapp

heise online Newsticker - 24. August 2017 - 14:30
Freude bei Speicherchip-Fabrikanten, Zähneknirschen bei Käufern und Herstellern von PCs, Notebooks, Servern und Smartphones: Wichtige Halbleiter bleiben teuer.

iX 9/2017: Maschinenlernen für eigene Anwendungen

heise online Newsticker - 24. August 2017 - 14:00
Maschinelles Lernen schickt sich an, die Softwarewelt umzukrempeln. Mit der Google-Bibliothek TensorFlow lassen sich neuronale Netze einfach in eigenen Python-Programmen nutzen.

Shadow Warrior 2013 kostenlos auf Steam verfügbar

heise online Newsticker - 24. August 2017 - 14:00
Das Remake des Klassikers aus dem Jahre 1997 ist auf Steam kostenlos erhältlich. Es besticht mit guter Grafik und abwechslungsreichem Gameplay.

Vampyr: Blutsauger mit Skrupeln

heise online Newsticker - 24. August 2017 - 14:00
In London grassiert 1918 die Spanische Grippe. Der Arzt Jonathan Reid kann den Londonern helfen – oder sich an ihnen laben.

Google hilft Wal-Mart-Kunden beim Einkaufen und gibt Kauftipps

heise online Newsticker - 24. August 2017 - 14:00
Nach der angekündigten Übernahme der US-Biosupermarktkette Whole Foods durch Amazon steht die Lebensmittelbranche unter Druck. Jetzt sucht der US-Handelskonzern Wal-Mart den Schulterschluss mit Google.

Entwickler verzweifelt gesucht: Stack-Overflow-Studie zur Lage bei IT-Fachkräften

heise online Newsticker - 24. August 2017 - 14:00
Die Betreiber der Internetplattform für das Thema Softwareentwickler haben deutsche Unternehmen nach ihren Bedürfnissen und Herausforderungen im IT-Recruiting befragt. Das Ergebnis ist zumindest aus Firmensicht ernüchternd.

Red Hat und Microsoft ebnen den Weg in die Hybrid Cloud

heise online Newsticker - 24. August 2017 - 13:30
Red Hat und Microsoft wollen gemeinsam den Einsatz von Containern einfacher gestalten. Ziel ist, Unternehmen den Einstieg in die Hybrid Cloud zu erleichtern.

US-Regierung will Daten zu Besuchern einer Trump-kritischen Website doch nicht

heise online Newsticker - 24. August 2017 - 13:00
Einige Tage nachdem bekannt geworden war, dass das US-Justizministerium offenbar alle Besucher einer Trump-kritischen Website identifizieren wollte, folgt nun der Rückzieher: Das Ausmaß des Durchsuchungsbefehls sei nicht klar gewesen.

Battlefield 1 mit neuem Modus und Russischer Revolution

heise online Newsticker - 24. August 2017 - 13:00
Die Erweiterung "In the Name of the Tsar" widmet sich der Russischen Revolution, und lässt die antikommunistische "Weiße Garde" gegen die frisch gegründete "Rote Armee" kämpfen. Der neue Modus "Incursions" verpflichtet zu einer festen Rolle.

Sonos fordert mehr Daten, sonst droht Sendeschluss

heise online Newsticker - 24. August 2017 - 12:00
Sonos will bei seinen Kunden mehr Daten sammeln als bisher. Wer nicht zustimmt, könnte eines Tages vor stummen Lautsprechern sitzen, sagt die Firma.