Konvertierung von Drupal 6.x Themes auf 7.x

Bild von tobiasb

Überblick der Drupal Themes Änderungen in 7.x

Übersetzung von http://drupal.org/node/254940
Liste wird erweitert, sobald es neue Änderung gibt und ich Zeit/Lust habe :D.

  1. Blöcke haben jetzt neue ausdrucksvolle CSS IDs
  2. Primary und secondary links sind jetzt Main und Secondary menu
  3. Unverarbeitete taxonomy links sind nicht mehr als Variable in der node.tpl.php verfügbar
  4. RDFa erfordert einige Änderungen in der page.tpl.php
  5. Die CSS Klasse clear-block wurde umbenannt in clearfix
  6. box.tpl.php Template Datei entfernt
  7. $help wurde ein Region
  8. Mission entfernt, Highlight Region neu

Blöcke haben jetzt neue ausdrucksvolle CSS IDs

Viele der CSS-IDs für die Blöcke, die durch Drupalkern definiert werden, wurden geändert, damit sie klarer den Zweck dem Block anzeigen:

Block Alte CSS ID (Drupal 6) Neue CSS ID (Drupal 7)
Neueste Blockeinträge block-blog-0 block-blog-recent
Buchnavigation block-book-0 block-book-navigation
Neueste Kommentare block-comment-0 block-comment-recent
Aktive Forumthemen block-forum-0 block-forum-active
Neue Forumthemen block-forum-1 block-forum-new
Sprachenumschalter block-locale-0 block-locale-language-switcher
Aggregator block-node-0 block-node-syndicate
Neuste Umfrage block-poll-0 block-poll-recent
Autor Information block-profile-0 block-profile-author-information
Suchformular block-search-0 block-search-form
Beliebter Inhalt block-statistics-0 block-statistics-popular
Powered by Drupal block-system-0 block-system-powered-by
Benutzeranmeldung block-user-0 block-user-login
Navigation block-user-1 block-user-navigation
Wer ist neu block-user-2 block-user-new
Wer ist Online block-user-3 block-user-online

Als Beispiel, eine Drupal 6 CSS Style Anweisung wie diese:

  1. /* Macht den Text in dem Benutzeranmeldungs-Block größer. */
  2. #block-user-0 {
  3.   font-size: 1.5em;
  4. }

sollte in Drupal 7 so aussehen:

  1. /* Macht den Text in dem Benutzeranmeldungs-Block größer. */
  2.  
  3. #block-user-login {
  4.   font-size: 1.5em;
  5. }

Primary and Secondary links sind nach Main and Secondary menu umbenannt worden. Themes, die diese Optionen unterstützt haben, müssen dann aktualisiert werden, um die neuen Variablen verwenden zu können:

6.x

  1. <div id="menu">
  2. <?php
  3. if (isset($secondary_links))  {
  4.       print theme('links', $secondary_links, array('class' => 'links', 'id' => 'subnavlist'));
  5.   }
  6. if (isset($primary_links)) {
  7.       print theme('links', $primary_links, array('class' => 'links', 'id' => 'navlist'));
  8.   }
  9. ?>
  10. </div>

7.x

  1. <div id="menu">
  2. <?php
  3. if (isset($secondary_links))  {
  4.       print theme('links', $secondary_menu, array('class' => 'links', 'id' => 'subnavlist'));
  5.   }
  6. if (isset($primary_links)) {
  7.       print theme('links', $primary_menu, array('class' => 'links', 'id' => 'navlist'));
  8.   }
  9. ?>
  10. </div>

Unverarbeitete taxonomy links sind nicht mehr als Variable in der node.tpl.php verfügbar

In Drupal 6 konnte man in der node.tpl.php auf die Variable $taxonomy zu greifen, welche die unverarbeiten Terms-Objekte des aktuellen Nodes beinhaltete. Dies ist so nicht mehr möglich in Drupal 7, da sie in das $node-Objekt verlegt wurden ($node->content['links']['terms']['#value'] ). Wenn man davon Gebrauch macht, sollte man darauf achten diese vorher mit check_plain zu entschärfen. Informationen zu XSS: http://drupal.org/node/28984

Die bereits für die Ausgabe verarbeitete Variable $terms ist davon nicht betroffen und kann wie gewohnt verwendet werden.

Wenn man als in der node.tpl.php die $taxonomy abfragte muss dies wie folgt geändert werden.

Drupal 6

  1. <?php if ($taxonomy): ?>
  2. <div class="terms"><?php print $terms ?></div>
  3. <?php endif; ?>

Drupal 7

  1. <?php if ($terms): ?>
  2. <div class="terms"><?php print $terms ?></div>
  3. <?php endif; ?>

RDFa erfordert einige Änderungen in der page.tpl.php

Drupal 7 ist in der Lage RDFa auszugeben, dafür sind aber folgene Änderungen notwendig:

  • Der DOCTYPE muss auf XHTML+RDFa 1.0 geändert werden
  • Das lang Attribut sollte entfernt werden, um die Kompatibilität mit XHTML 1.1 zu gewährleisten, nur das xml: lang sollte bleiben.
  • Die RDF-Namespace-Präfixe die im gesamten HTML-Dokument verwenden werden, müssen in serialisierter Form im <html> vorliegen und befinden sich in der Variable $rdf_namespaces.
  • Das GRDDL Profile sollte im <head> Tag defniert werden.

6.x

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">
  3. <head>

7.x

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>"
  3. <?php print $rdf_namespaces ?>>
  4. <head profile="<?php print $grddl_profile ?>">

Die CSS Klasse clear-block wurde umbenannt in clearfix

Die CSS Klasse clear-block hat einige Benutzer so verwirrt, dass sie dachten es habe etwas mit dem Block-Modul zutun. Deshalb wurde diese Klasse umbenannt in clearfix, die auch in der CSS-Community meist so benannt wird.

CSS Anweisung in Drupal 6

  1. <div class="clear-block">

CSS Anweisung in Drupal 7

  1. <div class="clearfix">

box.tpl.php Template Datei entfernt

Die doch sehr selten veränderte Template Datei box.tpl.php wurde entfernt und in eine eigene Theme-Funktion gesteckt. Die Suchergebnisauflistung wird durch die Funktion theme_search_results_listing() ausgegeben und die Kommentarformular-Box mit theme_comment_form_box().

$help wurde ein Region

(issue) In Drupal 7 wurde zu den Standard-Regionen (left, right, content, header, footer) genannt help hinzugefügt. Standardmäßig ist der Inhalt (Text) der Selbe wie aus der $help Variabel aus der page.tpl.php in Drupal 6.

In Drupal 7 sollte sichergestellt werden, dass Themes die $help Variabel in der page.tpl.php mit print ausgeben. Sollte das Theme die Standardregionen überschreiben, muss in der .info folgendes hinzugefügt werden:

  1. regions[help] = Help

Der Hilfetext wird dann in der block.tpl.php mit seinen divs und CSS-Klassen umschlossen, so dass CSS-Angaben für diese Ausgabe ggf. geändert werden müssen.

Mission entfernt, Highlight Region neu

In Drupal 6 gab es für die Startseite ein Bereich genannt "Mission", in der man einige Information darstellen konnte oder man deaktivierte dieses Feld in den Themeeinstellung.

In Drupal 7 wurde dieser Bereich entfernt und "Highlight" wurde geboren als eine Region, in der man einen Block plazieren kann.
Will man diese Highlight Region nicht unterstützen, dann überschreibt man die Liste der möglichen Regionen via Info-Datei des Themes.

Beispiel bei einem Theme mit 3 Regionen:

  1. regions[content] = Content
  2. regions[left] = Left sidebar
  3. regions[help] = Help

Re: Konvertierung von Drupal 6.x Themes auf 7.x

Ich finde die Bezeichnung der CSS nicht schlecht, diese haben nun eindeutige Namen die auch einleuchtend sind, wo jeder weiß was sich dahinter verbirgt.