[solved] Shop: Template mehrsprachig?
[solved] Shop: Template mehrsprachig?
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.
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
Re: Shop: Template mehrsprachig?
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)
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
- swisscheese
- Posts: 138
- Joined: Mon 19. Feb 2007, 16:37
- Location: Solothurn, Schweiz
Re: Shop: Template mehrsprachig?
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:
ca. Zeile 960:
claus hat glaub ich mal ein ganz nettes Template geschrieben, weiss aber grad nicht wo suchen...
Gruss, swisscheese
- 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']);
}
Code: Select all
}
if (function_exists('lang_replace'))
{
$content['all'] = lang_replace($content['all']);
}
function get_cart_data() {
Gruss, swisscheese
Re: Shop: Template mehrsprachig?
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
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
Re: Shop: Template mehrsprachig?
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....
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.
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.
Re: Shop: Template mehrsprachig?
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?
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
Re: Shop: Template mehrsprachig?
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"...santscho wrote:Produkt: [de]Glühbirne[/de][en]Bulb[/en]
Beschreibung: [de]Warmes Licht[/de][en]Warm light[/en]
&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.
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.
Re: Shop: Template mehrsprachig?
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

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
Re: Shop: Template mehrsprachig?
Das shöplein rendert sich selbst. Muss man dem shop halt sagen was es mit den [en] .. Klammern auf sich hat 

Re: Shop: Template mehrsprachig?
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
Re: Shop: Template mehrsprachig?
Kannst ja mal spaßeshalber folgenden Code in frontend.render.php vom shop reinschmeissen:
..und dann noch mal testen 
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"]);

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.
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.
Re: Shop: Template mehrsprachig?
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 ...
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.
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.
Re: Shop: Template mehrsprachig?
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.
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
Re: Shop: Template mehrsprachig?
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.
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.
- swisscheese
- Posts: 138
- Joined: Mon 19. Feb 2007, 16:37
- Location: Solothurn, Schweiz
Re: Shop: Template mehrsprachig?
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:
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
Gruss, swisscheese
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);
}
?>
Tja, manchmal sieht man vor lauter Raclette den Käse nicht mehr, gell Santscho

Gruss, swisscheese