Benutzer-Werkzeuge

Webseiten-Werkzeuge


joomla:multilang-content_title

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
joomla:multilang-content_title [11/09/2020 12:34] – Externe Bearbeitung 127.0.0.1joomla:multilang-content_title [11/09/2020 14:40] (aktuell) Manuel
Zeile 1: Zeile 1:
-====== Joomla - Router ======+====== Joomla - Content - Titel ======
  
-Wie erstelle ich einen Router für die eigene Komponente?+Wie erstelle ich Inhalts-Titel, die sich beim ändern der Sprache automatisch ändern?
  
-Das Routing ersetzt die "normalen" URLs (/index.php?option=com_content&view=article&id=1&Itemid=474) durch "lesbare" URLs (/index.php/joomlabeitrag), indem alias Bezeichnungen eingesetzt werden. Dies geschieht durch das File router.php im root-Verzeichnis der jeweiligen Komponente.+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.
  
-In Joomla existieren zwei Ansätze, wie ein Router aufgebaut werden kann. Zum einen gibt es den neuen View-Based Routerwelcher das Verhalten der Joomla-Core Komponenten nachzustellen vermag. Zum anderen gibt es den Legacy Router, mit welchem man jedes beliebige Verhalten bauen kann.+Mit diesem Vorgehen ist es möglich (zumindest für com_content) eine mehrsprachige Webseite aufzubauendessen URLs sich nur im URL-Sprachkürzel unterscheiden.
  
-Weitere Infos: 
-https://www.techfry.com/joomla/how-to-create-router-for-joomla-component 
  
 +===== Vorgehen =====
  
-===== Neuer Router (View-Based) =====+Alles wie im Blogpost von [[https://www.joomlashine.com/blog/create-multilingual-joomla-site.html|Joomlashine]] beschrieben, ausser Schritt 3, 7 und 8.
  
-Seit Joomla 3.8 gibt es eine neue Router-Klasse, die das Routing von Joomla vereinfachen soll, in dem es Methoden zu einem einfachen ansichtsbasierten (http://www.example.com/[menuitem]/[category]/[article]) Routing liefert.+  * Es wird eine Kategorie mit einem alias für alle Sprachen erstellt. 
 +  * Es wird ein Beitrag für alle Sprachen erstellt. 
 +  * Mithilfe eines [[https://extensions.joomla.org/extension/n3t-language-filter|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 [[https://docs.joomla.org/J3.x:Language_Overrides_in_Joomla/de|Sprach-Override]] erstellt 
 +  * Es müssen einige Overrides im Template vorgenommen werden, um die Sprachschlüssel im ganzen System korrekt auszutauschen
  
-Weitere Infos: +==== Overrides ====
-https://groups.google.com/g/joomla-dev-general/c/YnILNx_Lmeg+
  
 +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. 
  
-<file php router.php> +<file php /templates/MeinTemplate/html/com_content/article/default.php
-<?php + 
-public function __construct($app = null, $menu = null) +use Joomla\CMS\Language\Text
-+ 
-  // If your view takes a URL identifier, like the &id= parameter of the +   // solches  
-  // article view of com_content, you have to set the name of that identifier +   $this->escape($this->item->title); 
-  // variable in your $view object with $view->setKey(). +    
-  $category = new RouterViewConfiguration('category'); +   // ändern zu 
-  $category->setKey('id')->setNestable()+   Text::_($this->escape($this->item->title)); 
-  $this->registerView($category); +   
-   +
-  // If your view also has a parent view, like an article view which can +
-  // be reached via a category view, you then have to define the parent view +
-  // of $view. +
-  $article = new RouterViewConfiguration('article'); +
-  $article->setKey('id')->setParent($category, 'catid'); +
-  $this->registerView($article); +
-   +
-  parent::__construct($app, $menu); +
-   +
-  // implements the Itemid lookup for your router +
-  $this->attachRule(new MenuRules($this)); +
-   +
-  // implements the current behavior of the Joomla core components +
-  $this->attachRule(new StandardRules($this)); +
-   +
-  // implements the behavior when no Itemid is present after the Itemid lookup +
-  $this->attachRule(new NomenuRules($this)); +
-}+
 </file> </file>
  
 +<file php /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));
 +   
 +</file>
 +
 +<file php /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);
 +   
 +</file>
 +
 +<file php /templates/MeinTemplate/html/mod_breadcrumbs/default.php>
 +
 +use Joomla\CMS\Language\Text;
 +
 +   // solches 
 +   $item->name;
 +   
 +   // ändern zu
 +   Text::_($item->name);
 +   
 +</file>
 +
 +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" />.
 +
 +<file php /templates/MeinTemplate/index.php>
 +
 +use Joomla\CMS\Language\Text;
 +
 +   // Change meta <title>
 +   $this->title = Text::_($this->title);
 +   
 +</file>
  
-===== Legacy Router (Custom) ===== 
  
joomla/multilang-content_title.1599820498.txt.gz · Zuletzt geändert: von 127.0.0.1