Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Benutzerhandbuch › Fortgeschrittene › Tutorials & How To's - Tipps & Tricks ›

i18n Language Switcher Block, die Links mit den Flaggen themen

Eingetragen von quiptime (4972) am 08.11.2007 - 01:19 Uhr in
  • Drupal 5.x

Wie kann man beim i18n Module im Block Language Switcher die Links mit den Flaggen themen?

Aufgabe

In diesem Tutorial erkläre ich wie man den Text an den Language-Flaggen entfernt.

Um diese Aufgabe zu realisieren wird ein Template erstellt.

Links bearbeiten

Die Languagelinks mit den Flaggen werden durch eine Theme Funktion der Datei "i18n.module" ausgegeben. Hier der Code dieser Funktion:

/**
* Produces a language link with the right flag
*/
function theme_i18n_link($text, $target, $lang, $query= NULL, $fragment = NULL){
  $output = '<span class="i18n-link">';
  $attributes = ($lang == i18n_get_lang()) ? array('class' => 'active') : NULL;
  $output .= l(theme('i18n_language_icon', $lang), $target, $attributes, $query, $fragment, FALSE, TRUE);
  $output .= "&nbsp;";
  $output .= l($text, $target, $attributes, $query, $fragment, FALSE, TRUE);
  $output .= '</span>';
  return $output;
}

Man kann in den beiden Zeilen mit der l() Funktion die Ausgabe der beiden Links erkennen. Zuerst das Icon einer Flagge und danach der Linktext.

Um den Code dieser Funktion zu ändern wird ein Template erstellt.

Template erstellen

Datei "template.php" erweitern

Um die eigentliche Templatedatei "i18n_link.tpl.php" verwenden zu können muss in der Datei "template.php" im Themeordner des verwendeten Theme die entsprechende Vorbereitung getroffen werden. Um dies zu realisieren wird die "template.php" um folgenden Code erweitert:

/**
* Change the language links
*/
function phptemplate_i18n_link($text, $target, $lang, $query= NULL, $fragment = NULL){
  return _phptemplate_callback('i18n_link', array('text' => $text, 'target' => $target, 'lang' => $lang, 'query' => $query, 'fragment' => $fragment));
}

Beim Einfügen dieses Code darauf achten das er sich im Bereich der PHP-Tags befindet.

Templatedatei erstellen

Im Themeordner des verwendeten Themes wird die Datei "i18n_link.tpl.php" neu erstellt. In diese Datei wird zunächst der Code der zu themenden Funktion übernommen. Damit hat die Datei folgenden Inhalt:

<?php
function theme_i18n_link($text, $target, $lang, $query= NULL, $fragment = NULL){
 
$output = '<span class="i18n-link">';
 
$attributes = ($lang == i18n_get_lang()) ? array('class' => 'active') : NULL;
 
$output .= l(theme('i18n_language_icon', $lang), $target, $attributes, $query, $fragment, FALSE, TRUE);
 
$output .= "&nbsp;";
 
$output .= l($text, $target, $attributes, $query, $fragment, FALSE, TRUE);
 
$output .= '</span>';
  return
$output;
}
?>

Damit die Templatedatei auch etwas ausgeben kann muss, unabhängig von den Änderungen für die Links, der übernommene Code der Funktion geändert werden. Damit sieht die Templatedatei so aus:

<?php
/** $Id: i18n_link.tpl.php, v 1.0 2007/11/06 quiptime Exp $ */
*
*
Produces a language link with a right flag
*/
function
theme_i18n_link($text, $target, $lang, $query= NULL, $fragment = NULL){
 
$output = '';
 
$output .= '<span class="i18n-link">';
 
$attributes = ($lang == i18n_get_lang()) ? array('class' => 'active') : NULL;
 
$output .= l(theme('i18n_language_icon', $lang), $target, $attributes, $query, $fragment, FALSE, TRUE);
 
$output .= "&nbsp;";
 
$output .= l($text, $target, $attributes, $query, $fragment, FALSE, TRUE);
 
$output .= '</span>';
  print
$output;
}
?>

Mit diesem Zustand funktioniert das Template und die Ausgabe der Links erfolgt ohne Änderungen aus dieser Datei heraus.

Templatedatei, Code ändern

Um nun die Links auf die Flaggen zu reduzieren wird einfach der für den Linktext zuständige Code entfernt. Damit bekommt die Templatedatei diesen Zustand:

<?php
/** $Id: i18n_link.tpl.php, v 1.0 2007/11/06 quiptime Exp $ */
*
*
Produces a language link with only the right flag
*/
function
theme_i18n_link($text, $target, $lang, $query= NULL, $fragment = NULL){
 
$output = '';
 
$output .= '<span class="i18n-link">';
 
$attributes = ($lang == i18n_get_lang()) ? array('class' => 'active') : NULL;
 
$output .= l(theme('i18n_language_icon', $lang), $target, $attributes, $query, $fragment, FALSE, TRUE);
 
$output .= '</span>';
  print
$output;
}
?>

Mit dieser Änderung ist die gestellte Aufgabe, als Link nur die Flaggen darzustellen, erledigt.

  • Die Flaggen formatieren
‹ Zusätzliche Submit-Schaltfläche in Node-Formularen nach oben Die Flaggen formatieren ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Drupal 6.X

Eingetragen von drubb (562)
am 09.05.2008 - 23:42 Uhr

Hallo,

und hier mal zum Vergleich die entsprechende Variante für Drupal 6.X (die Ausgabe wird hier durch das Modul languageicons erstellt):

man erstellt eine Datei namens languageicons-place.tpl.php, mit folgendem Inhalt:

<?php print $icon; ?>

Kein Witz, das wars schon.

Gruß,
Boris

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wo kommt die languageicons-place.tpl.php hin

Eingetragen von mikefried (1)
am 27.05.2010 - 09:23 Uhr

@Boris,

wo wird die Datei languageicons-place.tpl.php gespeichert. Ich habe versucht sie unter : \sites\all\modules\languageicons und/oder \themes\garland zu speichern, die drei möglichkeiten funktionieren bei mir aber nicht?

Wie bekomme ich es hin, dass nur die entsprechenden Flaggen zu sehen sind, d.h. keine Überschrift und keine separator Zeichen also alle flaggen nur in einer Zeile?

Gruss Mike

  • Anmelden oder Registrieren um Kommentare zu schreiben

auch wenn der Post schon

Eingetragen von Methos (196)
am 27.04.2012 - 14:39 Uhr

auch wenn der Post schon älter ist, vll stößt ja jemand über die Suche auf diesen Beitrag, so wie ich gerade.

Die Antwort auf mikefrieds Post ist: Die Datei gehört in den template-Ordner des aktiven Themes.
Das das nicht funktioniert hat, ist vermutlich auch denkbar einfach.

Der Vorposter hat vermutlich vergessen zu erwähnen, das er das Modul language icons installiert hat.
Mit diesem Modul ist es möglich, Flaggen vor den Sprachen anzuzeigen, und wenn man die genannte Templatedatei erstellt, werden eben nur die Flaggen angezeigt.
Das dann noch alles ein eine Zeile zu bekommen etc ist dann nur noch eine Sache des CSS.

Vielleicht hilft das ja noch irgendwem.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Drupal 10 und Thema Bartik
  • Wie in hook_views_query_alter() einen join auf Tabelle url_alias durchführen?
  • Strukturierte Daten Fehler
  • fbsmp\plugins Hilfe
  • Migration über feeds von D6 auf D8
  • Theme Classy sei installiert, ist aber nicht bei Themes
  • Composer 1 zu Composer 2
  • Bitte um Einschätzung: Upgrade von Drupal 7 auf 9
  • Scroll zu View-Ergebnissen nachdem Filter angewendet ist
  • SQL-Injection? User hat sich Zugriff aufs Admin-Konto geholt und Änderungen vorgenommen.
  • [gelöst] Persönliches Kontaktformular, oder interne User Nachrichten
  • Webform Progress Symbol (Loading icon)?
Weiter

Neue Kommentare

  • Superfish
    vor 2 Tagen 23 Stunden
  • Auch für superfish gibt es
    vor 3 Tagen 3 Stunden
  • Versuchs mal mit
    vor 3 Tagen 2 Stunden
  • Drupal 10 läuft
    vor 3 Tagen 3 Stunden
  • Da wirst Du den Bug wohl selbst beheben müssen
    vor 4 Tagen 23 Stunden
  • Gleiches Problem: bootstrap 4
    vor 1 Woche 43 Minuten
  • Da wirst Du den Bug wohl
    vor 1 Woche 3 Stunden
  • Immer noch composer 1 zu 2
    vor 1 Woche 18 Stunden
  • Beziehung Branche Adresse!
    vor 6 Tagen 4 Stunden
  • Sorry, dann gab es das bei
    vor 1 Woche 20 Stunden

Statistik

Beiträge im Forum: 248398
Registrierte User: 19752

Neue User:

  • Aman_Musani
  • Dustinjex
  • Rickywap

» Alle User anzeigen

User nach Punkten sortiert:
wla9289
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 7 Gäste online.

DrupalCenter durchsuchen:

Benutzerhandbuch

  • FAQ - Häufig gestellte Fragen.
  • Links & Downloads
  • Über Drupalcenter.de und das deutschsprachige Benutzerhandbuch
  • Über Drupal
  • Einsteiger
  • Fortgeschrittene
    • Best Practice - Drupal Sites - Guidelines
    • Die beliebtesten Themes und Module
    • Tutorials & How To's - Tipps & Tricks
      • Kurztipps - Dinge die Stunden sparen können.
      • Notfallpläne - Tipps die Deine Drupalinstallation retten können
      • Anleitung zur Erstellung eines einfachen Kontaktformulars
      • Arbeiten mit dem Drupal Taxonomie-System [beinhaltet veraltete Inhalte]
      • Bearbeiten-Tab zu jeden Block hinzufügen
      • Block View mit Argument
      • Das Tagebuch einer Site
      • Drupal 6 - Automatisch unterschiedliche Bildgröße bei Teaser und Artikel
      • Drupal 6 - Eigene CSS Datei in ein Theme integrieren
      • Drupal 6 - Einfache Bildergalerie mit Image und Lightbox2
      • Drupal 6 - Einrichten eines Kalenders
      • Drupal 6 - Google Adsense ohne Zusatzmodul einbinden
      • Drupal 6 - Hauptnavigation mit DropDown Effekt ab Ebene Zwei
      • Drupal 6 - ImageMagick mit XAMPP Lite nutzen
      • Drupal 6 - Imagefield mit Imagecache und Colorbox
      • Drupal 6 - Installation FCK Editor
      • Drupal 6 - Installieren der WYSIWYG API inkl. Editoren
      • Drupal 7: mehrere Bilder in Node: 1 Bild in Anrisstext
      • Drupal Code Highlighting in Redmine Projektarchiv (CodeRay)
      • Drupal Theming: JavaScript einhängen in Abhängigkeit von Page-Variablen
      • Drush - Das Schweizermesser für Drupal auf Kommandozeile
      • Einfaches und erfolgreiches Patchen unter Windows
      • Eingabeformat & Inputfilter
      • Einrichten eines einfachen, statischen Menüsystems
      • Erstellen von Patches
      • Gallery mit CCK und Views erstellen (Drupal 5)
      • Header image Modul einrichten
      • Inhaltsübersicht für einen User mit einem View erstellen
      • Javascript und CSS-Dateien einbinden
      • Kontaktformular mit Jquery aufwerten
      • Leitfaden zur Erstellung von Suchmaschinenoptimierten Drupal-Sites
      • Mac OSX - Backupskript für Websites auf MAMP
      • Module updaten via Shell auf Windows
      • Module übersetzen
      • Perl-Script zum Erzeugen einer statischen Kopie einer Drupal-Website
      • Portierung eine Themes von openwebdesign.org
      • Prozentbalken bei Views (Balkendiagramm)
      • Themen eines Node-Formulars
      • Titel mit Stil
      • Umkreissuche mit Location- und Views-Modul
      • Usergalerie mit ImageCache, CCK, Views + Thickbox
      • Userprofil mit Usernodes erstellen
      • Validierung von Usereingaben bei Nodes
      • Variation vom Showroom auf drupalcenter.de
      • View mit Eingabeformular für neue Beiträge
      • WebSVN mit Drupal Code Highlighting
      • Zusätzliche Submit-Schaltfläche in Node-Formularen
      • i18n Language Switcher Block, die Links mit den Flaggen themen
        • Die Flaggen formatieren
      • ui.slider als Ersatz für den Ajax-Pager von Views
      • Zugriffsbeschränkungen für Nodes - eine Übersicht der Möglichkeiten
  • Entwicklung von Modulen und Themes
  • Drupalcenters Community
  • Drupal 7 Video-Trainings (Deutsch)
  • Drupal-Testumgebung erstellen
  • Drupal 6 Module
  • Drupal 7 Module
  • Drupal Screencasts auf deutsch
  • Archiv

Das Copyright des deutschsprachigen Drupal-Benutzerhandbuches unterliegt den jeweiligen Autoren. Übersetzungen des englischsprachigen Drupal-Benutzerhandbuches unterliegen der Creative Commons License, Attribution-ShareAlike 2.0.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association