[solved] Shop: Template mehrsprachig?

Hier bekommst Du deutschsprachigen Support bezüglich offizieller Module für phpwcms. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
User avatar
santscho
Posts: 1442
Joined: Mon 2. Apr 2007, 08:56
Location: Schweiz

[solved] Shop: Template mehrsprachig?

Post by santscho »

Das Shop-Template ist einsprachig aufgebaut. Gibt es eine Möglichkeit, für eine dreisprachige Website auch mit einem dreisprachigen Shop zu betreiben?

Ansonsten muss wohl ein externer Shop herhalten. Würde halt schon eine reine phpwcms-Lösung bevorzugen.
Last edited by santscho on Wed 17. Dec 2008, 13:40, edited 1 time in total.
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: Shop: Template mehrsprachig?

Post by santscho »

Idee

1. In phpmyadmin neue Shop-Tabellen erstellen (phpwcms_categories_en, phpwcms_sysvalue_en, phpwcms_shop_products_en, phpwcms_shop_orders_en)
2."mod_shop" duplizieren -> mod_shop_en
3. php "mod_shop_en" so modifizieren, dass sie: a) Einen weiteren Shop im Backend auflisten. b) Alle Datenbank-Einträge aus den neu erstellten Tabellen beziehen, bzw. in die neu erstellten Tabellen schreiben.

Aber natürlich keine Ahnung wie bewerkstelligen (bis auf Punkt 1 und 2)
Schon Konfuzius sagte: "Sei kein YAML-Lappen". YAML-phpwcms-Integration auf http://www.yaml.phpwcms.org
User avatar
swisscheese
Posts: 138
Joined: Mon 19. Feb 2007, 16:37
Location: Solothurn, Schweiz

Re: Shop: Template mehrsprachig?

Post by swisscheese »

Nönö, geht (fast) mit Bordmitteln:
- Das Shoptemplate mit Sprachen-Tags versehen ([de]Deutscher Text[/de][en]english text[/en])
- in der config die erlaubten Sprachen angeben
- lang_replace.php in template/inc_script/frontend_render verschieben
- include/inc_module/mod_shop/frontend.render.php folgendermassen modifizieren:
ca. Zeile 780:

Code: Select all

		$payment_options = get_payment_options();
		foreach($payment_options  as $item_key => $row) {
			$mail_customer = render_cnt_template($mail_customer, 'PAYBY_'.strtoupper($item_key), '');
		}
		if (function_exists('lang_replace'))
		{
			$mail_customer = lang_replace($mail_customer);
			$_tmpl['config']['mail_customer_subject'] = lang_replace($_tmpl['config']['mail_customer_subject']);
		}
ca. Zeile 960:

Code: Select all

}

if (function_exists('lang_replace'))
{
	$content['all'] = lang_replace($content['all']);
}

function get_cart_data() {
claus hat glaub ich mal ein ganz nettes Template geschrieben, weiss aber grad nicht wo suchen...

Gruss, swisscheese
User avatar
santscho
Posts: 1442
Joined: Mon 2. Apr 2007, 08:56
Location: Schweiz

Re: Shop: Template mehrsprachig?

Post by santscho »

Hmmmm. Das klingt ja vielversprechend. Werde das morgen gleich mal ausprobieren und feedback posten.

Grüsse in die Heimat (habe letzte Woche mein erstes Raclette nach drei Jahren hier in Singapore gegessen. In kurzen Hosen und T-Shirt. Da kommt doch bisschen Heimweh auf).

Ralph
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: Template mehrsprachig?

Post by update »

Ein Teil davon ist hier: http://forum.phpwcms.org/viewtopic.php?p=111776#p111776
Das wird Dir die Idee geben, wie es gehen könnte, denke ich. Und im frontend.render vom shop muss man eventuell den Sprachenswitch einbauen, ja - probier mal....
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: Template mehrsprachig?

Post by santscho »

Danke Claus. Der Aufbau des Templates ist mir klar. Aber diese Lösung würde bedeuten, dass im Backend auch die Produkte und Kategorien so angelegt werden?

Produkt: [de]Glühbirne[/de][en]Bulb[/en]
Beschreibung: [de]Warmes Licht[/de][en]Warm light[/en]
....

Habe in einem anderen Beitrag gelesen, dass auch die Artikel-Alias entsprechend benannt werden müssen, um zwischen Sprachen wechseln zu können. Alle CP's müssen mehrsprachig aufgebaut werden. Ziemlich umständlich und unübersichtlich. Ich würde separate Sprachbäume bevorzugen. So bin ich es mir auch gewohnt. Ein direkter Sprachwechsel von Artikel zu Artikel muss gar nicht sein. Eher eine Sprachauswahl auf der Homepage und/oder in der horizontalen Navigation (Umleitung auf die Startseite DE oder EN):

+INDEX
– Homepage mit Sprachwahl
++DE
+++SHOP DEUTSCH
++EN
+++SHOP ENGLISH

Ich denke, das würde so nicht gehen, da in den Shop-Einstellungen ja die ID der Shop-Artikel angegeben werden müssen. Und da sind ja jetzt 4 Artikel mit Shopdaten (2 für DE , 2 für EN).

Mal angenommen ich würde die Struktur so aufbauen:

+INDEX
– Homepage mit Sprachwahl
++DE
+++ SHOP DE (nur Weiterleitung zu ++SHOP)
++EN
+++ SHOP EN (nur Weiterleitung zu ++SHOP)
++SHOP (für alle Sprache)

Ich klicke auf SHOP EN und müsste dann auf ++SHOP kommen. Gleichzeitig müssen im Shop die "[en]....[/en]"-Daten geladen werden. Wäre das möglich?
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: Template mehrsprachig?

Post by update »

santscho wrote:Produkt: [de]Glühbirne[/de][en]Bulb[/en]
Beschreibung: [de]Warmes Licht[/de][en]Warm light[/en]
Das geht genau so! auch die Rubriken, in die die Produkte eventuell einsortiert sin, die Titel - einfach alles lässt sich im BE des shops so "umklammern"...
&lang=de zB switcht auf die deutsche Sprache usw...
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: Template mehrsprachig?

Post by santscho »

Ich habe versucht, dies testweise mal umzusetzen. Den php-Code habe ich wie oben abgeändert, allerdings stimmen die Zeilen-Nummern von Swisscheese überhaupt nicht mit meinen überein.

Artikeldaten werden geswitcht, Shopdaten nicht:
http://www.testarea.mediasolution.com.s ... op&lang=de
http://www.testarea.mediasolution.com.s ... op&lang=en

:?:
Schon Konfuzius sagte: "Sei kein YAML-Lappen". YAML-phpwcms-Integration auf http://www.yaml.phpwcms.org
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Re: Shop: Template mehrsprachig?

Post by juergen »

Das shöplein rendert sich selbst. Muss man dem shop halt sagen was es mit den [en] .. Klammern auf sich hat :idea:
User avatar
santscho
Posts: 1442
Joined: Mon 2. Apr 2007, 08:56
Location: Schweiz

Re: Shop: Template mehrsprachig?

Post by santscho »

Ich denke, das habe ich gemacht (siehe Posting von swisscheese). Aber er hat, wie schon erwähnt, ganz andere Zeilennummern als ich. Habe die originale PHP des 1.3.9 shops abgeändert.
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: Template mehrsprachig?

Post by update »

Kannst ja mal spaßeshalber folgenden Code in frontend.render.php vom shop reinschmeissen:

Code: Select all

//language replacement 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, 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"]);

..und dann noch mal testen ;)
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
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Shop: Template mehrsprachig?

Post by update »

achso: mach das mal genau vor das ?>

EDIT: kann aber auch sein, dass dieses Subtotal Net hartcodiert ist im Originalshop.... weiss ich grad nicht mehr ... :|
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: Template mehrsprachig?

Post by santscho »

Claus! Mein Held! Des geht ja!

Muss jetzt nur noch eine Strategie austüfteln, wie ich jetzt den Shop mehrsprachig umsetze (wegen der oben erwähnten Seitenstruktur).
Habe versucht in der anderen Sprachebene einen eigenen Shop-Artikel anzulegen. Dort habe ich ein CP-Alias verwendent und den Shop-CP integriert. Des geht nur bis ich im Bestell-Prozess fortfahre (z.B. vom Warenkorb zur Adress-Erfassung). Dann springt man nämlich zur anderen Sprachebene, was man natürlich nicht möchte. -> Shop zwar in korrekter Sprache, die Menüs aber natürlich in der falschen.

Alternativ halt wirklich nur eine Shop-Seite für alle Sprachen. Dort mit Sprachauswahl.Nur verschwinden dann alle Menü-Punkte.
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: Template mehrsprachig?

Post by update »

Nein! Den shop legst Du eine Ebene tiefer, nimmst ihn aus dem allgemeinen Menüfluss heraus - dann geht das für alle Sprachbäume mit einem einzigen....
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
swisscheese
Posts: 138
Joined: Mon 19. Feb 2007, 16:37
Location: Solothurn, Schweiz

Re: Shop: Template mehrsprachig?

Post by swisscheese »

Aahhh, jetzt weiss ich's wieder! Ich habe das frontend render skript abgeändert, weil ich die Sprachenersetzung nicht mehrmals im Site-code haben wollte. Die Datei template/inc_script/frontend_render/lang_replace.php lautet:

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			= $phpwcms['default_lang'];
$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, '/' );
}


$content['all']       = lang_replace($content['all']);
$content['pagetitle'] = lang_replace($content['pagetitle']);


function lang_replace($html)
{
	global $phpwcms, $language_current;
	// 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' : '';
	
	}
	
	return preg_replace($language_regexp['search'], $language_regexp['replace'], $html);
}
?>
Die eigentliche Arbeit macht also neu die Funktion lang_replace. Und genau diese wird dann auch im frontend.render.php des Shops aufgerufen. Die Codezeilen sind eventuell anders, weil ich bei diesem Projekt die 1.3.9 R258 am laufen habe.

Tja, manchmal sieht man vor lauter Raclette den Käse nicht mehr, gell Santscho :mrgreen:
Gruss, swisscheese
Post Reply