Benutzer-Werkzeuge

Webseiten-Werkzeuge


joomla:multilang-content_title

Joomla - Content - Titel

Wie erstelle ich Inhalts-Titel, die sich beim ändern der Sprache automatisch ändern?

Prinzipiell ist es in Joomla möglich mehrsprachige Webseiten zu erstellen. Wenn man die Mehrsprachigkeit nach dem offiziellen Vorgehen erstellt, so erhält man mit aktivirtem SEF, URLs die sich für jede Sprache komplett unterscheiden.

Mit diesem Vorgehen ist es möglich (zumindest für com_content) eine mehrsprachige Webseite aufzubauen, dessen URLs sich nur im URL-Sprachkürzel unterscheiden.

Vorgehen

Alles wie im Blogpost von Joomlashine beschrieben, ausser Schritt 3, 7 und 8.

  • Es wird eine Kategorie mit einem alias für alle Sprachen erstellt.
  • Es wird ein Beitrag für alle Sprachen erstellt.
  • Mithilfe eines Language Filter Plugins wird der Inhalt für jede Sprache im selben Beitrag erfasst.
  • Statt einem „richtigen“ Titel wird im Titel-Feld ein Sprachschlüssel eingegeben z.B TITLE_COMCONTENT_MEINTITEL
  • Für den Sprachschlüssel wird in jeder Sprache ein Sprach-Override erstellt
  • Es müssen einige Overrides im Template vorgenommen werden, um die Sprachschlüssel im ganzen System korrekt auszutauschen

Overrides

Alle Ausgaben des Beitrag-Titels müssen durch die Text handling class Joomla\CMS\Language\Text (ehemals JText) geschleust werden, damit die Sprachschlüssel ersetzt werden.

/templates/MeinTemplate/html/com_content/article/default.php
use Joomla\CMS\Language\Text;
 
   // solches 
   $this->escape($this->item->title);
 
   // ändern zu
   Text::_($this->escape($this->item->title));
 
/templates/MeinTemplate/html/layouts/joomla/content/blog_style_default_item_title.php
use Joomla\CMS\Language\Text;
 
   // solches 
   $this->escape($displayData->title);
 
   // ändern zu
   Text::_($this->escape($displayData->title));
 
/templates/MeinTemplate/html/plg_content_pagenavigation/default.php
use Joomla\CMS\Language\Text;
 
   // solches 
   htmlspecialchars($rows[$location-1]->title);
   htmlspecialchars($rows[$location+1]->title);
   $row->prev_label;
   $row->next_label;
 
   // ändern zu
   Text::_(htmlspecialchars($rows[$location-1]->title));
   Text::_(htmlspecialchars($rows[$location+1]->title));
   Text::_($row->prev_label);
   Text::_($row->next_label);
 
/templates/MeinTemplate/html/mod_breadcrumbs/default.php
use Joomla\CMS\Language\Text;
 
   // solches 
   $item->name;
 
   // ändern zu
   Text::_($item->name);
 

Zuguter letzt muss noch der Seitentitel in den medataten des headers geändert werden. Dazu in der index.php des Templates folgendes einfügen. Einfügen irgendwo vor der Zeile <jdoc:include type=„head“ />.

/templates/MeinTemplate/index.php
use Joomla\CMS\Language\Text;
 
   // Change meta <title>
   $this->title = Text::_($this->title);
 
joomla/multilang-content_title.txt · Zuletzt geändert: 11/09/2020 14:40 von Manuel