zweisprachige Navigation in 2k11-Template (gelöst)

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
konus
Regular
Posts: 334
Joined: Mon Jun 16, 2008 1:57 pm
Location: Dresden, Germany
Contact:

zweisprachige Navigation in 2k11-Template (gelöst)

Post by konus »

Hallo,
ich möchte gern meine Blog auf Zweisprachigkeit erweitern. Für die meisten Fragen habe ich hier im Forum Lösungsansätze gefunden.

Was derzeit bleibt, sind die Navigationslinks im 2k11 Template. Kann mir jemand einen Tipp geben, wie ich dort mehrere Sprachen (de, en) hinbekommen könnte? Ich habe hier gelesen, dass man es über Sprachkonstanten lösen könnte? Geht das auch in 2k11? Was müsste ich da in den Template-Optionen eingeben, damit diese Variablen ausgewertet werden?

Getestet habe ich mal {$CONST.TWOK11_TWEET_THIS} und auch ohne Klammern. Das ist aber 1:1 im Linknamen erschienen.
Last edited by konus on Tue Oct 29, 2013 8:22 pm, edited 1 time in total.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: zweisprachige Navigation in 2k11-Template

Post by garvinhicking »

Hi!

So out of the box geht das eher nicht, die Navlinks müssten durch das multilingual plugin geparst werden, dafür müsste die config.inc.php vom 2k11 entsprechende API-Methoden des Plugins aufrufen, bevor der Inhalt per assign an das Template durchgereicht wird.

Ich würde da eher empfehlen die .tpl Datei zu patchen und manuell IF-Abfragen einzubauen, die die Sprachvariable ({$lang} oder sowas) abfragen, und dann die entsprechenden Links zu setzen...

Die Idee mit Konstanten zu Arbeiten wäre auch eine Möglichkeit, würde aber auch bedeuten dass hier die config.inc.php angepasst werden muss, die dann erstmal prüft ob der eingetragene Linkname eine Konstante ist, oder ein normaler String...
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
konus
Regular
Posts: 334
Joined: Mon Jun 16, 2008 1:57 pm
Location: Dresden, Germany
Contact:

Re: zweisprachige Navigation in 2k11-Template

Post by konus »

Vielen Dank für die schnelle Antwort!
Ich habe in der index.tpl des Templates den folgenden Block gefunden

Code: Select all

{foreach from=$navlinks item="navlink" name="sbnav"}
          {if $navlink.title!=""&&$navlink.href!=""}<li>
                  {if $currpage==$navlink.href or $currpage2==$navlink.href}<span>
                        {else}<a href="{$navlink.href}">
                  {/if}
                  {$navlink.title}
                  {if $currpage==$navlink.href or $currpage2==$navlink.href}</span>
                        {else}</a>
                  {/if}</li>
          {/if}
{/foreach}
Kennt jemand eine leichte Möglichkeit, die foreach-Schleife so zu verändern, dass man beide Sprachvarianten in die Datenbank legen kann? Also dass abhängig von der Sprachvariable z.B. nur die Links 0-5 oder nur 6-11 ausgegeben werden bzw. dass einmal nur die geraden und einmal die ungeraden Links ausgegeben werden?
konus
Regular
Posts: 334
Joined: Mon Jun 16, 2008 1:57 pm
Location: Dresden, Germany
Contact:

Re: zweisprachige Navigation in 2k11-Template

Post by konus »

Hallo, ist wahrscheinlich etwas naiv, aber kann man in der Schleife Rechnen, also für die erste Hälfte z.B.
from=$navlinks/2

und für die zweite Hälte
from=$navlinks/2+$navlinks

Wenn ich die Schleife auflöse und die Links hart kodiere, verliere ich die Möglichkeit, dass die aktuelle Seite speziell markiert wird. (Oder ich bringe echt sehr viele Abfragen rein.)
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: zweisprachige Navigation in 2k11-Template

Post by garvinhicking »

Hi!

Ja, du kannst innerhalb von {foreach} mittels:

Code: Select all

{foreach from=$navlinks item="navlink" name="sbnav"}
  {if $smarty.foreach.foo.iteration % 2}
   <!-- Das ist eine ungerade Wiederholung -->
  {else}  
   <!-- Das ist eine gerade Wiederhoilung -->
  {/if}
{/foreach}
z.b. nur jeden zweiten Navlink ausgeben. Innerhalb dieses IFs könntest du dann noch die Sprache abfragen:

Code: Select all

{foreach from=$navlinks item="navlink" name="sbnav"}
  {if $smarty.foreach.foo.iteration % 2}
   {if $lang == 'de'}
        <li>...Navilink deutsch...</li>
    {else}
         <!-- kein navilink hier, da nicht deutsche sprachversion -->
    {/if}
  {else}  
   {if $lang == 'en'}
        <li>...Navilink englisch...</li>
    {else}
         <!-- kein navilink hier, da nicht englische sprachversion -->
    {/if}
  {/if}
{/foreach}
(Ungetestet :) )
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
konus
Regular
Posts: 334
Joined: Mon Jun 16, 2008 1:57 pm
Location: Dresden, Germany
Contact:

Re: zweisprachige Navigation in 2k11-Template

Post by konus »

Vielen Dank, das hat mir sehr geholfen! Ich habe nur noch $smarty.foreach.foo.iteration in $smarty.foreach.sbnav.iteration umbenannt und etwas eingekürzt. Jetzt sieht es so aus:

Code: Select all

{foreach from=$navlinks item="navlink" name="sbnav"}
  {if $smarty.foreach.sbnav.iteration % 2}
   {if $lang == 'de'}
        <!-- ungerade für Navilink deutsch, siehe oben -->
   {/if}
  {else}  
   {if $lang == 'en'}
        <!-- gerade für Navilink englisch -->
   {/if}
  {/if}
{/foreach}
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: zweisprachige Navigation in 2k11-Template (gelöst)

Post by Timbalu »

Sidestep:
Mit Smarty 3 foreach kann man das noch kürzen und vereinfachen. Und man hat mehr Möglichkeiten.
http://www.smarty.net/docs/en/language. ... erty.index
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
Post Reply