Artikelumschalter für zweisprachige Webpage

Bei Problemen/Anregungen mehrsprachiger Webseiten.

Artikelumschalter für zweisprachige Webpage

Beitragvon zordak » 20. Mär 2006, 17:14

Hallo allerseits,

Redaxo ist genau das CMS, das ich gesucht habe. Habe schon Joomla, Mambo, Dirigent, simple CMS, Limbo und wie sie alle heißen getestet, aber mein Fazit war immer gleich: zu überladen bzw. zu einfach gehalten; die Bedienung teilweise ein Geduldsspiel. In Redaxo habe ich den idealen Mittelweg gefunden. Nur brauchbare Funktionen...

Das Feature der Mehrsprachigkeit war ein weiterer Bonuspunkt. Dubioserweise bekommen das die großen Systeme - wie Limbo, Mambo, Joomla - nicht wirklich auf die Reihe.

Einen kleinen Schönheitsfehler hat Redaxo allerdings: AFAIK gibts keine Schaltfläche um in Artikeln selbst die Sprache umzustellen d.h. um direkt von der deutschen Fassung eines Artikels in die englische Fassung zu springen und umgekehrt.

Folgende kleine Modifikation im Footer des default Templates fügt allerdings diese Funktion hinzu. In meinem Fall ist CUR_CLANG=1 für englisch und 0 für deutsch. kann angepasst werden...
Code: Alles auswählen
<!-- end #website -->

<div class="footer">
<div class="footer2">
   <p class="col-left">&copy; by REDAXO</p>
   <p class="col-right"><a href="<?php print rex_getUrl(8); ?>">Sitemap</a> | <a href="<?php print rex_getUrl(7); ?> ">Impressum</a> |
<?php
      // Sprachumschaltung für einzelne Artikel

      echo "<a href=\"index.php?article_id=";
      echo $this->getValue("article_id");
      echo "&amp;clang=";
      if ($REX['CUR_CLANG'] == 0) { echo "1"; }else{ echo "0"; }
      echo "\">";
      if ($REX['CUR_CLANG'] == 0) { echo "ENGLISH"; }else{ echo "DEUTSCH"; }
      echo "</a>";

      // Sprachumschaltung für einzelne Artikel
?>
</p>
   <br class="clear" />
</div>
</div>



grüße
daniel
zordak
 
Beiträge: 2
Registriert: 20. Mär 2006, 16:46

Beitragvon Jan.Kristinus » 20. Mär 2006, 18:13

hallo,

danke für dein lob . hoeren wir natürlich gerne :) ..

genau wie du es nun machst - dafuer ist redaxo gedacht .. den rahmen geben wir mit redaxo und den rest baut man sich sinnvoll zusammen (und veröffentlicht das ergebnis)

auf direkte umschaltung zwischen den artikeln haben wir bewusst verzichtet. es kommt einfach zu selten vor das es immer einen passenden artikel gibt oder das jemand den gleichen artikel seiner sprache zusaetzlich noch in einer anderen sprache lesen will..

aber danke dafuer -- perfekt waere es wenn du nun noch überprüfst ob der artikel in der anderen sprache online gestellt ist .. :)

lg

jan
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Benutzeravatar
Jan.Kristinus
Admin
 
Beiträge: 1928
Registriert: 24. Aug 2004, 21:11
Wohnort: Frankfurt

Re

Beitragvon zordak » 20. Mär 2006, 19:59

jan hat geschrieben:hallo,
danke für dein lob . hoeren wir natürlich gerne :) ..

mit recht ;) ist das unter mambo bzw. joomla ein zirkus mit diesem mehrsprachen-plugin. teilweise sogar noch beta und mit core hack... alle revision lang nen neuen corepatch *urgs*

jan hat geschrieben:auf direkte umschaltung zwischen den artikeln haben wir bewusst verzichtet. es kommt einfach zu selten vor das es immer einen passenden artikel gibt oder das jemand den gleichen artikel seiner sprache zusaetzlich noch in einer anderen sprache lesen will..

ja, kann ich verstehen. bei uns ist das auch eher ne ausnahme.

diese erweiterung hat in keinem anderen CMS so problemlos geklappt wie bei euch. hab schon diverse leute verwünscht, weil die das unbedingt drin haben wollten.

btw: gibts eigentlich eine kompakte übersicht in der die variablen (und deren zweck) im array $REX beschrieben sind? meine verwendeten variablen oben hab ich aus der doku gefischt, gibts bestimmt aber noch einen eleganteren weg.

grüße
daniel
zordak
 
Beiträge: 2
Registriert: 20. Mär 2006, 16:46

Beitragvon Thomas » 14. Apr 2006, 21:48

Hi Daniel,

vielen Dank für den Code, genau das habe ich gesucht! Könntest du vielleicht bei den Downloads unter die Templates stellen.

Grüße
Thomas
Thomas
 
Beiträge: 34
Registriert: 31. Mai 2005, 20:16
Wohnort: Konstanz

Beitragvon holger » 16. Apr 2006, 11:13

Hallo,

ich habe hier auch eine Umschaltung für jeden Artikel.
Code: Alles auswählen
<?php
reset($REX[CLANG]);
for($i=0;$i<count($REX[CLANG]);$i++)
{
if ($i>0) echo "  ";
echo " <a href=index.php?article_id=".rex_getUrl(REX_ARTICLE_ID)."&clang=".key($REX[CLANG]).">".current($REX[CLANG])."</a>";
next($REX[CLANG]);
}
?>


Interessant fände ich jetzt noch, das die Umschaltung nur bei Artikeln erscheint, die auch in der anderen Sprache vorhanden und online sind.

Wie könnte man das hinbekommen ?

mfg
Holger
// Wenn die Theorie von der Praxis abweicht: --> Ändere die Theorie //
Benutzeravatar
holger
 
Beiträge: 409
Registriert: 21. Jun 2005, 12:21
Wohnort: Sehnde / Hannover / lower saxony

Beitragvon Markus.Staab » 16. Apr 2006, 11:40

Hi Holger,

als Ansatz für Dich:
Code: Alles auswählen
<?php
$articles = array();
foreach($REX['CLANG'] as $clang)
{
  $art = OOArticle::getArticleById(REX_ARTICLE_ID, $clang);
  if($art->isOnline())
  {
     $articles[] = $art;
  }
}

if(count($articles) > 1)
{
  foreach($articles as $article)
  {
    echo $article->toLink();
  }
}
?>


Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon beate » 21. Apr 2006, 22:53

hallo,

noch ein kleiner Hinweis, wie man das ganze vereinfachen kann, bei mod_rewrite:

Code: Alles auswählen
<?php
      // Sprachumschaltung für einzelne Artikel

      echo '<a href="'.rex_getUrl($this->getValue("article_id"), 1-$REX['CUR_CLANG']);
      echo '">';
      echo ($REX['CUR_CLANG'] == 0) ? 'ENGLISH' : 'DEUTSCH';
      echo "</a>";

      // Sprachumschaltung für einzelne Artikel
      ?>


Beate :)
beate
 
Beiträge: 124
Registriert: 14. Apr 2006, 16:15

Beitragvon Markus.Staab » 22. Apr 2006, 13:36

Hi zusammen,

Anmerkung: Der Ansatz von Beate funktioniert nur bei 2 Sprachigen Seiten

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon beate » 22. Apr 2006, 13:40

Klar, hätte ich vielleicht dazuschreiben sollen, mea culpa :shock:
beate
 
Beiträge: 124
Registriert: 14. Apr 2006, 16:15

Beitragvon hundertmorgen » 26. Apr 2006, 18:29

Hallo,
mal eine Frage: hat jemand schon eine Lösung gefunden, dass der Umschalter der Sprache nur angezeigt wird, wenn das andere Sprachdokument auch online ist?

Ich habe selbst versucht die Funktion "isOnline()" einzubauen, bekomme aber immer Fehlermeldungen!

Tip oder Lösung wäre klasse...
Vielen Dank
Benutzeravatar
hundertmorgen
 
Beiträge: 192
Registriert: 29. Jul 2005, 14:36
Wohnort: Essen / NRW

Beitragvon Markus.Staab » 26. Apr 2006, 18:43

Hi Hundertmorgen,

der Ansatz oben von mir sollte dafür ausreichen.

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon robert » 5. Mai 2006, 22:23

Hallo,

ich habe die Sprach-Umschaltung bereits in die Fusszeile eingbaut und sie funktioniert prima, nun möchte in diese Funktion auch im Header verwenden, allerdings möchte ich statt "DEUTSCH oder ENGLISCH" ein Flaggensymbole als kleine Buttons verwenden. Wie rufe ich die Grafiken statt der Texte für die Sprachauswahl auf?

Code: Alles auswählen
<?php
      // Sprachumschaltung für einzelne Artikel

      echo "<a href=\"index.php?article_id=";
      echo $this->getValue("article_id");
      echo "&amp;clang=";
      if ($REX['CUR_CLANG'] == 0) { echo "1"; }else{ echo "0"; }
      echo "\">";
      if ($REX['CUR_CLANG'] == 0) { echo "ENGLISH"; }else{ echo "DEUTSCH"; }
      echo "</a>";

      // Sprachumschaltung für einzelne Artikel
?>


MfG
Robert
Benutzeravatar
robert
 
Beiträge: 96
Registriert: 19. Sep 2005, 10:25

Beitragvon Markus.Staab » 5. Mai 2006, 22:31

Hi,

einfach anstatt der Texte den HTML-Tag für ein Bild einbinden (<img ...)

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon robert » 5. Mai 2006, 23:31

Hallo Markus,

danke für den Hinweis, ich habe es bereits verzweifelt versucht, aber es klappt nicht, was mach ich falsch?

Code: Alles auswählen
<?php
      // Sprachumschaltung für einzelne Artikel

      echo "<a href=\"index.php?article_id=";
      echo $this->getValue("article_id");
      echo "&amp;clang=";
      if ($REX['CUR_CLANG'] == 0) { echo "1"; }else{ echo "0"; }
      echo "\">";
      if ($REX['CUR_CLANG'] == 0) { echo <img src="pics/flag_en.gif"; }else{ echo <img src="pics/flag_de.gif"; }
      echo "</a>";

      // Sprachumschaltung für einzelne Artikel
?>


MfG
Robert
Benutzeravatar
robert
 
Beiträge: 96
Registriert: 19. Sep 2005, 10:25

Beitragvon Markus.Staab » 5. Mai 2006, 23:54

Hi Robert,

versuchs mal so:

Code: Alles auswählen
<?php
      // Sprachumschaltung für einzelne Artikel

      echo "<a href=\"index.php?article_id=";
      echo $this->getValue("article_id");
      echo "&amp;clang=";
      if ($REX['CUR_CLANG'] == 0) { echo "1"; }else{ echo "0"; }
      echo "\">";
      if ($REX['CUR_CLANG'] == 0) { echo '<img src="pics/flag_en.gif" />'; }else{ echo '<img src="pics/flag_de.gif" />'; }
      echo "</a>";

      // Sprachumschaltung für einzelne Artikel
?>


Wer PHP kann ist klar im Vorteil ;)

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Nächste

Zurück zu Mehrsprachigkeit [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast