[solved] Shop: Wie Sprach-Templates aktivieren?

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Post Reply
User avatar
santscho
Posts: 1442
Joined: Mon 2. Apr 2007, 08:56
Location: Schweiz

[solved] Shop: Wie Sprach-Templates aktivieren?

Post by santscho »

Betreibe phpwcms in den Sprachen DE, EN und FR. Dazu benutze ich diese Sprach-Umschaltung:

Code: Select all

<a href="index.php?home-d&lang=de" class="ym-button ym-xsmall">DE</a><a href="home-f&lang=fr.html" class="ym-button ym-xsmall">FR</a><a href="home-e&lang=en.html" class="ym-button ym-xsmall">EN</a>
Wie kann ich den Shop dazu bringen, die entsprechenden Shop-Templates zu verwenden (de.html, fr.html, en.html)?
Last edited by santscho on Mon 29. Sep 2014, 11:58, edited 1 time in total.
Schon Konfuzius sagte: "Sei kein YAML-Lappen". YAML-phpwcms-Integration auf http://www.yaml.phpwcms.org
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Shop: Wie Sprach-Templates aktivieren?

Post by update »

wie wäre es mit der Änderung der Document Language? Schon probiert? :oops:
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
santscho
Posts: 1442
Joined: Mon 2. Apr 2007, 08:56
Location: Schweiz

Re: Shop: Wie Sprach-Templates aktivieren?

Post by santscho »

Verstehe nicht was Du meinst, Claus. :?:

EDIT:
Meinst Du das...?

Code: Select all

<html lang="de">
EDIT 2:
Ja, wenn ich in der conf.inc.php die sprache auf "en" wechsle, wird der Shop in Englisch dargestellt. Das heisst also, dass phpwcms bei einem Sprachwechsel auch die doc-Language dynamisch umstellen sollte? Aber wie?
Schon Konfuzius sagte: "Sei kein YAML-Lappen". YAML-phpwcms-Integration auf http://www.yaml.phpwcms.org
User avatar
Oliver Georgi
Site Admin
Posts: 9888
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Shop: Wie Sprach-Templates aktivieren?

Post by Oliver Georgi »

So mittels Frontend Init:

Code: Select all

<?php

// Define some general language specifics

/**
 * language setting based on site tree
 * $phpwcms['allowed_lang'] = array('en', 'de', 'fr', 'es');
 * - DE
 * - EN
 * - FR
 * - ES
 * ...
 */
$phpwcms['id_lang'] = array(
	//	ID		LANG
		1	=>	'en',
		2	=>	'de' //,
	//	3	=>	'fr' ...
);
$phpwcms['lang_id'] = array_flip($phpwcms['id_lang']);

// Redirect to default language entry based on browser
if(!isset($LEVEL_ID[1])) {

	// try to link user to correct language
	$phpwcms['DOCTYPE_LANG'] = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)) : $phpwcms['default_lang'];
	if(!isset($phpwcms['lang_id'][$phpwcms['DOCTYPE_LANG']])) {
		$phpwcms['DOCTYPE_LANG'] = $phpwcms['default_lang'];
	}

	// Get current alias
	$pagelink = empty($content['struct'][ $phpwcms['lang_id'][$phpwcms['DOCTYPE_LANG']] ]['acat_alias']) ? 'id='.$phpwcms['lang_id'][$phpwcms['DOCTYPE_LANG']] : $content['struct'][ $phpwcms['lang_id'][$phpwcms['DOCTYPE_LANG']] ]['acat_alias'];
	$pagelink = $phpwcms["rewrite_url"] ? $pagelink . PHPWCMS_REWRITE_EXT : 'index.php?' . $pagelink;

	// Redirect
	headerRedirect(PHPWCMS_URL . $pagelink, 301);

} elseif(isset($phpwcms['id_lang'][ $LEVEL_ID[1] ])) {

	$phpwcms['DOCTYPE_LANG'] = $phpwcms['default_lang'] = $phpwcms['id_lang'][ $LEVEL_ID[1] ];

} else {

	$phpwcms['DOCTYPE_LANG'] = $phpwcms['default_lang'];

}


?>
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
santscho
Posts: 1442
Joined: Mon 2. Apr 2007, 08:56
Location: Schweiz

Re: Shop: Wie Sprach-Templates aktivieren?

Post by santscho »

Hallo Oliver

Ich habe folgende Struktur:
-------------
ID1 = DEUTSCH
ID2 = FRANCAIS
ID3 = ENGLISH
ID4 = SHOP -->> Hier müssen die Shop-Sprachtemplates gezogen werden
-------------

Sobald ich mich in der Strukturebene 1, 2 oder 3 befinde, wird im Browser schön gerendert: <html lang="de">, <html lang="fr"> oder <html lang="en">. Wunderbar!

Doch der Shop (ID4) wird immer als <html lang="de"> ausgegeben. Dies ist die Standard-Definition in der conf.inc.php. Der Shop nimmt jetzt immer das "de.html"


Settings der conf.inc.php:

Code: Select all

$phpwcms['allowed_lang']      = array('de','fr','en');
$phpwcms['DOCTYPE_LANG']      = ' ';
$phpwcms['default_lang']      = 'de';
Dein Frontend Init Script habe ich angepasst:

Code: Select all

$phpwcms['id_lang'] = array(
   //   ID      LANG
	1   =>   'de',
	2   =>   'fr',
	3   =>   'en'
);
Für den Sprachenwechsel habe ich das folgende Frontend-Renderscript im Einsatz:

Code: Select all

<?php

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

	
// set allowed languages
// set $phpwcms['allowed_lang'] in conf.inc.php
// $phpwcms['allowed_lang']      = array('en', 'de', 'fr', 'es');
$language_default			= 'de';
$language_current			= $language_default;
$language_cookie_duration	= 60*60*24*365; // 1 year

if(isset($_GET['lang'])) {
	$language_current = strtolower( substr($_GET['lang'], 0, 2) );
	$_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"]);

?>
Sollte ich grundsätzlich Sprachen anders managen als ich das bisher gemacht habe? Bisher habe ich ja 3 Sprachbäume im Einsatz. Ich habe gesehen, dass man für Seitenstruktur und Artikel auch Sprachen definieren kann. Und im Shop kann man auch die Produkte den Sprachen zuweisen. Was kannst Du mir empfehlen?
Schon Konfuzius sagte: "Sei kein YAML-Lappen". YAML-phpwcms-Integration auf http://www.yaml.phpwcms.org
User avatar
Oliver Georgi
Site Admin
Posts: 9888
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Shop: Wie Sprach-Templates aktivieren?

Post by Oliver Georgi »

Der Shop sollte nicht separat geführt werden, sondern immer einen Bereich innerhalb der jeweiligen Sprache haben. Denn jede Sprache hat separaten Warenkorb usw.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
santscho
Posts: 1442
Joined: Mon 2. Apr 2007, 08:56
Location: Schweiz

Re: Shop: Wie Sprach-Templates aktivieren?

Post by santscho »

Ja, Oliver! Ich hatte gerade in den Shoptemplates gesehen, dass man Shop-ID und auch die Warenkorb-ID im Shop-Template individuell definieren kann:

Code: Select all

; Overwrites the backend settings
; shop_url =
; cart_url =
Also...
1. Shop-Ebene in DE, FR und EN
2. Shop-Templates für DE, FR und EN anpassen (mit den jeweiligen Anpassungen der shop_url und cart_url)

Werde das mal so ausprobieren.
Schon Konfuzius sagte: "Sei kein YAML-Lappen". YAML-phpwcms-Integration auf http://www.yaml.phpwcms.org
User avatar
santscho
Posts: 1442
Joined: Mon 2. Apr 2007, 08:56
Location: Schweiz

Re: [solved] Shop: Wie Sprach-Templates aktivieren?

Post by santscho »

Jeder Sprachbaum hat jetzt eine eigene Shop-Kategorie. Die Shop-Templates werden jetzt problemlos übernommen. Danke!
Schon Konfuzius sagte: "Sei kein YAML-Lappen". YAML-phpwcms-Integration auf http://www.yaml.phpwcms.org
Post Reply