Sprachen einbinden ins Yaml-Template

Bei Problemen/Anregungen mehrsprachiger Webseiten.

Sprachen einbinden ins Yaml-Template

Beitragvon pecci » 21. Jan 2010, 18:58

Hallo,

ich hab schon eine (deutsche) Seite mit Yaml und redaxo umgesetzt. Das hat nach anfänglichen Schwierigkeiten (kann nur wenig php) gut geklappt.
Ein weiteres Projekt ist gescheitert, weil ich das mit der Mehrsprachigkeit einfach nicht hinbekommen habe.

Mache jetzt gerade einen zweiten Anlauf.
Datenbank (lokal) ist installiert, die Einbindung der templates hat auch funktioniert und ich habe einen Artikel in drei Sprachen. Angezeigt wird allerdings bisher nur der deutsche Text.

Es hapert bei der Einbindung ins template. Das habe ich noch nicht verstanden.

Ich möchte gerne, dass der Benutzer auf jeder Seite (im header, der für alle Seiten gleich sein wird) zwischen den Sprachen wählen kann.

Wie sag ich das jetzt dem template?

Das template sieht so aus: (Auszug)

Code: Alles auswählen
// Übergabe der Seiteninhalte an die Platzhalter für das yaml_layout-Template, z. B.
// Artikel:               $this->getArticle(1)
// Fester Link:           '<a href="http://www.raybeam.de/index.php?article_id=1">der Startartikel</a>'
// Hauptnavigation:       $navigation
// Subnavigation:         $subNavigation
// rootArtikelNavigation: $raNavigation
// breadcrumb-Menü:       $breadcrumb
// Login:                 $login
$headerContent    = $this->getArticle(2); // Inhalte für den header-Bereich
$headerTopNav     = '<a href="#">der Topnav-Link</a>';// Platzhalter für Links im Skip-Link-Bereich
$headerNavigation = ''; // Platzhalter für "getrennte Hauptnavigation"
$headerBreadcrumb = ''; // Platzhalter für Breadcrumb-Menü im header-Bereich
$col1Navigation   = $navigation; // Platzhalter für Navigation in der ersten Float-Spalte des Inhaltsbereiches
$col1Breadcrumb   = ''; // Platzhalter für Breadcrumbmen� in der ersten Float-Spalte des Inhaltsbereiches
$col1Content    = $this->getArticle(1); // Platzhalter f�r Inhalte in der ersten Float-Spalte des Inhaltsbereiches

$col2Navigation   = ''; // Platzhalter für Navigation in der zweiten Float-Spalte des Inhaltsbereiches
$col2Breadcrumb   = ''; // Platzhalter für Breadcrumbmenü in der zweiten Float-Spalte des Inhaltsbereiches
$col2Content    = $this->getArticle(4); // Platzhalter für Inhalte in der zweiten Float-Spalte des Inhaltsbereiches
$col3Navigation   = ''; // Platzhalter für Navigation in der statischen Spalte des Inhaltsbereiches
$col3Breadcrumb   = $breadcrumb; // Platzhalter für Breadcrumbmenü in der statischen Spalte des Inhaltsbereiches
$col3Content    = $this->getArticle(3); // Platzhalter für Inhalte in der statischen Spalte des Inhaltsbereiches
$footerNavigation = ''; // Platzhalter für Navigation im Footer-Bereich
$footerContent    = $this->getArticle(5); // Inhalte für den Footerbereich

// Einzubindende YAML3.0-Stylesheets
$yamlStylesheet     = 'files/css/my_layout.css';
$yamlPatchesStylesheet  = 'files/css/patches/patch_my_layout.css';


Dann folgt im html-Teil:
Code: Alles auswählen
  <div id="main">
        <a id="content" name="content"></a> <!-- Skiplink-Anker: Content -->

        <!-- #col1: Erste Float-Spalte des Inhaltsbereiches -->
          <div id="col1">
              <div id="col1_content" class="clearfix">
                <?php print $col1Breadcrumb; ?>
                <?php print $col1Navigation; ?>
                <?php print $col1Content; ?>

            </div>
          </div>
        <!-- #col1: - Ende -->


Wenn ich nun zum Beispiel bei
$this->getArticle(1)

schreibe: $this->getArticle(1),2

sollte doch eigentlich der Artikel in der Sprache ID=2 angezeigt werden?
Oder nicht? Hab einen totalen Knoten im Kopf....

kann mir jemand weiterhelfen?
Sei dir selbst ein Witz, der dich erheitert.
pecci
 
Beiträge: 66
Registriert: 19. Jan 2007, 01:15
Wohnort: Pisco Elqui, Chile

Beitragvon raybeam » 21. Jan 2010, 20:41

Hallo pecci,

eigentlich brauchst Du keine Änderungen an den YAML-Templates vornehmen. Sie sollten auch mehrsprachig funktionieren.

Na ja. Nicht ganz. Ich habe gerade bei einem Test festgestellt, dass das Breadcrumbmenü, na sagen wir "Verbesserungspotential" aufweist. Da muss ich noch mal ran. :wink:

Die Sprachauswahl erfolgt letztlich über eine Erweiterung des URL um "&clang=1".

Das "macht" redaxo selbst. Du musst nur einen Link einbauen, der auf die jeweilig andere Sprachversion verweist.

Vor längerer Zeit habe ich einen solchen Link mal so in ein Template eingebaut:

Code: Alles auswählen
<a href="'.rex_getUrl($this->getValue('id')).'&amp;clang=1">english</a>

Über eine if-Abfrage könnte man auch die aktuelle clang abfragen und je nach Ergebnis die alternativen Sprachlinks anbieten.

Vielleicht hilft das ja schon weiter.

Gruß

Peter
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30

Beitragvon pecci » 21. Jan 2010, 22:12

Hallo Peter :D ,

danke für den Tipp. Hab folgendes eingegeben im template:

Code: Alles auswählen
  <!-- #col1: Erste Float-Spalte des Inhaltsbereiches -->
          <div id="col1">
              <div id="col1_content" class="clearfix">
                <?php print $col1Breadcrumb; ?>
                <?php print $col1Navigation; ?>
                <?php print $col1Content; ?>
              <p><a href="'.rex_getUrl($this->getValue('id')).'&amp;clang=1">english</a> </p
            </div>
          </div>
        <!-- #col1: - Ende -->


Dann wird mir auch brav ein link "englisch" angezeigt.
Aber wenn ich draufklicke, kriege ich ein leeres Fenster mit folgender Fehlermeldung:

Code: Alles auswählen
Forbidden

You don't have permission to access /'.rex_getUrl($this->getValue('id')).'&clang=1 on this server.



Die DB ist lokal. An den Rechten kanns doch eigentlich nicht liegen - oder?????

danke,
pecci
Sei dir selbst ein Witz, der dich erheitert.
pecci
 
Beiträge: 66
Registriert: 19. Jan 2007, 01:15
Wohnort: Pisco Elqui, Chile

Beitragvon raybeam » 23. Jan 2010, 18:09

Nach einer PM konnte die Geschichte geklärt werden.

Hier ein kleines Tutorial für Interessierte: Sprachenlinks mit YAML-Templates

Gruß

Peter
Benutzeravatar
raybeam
 
Beiträge: 445
Registriert: 5. Feb 2006, 20:30


Zurück zu Mehrsprachigkeit [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast