Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 09.01.2016 23:32

owr_web
Server-Pate
Registriert: 16.12.2010
Beiträge: 538

CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Nachdem ich mich nunmehr an die Version 2 gemacht habe, brauche ich für ein kleineres Projekt Mehrsprachigkeit. Aber wie machen ohne mit Kanonen auf Spatzen zu schießen? Brauch ich die ganzen CG.....-Module, nur damit ich Mehrsprachig sein kann? Also auf die Suche gemacht.

Folgende Seiten hab ich gefunden und die Infos für diesen Beitrag genutzt:
1.) Rolfs Blog: http://www.cmscanbesimple.org/blog/mult … ade-simple
2.) Goran Ilics - {idt}: http://www.i-do-this.com/blog/Another-m … MS-Page/57

Hab mal alles zusammengeschrieben, Beispiel für 3 Sprachen -> deutsch, englisch und spanisch. Für alle anderen Sprachen soll (als Fallback) englisch angezeigt werden.

A) pretty url:
[== config.php ==]
$config['url_rewriting'] = 'mod_rewrite';
$config['page_extension'] = '';

Ich lass die Endung immer weg (welchen Sinn hat .html oder.php?). außerdem sieht z.B. /de.html für de Startseite der Sprache nicht optimal aus wink Die notwendige .htaccess gibts im core im Unterordner doc als htaccess.txt -> in den Hauptordner kopieren, anpassen, Dateinamen samt Endung ändern.

B) Template für Weiterleitungsseite

Als Template für die Weiterleitungsseite eine leere Vorlage erstellen, dessen einziger Inhalt das content-Smarty ist

C) Seitenstruktur

Die Seitenstruktur ist relativ einfach:
1. Weiterleitungsseite (Standardseite) mit oben erstelltem leerem Template !
2. de (Inhaltsseite -> Startseite für deutsch)
-- 2.1 Startseite (interner Link zur Seite de)
--  2.2 weitere Seite usw.
3. en (Inhaltsseite -> Startseite für englisch)
--  3.1 Home (interner Link zur Seite en)
--  3.2 next Site etc.
4. es (Inhaltsseite -> Startseite für spanisch
--  4.1 Inicio (interner Link zur Seite es)
--  4.2 página siguiente etc.

D) Weiterleitungsseite Inhalt

Die Seite stellt ja lediglich eine Weiterleitungsseite auf die entsprechenden Sprachen dar. Daher ist der einzige Inhalt dieser Seite folgender:

{browser_lang accepted='en,de,es' default='en' assign='browser_lang'}
{redirect_page page=$browser_lang}

Nicht vergessen, wysiwyg auszuschalten vorher.

E) Page-alias für Sprachseiten erkennen (de/en/es)

Einige Dinge sind ja sprachspezifisch anders, daher muss cmsms ja wissen, auf welcher Sprachseite wir uns befinden. Dazu benötigen wir folgenden UDT:

[==Name des UDT: get_root_page_alias==]$assign = isset($params['assign']) ? $params['assign'] : 'root_page_alias';
$hm = cmsms()->GetHierarchyManager();
if ( empty($alias) ) $alias = \cms_utils::get_current_alias();
$stack = array();
$node = $hm->find_by_tag('alias',$alias);
while( $node && $node->get_tag('id') > 0 )  {
$stack[] = $node;
$node = $node->getParent();
}
if( count($stack) == 0 ) return;
$alias = $stack[count($stack)-1]->get_tag('alias');
$smarty->assign($assign,$alias);
F) Navigation

Meine Navigation habe ich recht einfach gelöst. Ich habe nur eine Navigation auf der linken Seite:

{Navigator loadprops=0 template='Simple Navigation' collapse='0' start_level='2'}

Viel mehr Aufwand ist es auch bei oben und links nicht wink Meines Erachtens braucht es die manchmal beschriebenen GCB's für die verschiedenen Sprach-navigationen nicht, da ich ja mit dem start_level (fast) alles abfangen kann.

G) Sprachlinks direkt auf die Unterseiten

Da ich nicht nur jeweils auf die anderen Startseiten verlinken wollte, habe ich mich an Gorans Seite gemacht und den UDT angepasst an für die V2. Ich "musste" den Umweg über den akutellen Alias gehen, da friendly_position nicht mehr existent. Also aktueller Alias fragt hierarchy-Position ab und die geänderte dann den Alias der jeweiligen anderen Sprache(n)

[== UDT hierarchy_position ==]
/** 
     * Returns page_alias of valid [hierarchy] position 
     * 
     * @param string $params['page_position'] Mandatory. 
     * @param string $params['assign']
     */
    $return = FALSE;
        $c_alias = cms_utils::get_current_alias();
        $db = \CmsApp::get_instance()->GetDb();
        $query  = 'SELECT hierarchy FROM ' . CMS_DB_PREFIX . 'content WHERE content_alias = ?';
        $page_hierarchy = $db->GetOne($query, array($c_alias));
    if (!empty($params[page_position])) {
        $lang_hierarchy = $params[page_position];
        $lang_hierarchy .= substr($page_hierarchy, 5);
        $db = \CmsApp::get_instance()->GetDb();
        $query  = 'SELECT content_alias FROM ' . CMS_DB_PREFIX . 'content WHERE hierarchy = ?';
        $return = $db->GetOne($query, array($lang_hierarchy));
    }
    if (isset($params['assign'])) {$smarty->assignGlobal($params['assign'], $return);}
    else {return $return;}
H) Der GlobalContentBlock "languagestrings"
     (besser gesagt in der Designverwaltung die Vorlage vom Typ "Core::Standard")

Also zuerst mal die allgemeinden Variablen, welche einfach im Template eingefügt bzw. ersetzt werden können. Dann noch die Sprachschaltungen um die entsprechenden Flaggen-Links generieren zu können - wie geschrieben gibts ja im Template einen Fallback, falls ein entsprechender Alias nicht existiert. Aber achtung! Die führenden Nullen müssen im GCB eingetragen sein, da friendly_position nicht mehr existent (oder ich zumindest nirgends mehr gefunden).

[== GCB-languaagestrings ==]
{if $lang == de}  
{$mysitename="Seitenname" scope=global}
{$myyouarehere="Sie sind hier" scope=global}
{$myanchornavi="Zur Navigation" scope=global}
{$myanchormain="Zum Inhalt" scope=global}
{$mysubmit="Suchen" scope=global}
{$myfoo="bar" scope=global}

{elseif $lang == "en"}
{$mysitename="Pagename" scope=global}
{$myyouarehere="You are here" scope=global}
{$myanchornavi="Skip to navigation" scope=global}
{$myanchormain="Skip to content" scope=global}
{$mysubmit="Submit" scope=global}
{$myfoo="bar" scope=global}

{elseif $lang == "es"}
{$mysitename="Nome de Pagia" scope=global}
{$myyouarehere="Tú estás aquí" scope=global}
{$myanchornavi="Saltar a la navegación" scope=global}
{$myanchormain="Saltear el contenido" scope=global}
{$mysubmit="buscar" scope=global}
{$myfoo="bar" scope=global}
{/if}

{* language switching *} 
{hierarchy_position page_position="00002" assign="de_alias" scope=global} 
{hierarchy_position page_position="00003" assign="en_alias" scope=global} 
{hierarchy_position page_position="00004" assign="es_alias" scope=global}
I) Seitentemplates (ausgenommen die Weiterleitungsseite)

Die Ausgabe der Variablen für die einzelnen Seiten-aliase habe ich - der Einfachheit halber - direkt in den GCB "languagestrings" gepackt (siehe Code). Somit hole ich mir ganz am Anfang des Templates sozusagen die Variable $lang, den GCB und mit diesem auch gleich den UDT

[== Template ganz oben ==]
{strip}{process_pagedata}
   {get_root_page_alias assign='lang_alias'}
   {if $lang_alias != "error404"}{$lang=$lang_alias scope=global}{/if}
   {global_content name="languagestrings"}
{/strip}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$lang}" lang="{$lang}">
{* lang anhand der Sprachseite *}  ..........usw. usf. und den Rest vom Fest .......... 

Die Ausgabe der Sprachlinks erfolgt dann beispielsweise so:

[== Template im Bereich der Flaggen ==]
<div id="sidebarb"><br />
   {if $lang != "de"}{if $de_alias == ""}{$de_alias = "de"}{/if}
     <div class="border">{cms_selflink page=$de_alias imageonly="1"  image="uploads/design/de.png" title="deutsch" alt="deutsch"}</div>&nbsp;&nbsp;
   {/if}
   {if $lang != "en"}{if $en_alias == ""}{$en_alias = "en"}{/if}
     <div class="border">{cms_selflink page=$en_alias imageonly="1"  image="uploads/design/en.png" title="english" alt="english"}</div>&nbsp;&nbsp;
   {/if}
   {if $lang != "es"}{if $es_alias == ""}{$es_alias = "es"}{/if}
     <div class="border">{cms_selflink page=$es_alias imageonly="1"  image="uploads/design/es.png" title="español" alt="español"}</div>
   {/if}
</div>

Das zweite if in der jeweiligen Zeile ist der Fallback, wenn ein Seitenalias mal nicht vorhanden ist -> dann gehts immer ab zur Startseite der Sprache.

J) Error404 - Dokument

Das error404 wird als Fehlerseite direkt in der ersten Ebene (am besten nach den Sprachdateien) erstellt. Hier ein Beispiel mit einer Fehlerseite für alle (drei) Sprachen. Damit sie nicht so trostlos dasteht, habe ich am Anfang ein Bild eingefügt, welches vom Text her lediglich "<< 4 0 4 >>" enthält und Grafisch ein wenig aufbereitet ist:
-) Inhaltstyp: Fehlerseite
-) Titel: :: 404 ::
-) Inhalt:

{browser_lang accepted='de,en,es' default='en' assign='browser_lang'}
<img style="display: block; margin-left: auto; margin-right: auto;" src="uploads/design/error_404.png" alt="404" width="650" height="242" />
<p>&nbsp;</p>

{if $lang == 'de'}
<p>Mist. Aus irgendeinem Grund ist diese Verbindung unterbrochen. Vielleicht war es dein Fehler ... vielleicht war es unsere Schuld? Aber wir wollen nicht darauf herumreiten, wessen Schuld es war. Lassen Sie es uns einfach noch einmal versuchen</p>
{elseif $lang == 'en'}
<p>Darn. for some reason, this link is broken. Maybe it was your fault...maybe it was our fault? but let's not dwell on whose fault it was. Let's just put this down to a bad experience and move on. So if you wouldn't mind doing us a favour and trying again, that would be great.</p>
{elseif $lang == 'es'}
<p>Maldito. por alguna raz&oacute;n, este v&iacute;nculo se ha roto. Tal vez fue su culpa ... tal vez fue nuestra culpa? pero no vamos a insistir en qui&eacute;n tuvo la culpa. Vamos a poner esto a una mala experiencia y seguir adelante. As&iacute; que si no te importa que nos hace un favor y de volver a intentarlo, eso ser&iacute;a genial.</p>
{/if}
<p>{cms_selflink page=$lang}</p>

-) Seitnespezifische Smarty (Tab "Logik")

{browser_lang accepted='de,en,es' default='en' assign='browser_lang'}
{assign var="lang" value=$browser_lang scope=global}

Das brauchen wir, da die Variablen für die Sprache aus dem root_alias ja "error404" heißen würden. Daher wurde dies auch beim Seitentemplate betreffend error404 ergänzt.

K) Suche
  • In diesem Beispiel habe ich die Bildergalerie ausgeblendet.

  • Es ist eine Abfrage eingebaut, dass nur die Seiten der Sprache ausgegeben werden (die 999 steht für die erste Stelle vor der Sprachstartseite (de oder en oder es oder ..) - mit 0 zu zählen beginnen!

  • Damit auch "kein Ergebnis" ausgegeben wird, wenn "nur" in Galerie oder anderen Sprachen gefunden wurde noch einen Zähler und die passende Variable ein zweites Mal

  • Die Einträge können auch so abgewandelt werden, dass der erste beim Zähler auch aussagt "nichts in dieser Sprache gefunden, es könnte jedoch in den anderen Sprachseiten Ergebnisse geben"

[==Suchtemplate==]{if $itemcount > 0}
<ul>
{counter start='0' assign='rescount'}
  {foreach from=$results item=entry}
{if $entry->module != "Gallery"}
{if $entry->url|mb_substr:999:2 == $lang}{counter assign='rescount'}
  <li>{* $entry->title *} - <a href="{$entry->url}">{$entry->urltxt}</a> ({$entry->weight}%)</li>
  {*
     You can also instantiate custom behaviour on a module by module basis by looking at
     the $entry->module and $entry->modulerecord fields in $entry
      ie: {if $entry->module == 'News'}{News action='detail' article_id=$entry->modulerecord detailpage='News'}
  *}
{/if}
{/if}
  {/foreach}
{if $rescount == 0}<p><strong>{$mynoresultsfound}</strong></p>{/if}
</ul>

<p>&nbsp;</p>
{else}
  <p><strong>{$mynoresultsfound}</strong></p>
{/if}

==============================================================================

Ich hoffe, es ist eine brauchbare Anleitung - Hinweise, Tipps, Korrekturvorschläge einfach im Thread anbringen smile

Beitrag geändert von owr_web (12.03.2016 18:36)

Offline

#2 11.01.2016 17:58

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13.09.2010
Beiträge: 6.741
Webseite

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Danke für die ausführliche Anleitung - ist ja schon fast ein HowTo wink. Hab echt überlegt, den Beitrag in das entsprechende Board zu verschieben ...


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#3 11.01.2016 18:34

owr_web
Server-Pate
Registriert: 16.12.2010
Beiträge: 538

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Tu dir keinen Zwang an wink Aber vielleicht werd ichs noch ein wenig aufbereiten, sodass zwar die zwei Links drinnen bleiben, aber alle Schritte hier im Text sind.

Offline

#4 11.01.2016 18:45

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13.09.2010
Beiträge: 6.741
Webseite

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Naja, im Kontext passt es hier sicherlich besser her - wenn wir doch schon ein separates Board für diese Thematik haben big_smile.


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#5 17.01.2016 17:19

owr_web
Server-Pate
Registriert: 16.12.2010
Beiträge: 538

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

So, hab den Beitrag mal (fast) vervollständigt. Da man ja nie weiß, wann welche Seiten abgeschalten, Links geändert werden usw. hab ich mal versucht alles reinzuschreiben.
die error404 folgt noch wink

Die error404 ist nun auch dabei - somit ist eigentlich alles für eine kleine mehrsprachige Webseite vorhanden.

Beitrag geändert von owr_web (17.01.2016 20:11)

Offline

#6 19.01.2016 22:29

owr_web
Server-Pate
Registriert: 16.12.2010
Beiträge: 538

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Da hab ich ja glatt die Suche vergessen. Die kann im Grunde recht einfach aufgebaut werden.
Einziges Manko, oder vielleicht sogar Vorteil:

  • In diesem Beispiel habe ich die Bildergalerie ausgeblendet.

  • Es ist eine Abfrage eingebaut, dass nur die Seiten der Sprache ausgegeben werden (die 999 steht für die erste Stelle vor der Sprachstartseite (de oder en oder es oder ..) - mit 0 zu zählen beginnen!

  • Damit auch "kein Ergebnis" ausgegeben wird, wenn "nur" in Galerie oder anderen Sprachen gefunden wurde noch einen Zähler und die passende Variable ein zweites Mal

  • Die Einträge können auch so abgewandelt werden, dass der erste beim Zähler auch aussagt "nichts in dieser Sprache gefunden, es könnte jedoch in den anderen Sprachseiten Ergebnisse geben"

[==Suchtemplate==]{if $itemcount > 0}
<ul>
{counter start='0' assign='rescount'}
  {foreach from=$results item=entry}
{if $entry->module != "Gallery"}
{if $entry->url|mb_substr:999:2 == $lang}{counter assign='rescount'}
  <li>{* $entry->title *} - <a href="{$entry->url}">{$entry->urltxt}</a> ({$entry->weight}%)</li>
  {*
     You can also instantiate custom behaviour on a module by module basis by looking at
     the $entry->module and $entry->modulerecord fields in $entry
      ie: {if $entry->module == 'News'}{News action='detail' article_id=$entry->modulerecord detailpage='News'}
  *}
{/if}
{/if}
  {/foreach}
{if $rescount == 0}<p><strong>{$mynoresultsfound}</strong></p>{/if}
</ul>

<p>&nbsp;</p>
{else}
  <p><strong>{$mynoresultsfound}</strong></p>
{/if}

BTW: Kann mir bitte jemand erklären, was der Unterschied zwischen entry-title und entry urltxt ist? oder besser gesagt was er sein sollte? er gibt mir bei jedem Test und immer und überall das selbe, nämlich den Seitentitel aus.

Offline

#7 11.03.2016 13:34

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13.09.2010
Beiträge: 6.741
Webseite

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Bin die Anleitung gerade noch mal durchgegangen und da ist mir noch etwas aufgefallen

$query  = 'SELECT hierarchy FROM ' . cms_db_prefix() . 'content WHERE content_alias = ?';

Das Datenbank-Prefix gibt's in der 2.x als Konstante CMS_DB_PREFIX, und bekanntermaßen sind Konstanten performanter

Also effizienter

$query  = 'SELECT hierarchy FROM ' . CMS_DB_PREFIX . 'content WHERE content_alias = ?';

Aber keine Bange - du bist in bester Gesellschaft. Selbst im Core findet sich noch beides (kopfschüttel) ... allein in der include.php 3x.


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#8 12.03.2016 18:38

owr_web
Server-Pate
Registriert: 16.12.2010
Beiträge: 538

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Danke fürs Durchschauen - habs gleich mal korrigiert.
Gleichzeitig auch die Suche noch im ersten Beitrag hinzugefügt, sodass alles beisammen ist. Aber irgendwas fehlt mir eigentlich noch - ich weiß nur noch nicht, was ....

Offline

#9 14.03.2016 19:58

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13.09.2010
Beiträge: 6.741
Webseite

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Hätte da nur noch eine Sache

$c_alias = cms_utils::get_current_alias();

'ne ganze Klasse zu aktivieren, nur um etwas bereits bekanntes zu ermitteln, erscheint mir etwas oversized.

Worauf ich hinaus will - Smarty kennt die Variable $page_alias (den Alias für die aktuelle Seite) bereits. Nach meiner bescheidenen Meinung müsste es doch effizienter sein, sich den Wert von Smarty zu holen, als (nochmals) den ganzen Core dafür zu bemühen - also in etwa so

$c_alias = $smarty->getTemplateVars('page_alias');

http://www.smarty.net/docs/en/api.get.template.vars.tpl


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#10 14.03.2016 21:29

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09.11.2010
Beiträge: 4.055

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Nimmt sich nicht viel.
Ob ich das Page-Alias über die Smarty-Klasse und zwei Methoden aus den Template-Variablen hole oder über die cms_utils-Klasse und zwei Methoden ... abgesehen davon, wie kommt denn die Variable überhaupt ins Template? wink D.h. CMSms hat das Page-Alias schon lange vorher ermittelt und in einer Variable gespeichert.

EDIT:

Allerdings fällt mir dabei auf, dass derartige Variablen offenbar doppelt vorkommen.
Einmal als Template-Variablen und einmal als "System-Variablen" im CMSms-Objekt.

Beitrag geändert von NaN (15.03.2016 10:02)

Offline

#11 15.03.2016 15:09

owr_web
Server-Pate
Registriert: 16.12.2010
Beiträge: 538

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Wenn ich das jetzt also richtig interpretiere ist es BSE (BiepSchnurzEgal) welches ich von den beiden nehme - oder?

Offline

#12 15.03.2016 16:04

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09.11.2010
Beiträge: 4.055

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Meiner Meinung nach ja.

Offline

#13 08.05.2016 16:01

owr_web
Server-Pate
Registriert: 16.12.2010
Beiträge: 538

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Hab noch einen Nachtrag - und zwar fürs Menü. Da ja die Startseite eigentlich ein Link auf die übergeordnete Seite ist, wird sie nicht als aktive Seite erkannt. Das kann für einfache Menüs recht schnell gelöst werden und zwar indem man das if fürs current dupliziert und anpasst, z.B.:

[== smarty ==]
    {if $page_alias == 'de' && $node->alias == 'startseite'}
      {* this is the current page *}
      {assign var='liclass' value=$liclass|cat:' menuactive'}
      {assign var='aclass' value=$aclass|cat:' menuactive'}
    {/if}

Offline

#14 09.05.2016 09:57

kumquats
hat von CMSMS gehört
Registriert: 09.05.2016
Beiträge: 5

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Erst einmal Danke für die tolle und aktuelle Zusammenstellung!
Ich hatte dasselbe Problem mit der Startseite.
Habe es aber anders gelöst: Goran schreibt in seinem Blog, dass es genau umgedreht ist; die Übergeordnete Seite der jeweiligen Sprache ist der Link und ihm wird der Alias z. B. "de" gegeben.
Auf die erste Inhaltsseite (hier Startseite genannt) wird damit verlinkt.
Dann funktionierte es bei mir ohne weitere Veränderungen.

Offline

#15 09.05.2016 15:04

owr_web
Server-Pate
Registriert: 16.12.2010
Beiträge: 538

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Klar, im Endeffekt gehts dabei dann aber eigentlich hauptsächlich um die sogenannte "Geschmacksache"

Wie man es macht hängt hauptsächlich von Endung/Pretty-url/Verzeichnisstruktur ab. Ohne pretty-url ists einfacher umdrehen wie du es machst.

Wenn ich bei pretty-url mit (z.B.) .html enden lasse, dann dreh ich es um (z.B. www.domain.com/de/startseite.html)
Ich hab den Aufbau mit Verzeichnisnamen gemacht (also ohne Endungen), somit ist der genannten Weg für mich vorteilhafter, also als Start domain.com/de und dann domain.com/de/alias2 usw.
Insbesondere ja auch, da ich im Menü keine Unterpunkte habe, somit eine Linie. Was auch beim css viel erleichtert.

So bin ich auch erst beim erstellen des responsiven Designs mit Menü ohne JS draufgekommen, dass ich vielleicht die aktuelle Seite "markieren" soll.

Offline

#16 09.05.2016 17:54

kumquats
hat von CMSMS gehört
Registriert: 09.05.2016
Beiträge: 5

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Hm, ich habe auch pretty Url mit keiner Endung und es funktioniert korrekt. Allerdings habe ich noch ein altes Menu-Template das ich mal in der 1.10er Version angepasst habe.

Ja, Unterpunkte habe ich damit gab es das Problem im Besonderen, dass die Unterpunkte der Startseite (Sektion 1) als dritte in der Hierachie angezeigt wurden...aber wie gesagt mit Vertauschung der Linkseite und der Inhaltsseite funktioniert es.

Home

English (en -Linkseite)
    Section 1 (erste Inhaltsseite Englisch)
       

  1. subpage 1

  2. subpage 2

  3. subpage 3

    Section 2

  1. subpage 1

  2. subpage 2

Deutsch (de -Linkseite)

    Sektion 1 (erste Inhaltsseite deutsch)

  1. Unterseite 1

  2. Unterseite 2

  3. Unterseite 3

    Sektion 2

  1. Unterseite 1

  2. Unterseite 2

Beitrag geändert von kumquats (09.05.2016 18:12)

Offline

#17 21.08.2017 01:08

juto
hat von CMSMS gehört
Registriert: 18.04.2012
Beiträge: 11

Re: CMSMS-2: Mehrsprachigkeit ohne Module bei kleineren Webseiten

Diese Methode, eine mehrsprachige Seite aufzusetzen funktioniert wunderbar, allerdings nur, wenn die Datenstruktur wie vorgeschlagen ist.
Sobald man alle Daten eine Ebene tiefer legt, liefert der BDT get_root_page_alias nicht mehr die richtigen Alias-Namen. Jedenfalls steht in der Variable {$lang} dann der Alias der übergeordneten Seite (anstelle von "de" bei mir dann "Projekt1").

Was müsste man abändern, damit das auch innerhalb der folgenden Seitenstruktur funktioniert?

Projekt1 (mehrsprachig)
1.1. Weiterleitungsseite (Standardseite) mit oben erstelltem leerem Template !
1.2. de (Inhaltsseite -> Startseite für deutsch)
-- 1.2.1 Startseite (interner Link zur Seite de)
-- 1.2.2 weitere Seite usw.
1.3. en (Inhaltsseite -> Startseite für englisch)
-- 1.3.1 Home (interner Link zur Seite en)
-- 1.3.2 next Site etc.
1.4. es (Inhaltsseite -> Startseite für spanisch
-- 1.4.1 Inicio (interner Link zur Seite es)
-- 1.4.2 página siguiente etc.

Projekt2 (keine Mehrsprachigkeit)
2.1 Home
2.2 Seite 1
-- 2.2.1 Subseite
-- 2.2.2 Subseite
...

Projekt3 (keine Mehrsprachigkeit)
3.1 Home
3.2 Seite 1
-- 3.2.1 Subseite
-- 3.2.2 Subseite
...

Die Projekte gehören zusammen, werden mit Varianten des selben Templates gestaltet und sollen über {MultiDomains} in einer einzigen CMSMS-Installation angesprochen und gepflegt werden.

Offline