Probleme mit NAV_LIST_UL, Servervariable

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
littleredhood
Posts: 33
Joined: Thu 18. Mar 2010, 14:23

Probleme mit NAV_LIST_UL, Servervariable

Post by littleredhood »

Hallo,
Ich bin ein Anfänger kurz vor dem Verzweifeln :-/ Für euch ist das sicher ziemlich easy.

Also: meine Startseite soll zweisprachig verzweigen
de: index_de
en: index_en

Nun möchte ich, dass alle Menülinks - habe ein Menü mit {NAV_LIST_UL:F,ID,,act_path,active} - ein _de bzw. _en angehängt bekommen.
Default wäre immer das _de.
(Sinn dahinter ist, dass der Shop auch mehrsprachig werden soll und ich über den Link die Sprache übergeben will.)

Wie kann ich eine Servervariable setzen und wieder abrufen und wie kann ich das Menü modifizieren?

1000 Dank!
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by flip-flop »

Hi,
das hier hast du gelesen?
Multilingual/Multidomain

Du verwendest dazu i.d.R. zwei Templates, eins für den DE- und eins für de EN Teil.
... und ich über den Link die Sprache übergeben ...
Möchtest du die Sprache per GET in der URL übergeben?
Wie kann ich eine Servervariable setzen und wieder abrufen ...
Innerhalb von phpwcms oder allgemein?
... wie kann ich das Menü modifizieren
Was möchtest du am Menü modifizieren?

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
littleredhood
Posts: 33
Joined: Thu 18. Mar 2010, 14:23

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by littleredhood »

Also, um es verständlicher zu machen.

Meine Startseite soll zweisprachig verzweigen
de: index_de
en: index_en
in zwei verschiedene Sprachbäume. Das ist kein Problem.

Der Shop wird beispielsweise bisher aufgerufen mit /index.php?shop
In Zukunft wünsche ich den Aufruf mit /index.php?shop&de oder /index.php?shop&en..
Die Navigation läuft allerdings nicht über direkte Links, sondern über NAV_LIST_UL.
Wie kann ich den Shop-Link bzw. alle Links automatisch modifizieren, so dass _en oder _de angehängt werden?

Ziel ist das hier: http://forum.phpwcms.org/viewtopic.php?f=10&t=18191
scheitert aber an den Fragen im 1. Post.
Last edited by littleredhood on Tue 13. Dec 2011, 10:21, edited 2 times in total.
littleredhood
Posts: 33
Joined: Thu 18. Mar 2010, 14:23

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by littleredhood »

Ich nehme an, die Servervariable ist eher eine Sessionvariable?
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by juergen »

Hallo

der Shop erkennt das zunächst mal nicht! Du musst die Routine die das macht nochmal inkludieren oder kopieren und in den shop Bibliotheken einlagern. Dann hast du allerdings nur die Spracherkennung für den Content und keine Links, Währungen und all solche Sachen verändert. Das ist ein größeres Vorhaben.

Ich habe sowas mal gemacht und mich dann dazu entschieden Magento das phpwcms Template überzustülpen ;)

Ging schneller !
littleredhood
Posts: 33
Joined: Thu 18. Mar 2010, 14:23

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by littleredhood »

Ja, aber wie könnte ich das umsetzen?
Ich muss dem Shop ja "nur" die Sprachkennung übergeben. Aber wie? irgendeinen Weg wird es ja wohl geben?
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by juergen »

Klar, hat doch Knut oben schon erwähnt, per zB GET Variable in der SHOP-URL

Das muss mit isset() und anderen Methoden sicherheitstechnisch abgedichtet werden, man sollte also wissen was man tut. Beschreiben lässt sich das ganze Vorgehen nicht bis ins kleinstze Detail, das würde Stunden dauern.
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by flip-flop »

...sicherheitstechnisch abgedichtet werden, man sollte also wissen was man tut.
Deshalb ist das auch nirgendwo beschrieben, denn jede Anwendungsfall ist anders gelagert und verlangt unterschiedliche Betrachtungswinkel was die Sicherheit angeht.

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by update »

Wenn ich in der Datei frontend.render.php des shop-moduls Folgendes unten einfüge (gaaanz unten, vor dem schließenden ?> )

Code: Select all

//language replacement copied/added RCS

//$language_default			= 'en';
$language_current			= $language_default;
$language_cookie_duration	= 60*60*24*365; // 1 year

if(isset($_GET['lang'])) {
	$language_current = strtolower( substr($_GET['lang'], 0, 5) );
	$_SESSION['phpwcmsFrontendLanguage'] = $language_current;
	setcookie('phpwcmsFrontendLanguage', $language_current, time()+$language_cookie_duration, '/' );
} elseif(isset($_SESSION['phpwcmsFrontendLanguage'])) {
	$language_current	= $_SESSION['phpwcmsFrontendLanguage'];
} elseif(isset($_COOKIE['phpwcmsFrontendLanguage'])) {
	$language_current	= $_COOKIE['phpwcmsFrontendLanguage'];
}
if(!in_array($language_current, $phpwcms['allowed_lang'])) {
	$language_current	= $language_default;
	$_SESSION['phpwcmsFrontendLanguage'] = $language_current;
	setcookie('phpwcmsFrontendLanguage', $language_current, time()+$language_cookie_duration, '/' );
}

// init language replacements
$language_regexp 		= array( 'search' => array(), 'replace' => array() );

// set all language replacements now
foreach($phpwcms['allowed_lang'] as $lang) {

	$language_regexp['search'][$lang]	= '/\['.$lang.'\](.*?)\[\/'.$lang.'\]/is';
	$language_regexp['replace'][$lang]	= $lang == $language_current ? '$1' : '';

}

$content['all']			= preg_replace($language_regexp['search'], $language_regexp['replace'], $content['all']);
$content["pagetitle"]	= preg_replace($language_regexp['search'], $language_regexp['replace'], $content["pagetitle"]);



?>
dann habe ich doch auch das shop-menu zweisprachig...
Und weil das per Cookie fixiert wird, bleibt die Sprache auch erhalten...
...wenn ich mich nicht irre ;)
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
littleredhood
Posts: 33
Joined: Thu 18. Mar 2010, 14:23

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by littleredhood »

Claus, das liest sich toll.
Und wie setze ich die Variable SESSION['phpwcmsFrontendLanguage']?
Bin leider echt noch Anfänger .-/
User avatar
Cipolla
Posts: 451
Joined: Sat 16. Feb 2008, 20:39
Location: Muppet Show

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by Cipolla »

littleredhood wrote:Claus, das liest sich toll.
Und wie setze ich die Variable SESSION['phpwcmsFrontendLanguage']?
Bin leider echt noch Anfänger .-/
Die brauchst du doch nicht setzen, die setzt das script sobald in der URL die Variable "lang" gesetzt wird, oder ein vorhandener cookie eingelesen wird.
...
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by update »

littleredhood wrote:Ziel ist das hier: viewtopic.php?f=10&t=18191
scheitert aber an den Fragen im 1. Post.
:oops: Hab' ich glatt überlesen! In dem Thread steht es doch piekfein beschrieben, wie das geht. Hatte mich vorhin kurzsichtig und vorschnell nur auf das nahe Liegende fixiert.... Lies das noch mal, dann wird Dir das schon klar werden.
What shall I say: Du endest unweigerlich mit einem zwei(mehr-)sprachigen Shop :D
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
littleredhood
Posts: 33
Joined: Thu 18. Mar 2010, 14:23

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by littleredhood »

Schon mal vielen Dank!
Jetzt noch die Masterfrage:
Wie bringe ich meine Navigation NAV_LIST_UL dazu, ?lang=de oder ?lang =en anzuhängen?
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by update »

Das geht dann ganz von alleine, wenn Du http://forum.phpwcms.org/viewtopic.php?f=10&t=18191 durchgeackert hast!
In diesem Tutorial möchte ich mein CMS für zwei Sprachen vorbereiten. Dafür muss man ein paar Modifikationen in den core files des shops und in der Konfiguration von phpwcms vornehmen.
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Probleme mit NAV_LIST_UL, Servervariable

Post by flip-flop »

Wie bringe ich meine Navigation NAV_LIST_UL dazu, ?lang=de oder ?lang =en anzuhängen?
Auf die Schnelle ohne es großartig getestet zu haben:

Im Template die Navigation markieren um mit dem Script gezielt in der Navigation suchen zu können:

Code: Select all

<!--NAVI01_START-->{NAV_LIST_UL:........}<!--NAVI01_END-->
Datei: template/inc_script/frontend_render/rt_inject_lang_into_nlu.php

Code: Select all

<?php
/**
* *****************************************************************************
* Expand the links in NAV_LIST_UL with a language tag.
* E.g.: index.php?category01&lang=EN
* Erweitert die Links der NAV_LIST_UL mit einem Sprach TAG
* Z. Bsp.: index.php?category02&lang=DE
*
* V1.0  14.12.11 K.Heermann (flip-flop)
*
* - The navi area to be searched is marked in the template with:
* - Der Navigationsbereich in dem gesucht werden soll wir gekennzeichnet durch:
*   Wrapper: <!--NAVI01_START-->{NAV_LIST_UL:P,0....}<!--NAVI01_END-->
*
* - Set the base category for each language in script in "Custom var:".
* - Setzen der Basiskategorie fuer jede Sprache im Script in "Custom var:".
*
* Each link in the navigation will be enhanced when the base ID is available.
* Jeder Link in der Navigation wird erweitert wenn die Basis-ID vorhnaden ist.
*
* *****************************************************************************
*/

// ----------------------------------------------------------------------------
// obligate check for phpwcms constants
	if (!defined('PHPWCMS_ROOT')) {
		die("You Cannot Access This Script Directly, Have a Nice Day.");}
// ----------------------------------------------------------------------------

if (strpos($content['all'], '<!--NAVI01_START-->')) { // Wrapper availabe/vorhanden?

	// Catch the NAVI01 area  // Den Navigationsbereich ausschneiden umd abholen
	preg_match_all('/\<!--NAVI01_START--\>(.*?)\<!--NAVI01_END--\>/ism',$content['all'], $navi);
	
	if ($navi[1][0]) {  // is there any content?   // Ist Inhahlt vorhanden?
	
		$lang       = '';
		$de_root   = 1;   // Custom var: root category id  language DE      // Basiskategorie-ID fuer DE
		$en_root   = 7;   // Cuatom var: root category id  language EN      // Basiskategorie-ID fuer EN
		
		// assign language      // Sprache zuweisen
		if		(isset($GLOBALS['LEVEL_ID'][1]) AND $GLOBALS['LEVEL_ID'][1] == $de_root) $lang = 'DE';
		elseif	(isset($GLOBALS['LEVEL_ID'][1]) AND $GLOBALS['LEVEL_ID'][1] == $en_root) $lang = 'EN';
		
		if (!empty($lang)) { // is a language set?       // Sprachzuweisung vorhanden?
		
			// rewrite all links	// Aendere alle Links
			if ($phpwcms['rewrite_url'])   // rewrite set to .phtml?      // Wird die URL umgeschrieben nach .phtml?
				$navi[1][0] = preg_replace('/\<a href="(.*?).phtml"(.*?)/','<a href="$1&lang='.$lang.'.phtml"$2',$navi[1][0]);
			else   //rewrite not set   // Kein Umschreiben
				$navi[1][0] = preg_replace('/\<a href="index.php\?(.*?)"(.*?)/','<a href="index.php?$1&lang='.$lang.'"$2',$navi[1][0]);
		}
		
		// Insert back into html source      // Fuege den geaenderten Inhalt an die alte Postion ein
		$content['all'] = preg_replace('/\<!--NAVI01_START--\>(.*?)\<!--NAVI01_END--\>/ism',$navi[1][0],$content['all']);
		
	}
}
// ----------------------------------------------------------------------------
?>
Wenn der Ordner frontend_render vom System abgearbeitet wird, ist die Seite komplett gerendert. An dieser Stelle können wir nun Veränderungen vornehmen:
Die Navi wird einfach mit einem frontend_render Script ausgeschnitten, bearbeitet und wieder an der alten Stelle eingesetzt.

Als Markierung für das Ausschneiden der NAIV (Wrapper) dienen die beiden Kommentare

Code: Select all

<!--NAVI01_START-->{NAV_LIST_UL:.......}<!--NAVI01_END-->
Im Script in

Code: Select all

		$de_root	= 1;	// Custom var: root id  language DE
		$en_root	= 7;	// Cuatom var: root id  language EN
werden die IDs der Basisebene der jeweiligen Sprache eingetragen.

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
Post Reply