Franz Holzinger

autor  
21-01-16 12:34:53 Mehrsprachigkeit und Fehler
André Sheydin
Hallo,

ich habe eine weitere Sprache hinzugefügt. Content Fallback ist eingestellt. Übersetzte Statische Inhalte werden mit dem Parameter L=1 angezeigt. Die Shop-Plugins müssten eigentlich auch ohne weiteres in der Standard-Sprache angezeigt werden, dachte ich, es gibt jedoch Probleme.

Beim tt_products Shop jedoch bekomme ich bei der Produktliste folgende Fehlermeldung:

Fatal error: Class 't3lib_parsehtml' not found in /…/typo3conf/ext/tt_products/marker/class.tx_ttproducts_subpartmarker.php on line 112

Die Detailansicht eines Produkts gibt folgenden Fehler:

Products: Wrong parameters. GET/POST var 'tt_products[product]' is missing or no item with uid = 1 found on allowed pages (16) .


Haben Sie eine Idee? Besten Dank!

TYPO3 7.6.0 + tt_products 2.8.1
23-01-16 21:15:28 div2007
Franz Holzinger
Wenn die Extension div2007 ab Version 1.6.1 installiert wird, dann sollte die Klasse t3lib_parsehtml gefunden werden.

Der Ausgangspunkt für das Produkt ist falsch gesetzt, oder es gibt in der angegebenen Sprache kein übersetztes Produkt. Oder die Kategorie ist nicht übersetzt worden.
25-01-16 10:11:11 Illegal string offset
André Sheydin
Nach dem Update aller Extensions (TYPO3 7.6.2 + tt_products 2.8.2 + div2007 1.6.1) gibt es folgende Meldung im Frontend:

http://we.tl/8Znhz0MS2c

> Der Ausgangspunkt für das Produkt ist falsch gesetzt, oder es gibt in der angegebenen Sprache kein übersetztes Produkt. Oder die Kategorie ist nicht übersetzt worden.

Ich möchte eigentlich, dass die Plugins aus der default-Sprache mit den Kategorien und Produkten aus der default-Sprche eingeblendet werden, sofern es keine Übersetzungen gibt. Fallback eben. Ist das möglich?

Vielen Dank!
26-01-16 14:18:42 Details zur Fehlermeldung
André Sheydin
#1: PHP Warning: Illegal string offset 'version' in /…/typo3conf/ext/tt_products/control/class.tx_ttproducts_main.php line 156

00156: $this->config['version'] = $eInfo['version'];
27-01-16 16:52:04 Fehler in TYPO3
Franz Holzinger
Dabei handelt es sich um einen Fehler in TYPO3. Es kennt scheinbar die Funktion t3lib_extMgm nicht mehr, obwohl diese über die Migrationsanweisungen in der Extension div2007 1.6.1 festgelegt worden ist.
Dann muss leider die Datei class.tx_div2007_alpha5.php der Extension div2007 manuell abgeändert werden.


t3lib_extMgm::extPath($extKey);
ersetzen durch

$emClass = '\\TYPO3\\CMS\\Core\\Utility\\ExtensionManagementUtility';
call_user_func($emClass . '::extPath', $extKey);
27-01-16 16:53:46 Fallback
Franz Holzinger
Einen Fallback gibt es bisher nur für die alternativen Texte eines Produktes. Für alles andere müsste eine Fallback Funktion noch programmiert werden.
28-01-16 08:32:56 Kein Effekt
André Sheydin
Leider bleibt nach dem Patch die gleiche Fehlermeldung erhalten.

Haben Sie noch eine Idee?

> Einen Fallback gibt es bisher nur für die alternativen Texte eines Produktes. Für alles andere müsste eine Fallback Funktion noch programmiert werden.

D.h. Plugins und Produkte müssen redundant angelegt werden?
29-01-16 12:54:31 rätselhaft
Franz Holzinger
Ich habe über einen Debugger die Zeile 156 in der Datei class.tx_ttproducts_main.php von tt_products 2.8.3 unter TYPO3 7.6.2 überprüft. Es sieht alles richtig aus. Es gibt keinen Fehler.

Welche Debug Ausgaben erzeugt denn die Zeile

debug ($eInfo, '$eInfo');
$this->config['version'] = $eInfo['version'];

? Es müsste das sein:


Array
title Shop System
description New versions at ttproducts.de. Documented in E-Book "Der TYPO3-Webshop" - Shop with listing in multiple languages, with order tracking, photo gallery, DAM, product variants, credit card payment and bank accounts, bill, creditpoint, voucher system and gift certificates. Latest updates at ttproducts.de.
category plugin
state stable
author Franz Holzinger
author_email franz@ttproducts.de
author_company jambage.com
CGLcompliance
CGLcompliance_note
version 2.8.3
constraints
depends
div2007 1.5.1-0.0.0
php 5.1.2-5.6.99
table 0.3.0-0.0.0
tsparser
typo3 4.5.0-7.7.99
conflicts
mkl_products
su_products
zk_products
ast_rteproducts
onet_ttproducts_rte
shopsort
c3bi_cookie_at_login
suggests
func_wizards
lastuploaddate
reviewstate
TYPO3_version 4.5.0-7.7.99
manual
Boolean
TRUE


Der Workaround für einen Fallback sieht so aus, dass keine Übersetzungstabellen verwendet werden können. Für jede Sprache müssen die Produkt und Kategorien in eigene Sysfolder gegeben werden. pid_list muss dann über die Sysfolder der Fremdsprache und über den Sysfolder der Hauptsprache gelegt werden. Allerdings sind dann wiederum einige Produkt in zwei Sprachen vorhanden. Das kann vermieden werden, wenn man auch in der Hauptsprache eine Aufteilung macht in die übersetzen Produkte und die nicht übersetzten.
Im Setup müssen die Übersetzungstabelle deaktiviert werden.

conf.tt_products.ALL {
language.type = noTranslation
}

ebenso für tt_products_cat .

conf.tt_products_cat.ALL {
language.type = noTranslation
}

Die Plugins müssen deshalb nicht doppelt angelegt werden. Das wäre unnötig.
29-01-16 15:42:28 Rückfragen
André Sheydin
> debug ($eInfo, '$eInfo');
> $this->config['version'] = $eInfo['version'];

Wenn ich die Zeile darüberstelle, wird keine zusätzliche Ausgabe erzeugt. Sorry für die blöde Frage, wie bekomme ich denn die Ausgabe?

--

Ist der oben beschriebene Workaround denn die beste Lösung für folgendes Problem? Ich kann Ihnen leider nicht ganz folgen.

Es gibt einen deutschen Shop, dazu soll ein Shop in der Schweiz hinzukommen. Die TYPO3 Installation, alle Inhalte außer den Preisen und dem Impressum sollen identisch bleiben. Für diese Abweichungen habe ich eine alternative Sprache angelegt, um per Fallback die Standard-Inhalte aufzurufen. Stellt sich die Frage, wie die Produkte gehandhabt werden sollen — der einzige Unterschied ist die Währung und der Preis. Ich sah folgende Möglichkeit:

In beiden Sprachen Produkte zeigen, die »allen Sprachen« zugewiesen sind (und benutze das Preis2-Feld für den Schweizer Preis).
Doch leider bekomme ich keine Ausgabe der Produkte in der Schweizer Sprache im Frontend, obwohl es ja logisch ist.

Wie würden Sie das aufbauen?
29-01-16 15:57:43 debug
Franz Holzinger
Die Debug Ausgaben müssen im TYPO3 Install Tool freigeschaltet werden. Oder eine Debug Extension wie z.B. fh_debug installieren, welche die Debug Ausgaben in eine Datei schreibt.

Ich weiß nicht recht, was die Schweizer Sprache sein soll. Es gibt dort 4 Sprachen.
Vermutlich ist pid_list nicht korrekt gesetzt, oder es ist ein Ausgangspunkt beim Shop Plugin eingestellt.

Wenn das Produkt aber in eine andere Sprache übersetzt werden soll, so geht das wegen des Workarounds für einen Fallback leider nicht. Es müsste dann jedes Produkt für jede Sprache kopiert werden und für jede Sprache erneut samt Preis eingepflegt werden. Das Preis2 Feld kann man nur in dem Fall verwenden, wo kein Workaround für das Fallback notwendig wird. Denn wenn fast alle Produkte ohnedies doppelt und mehrfach angelegt werden müssen, dann braucht man das Preis2 Feld auch nicht mehr. Das Preis2 Feld ist nur dann zielführend, wenn man jedes Produkt nur einmal anlegt.

Am besten wäre es, gleich auf das Fallback zu verzichten und alle Produkte immer zu übersetzen, wenn auch mit dem deutschen Text, wenn man sich die Übersetzungsarbeit sparen möchte. Dann könnte man auch das Preis2 Feld optimal für den Preis der Schweiz nutzen und müsste kein Produkt doppelt einpflegen.
29-01-16 16:48:16 Debug
André Sheydin
Zeile debug ($eInfo, '$eInfo'); hinzugefügt, fh_debug installiert, DEBUGFILEMODE auf 0 gesetzt, Datei fileadmin/debug.html angelegt. Datei bleibt leer.

--

Bei der Auswahl der Schweiz soll dasselbe Deutsch angezeigt werden. Es sollten also alle Inhalte identisch sein, außer eben der Preis (und USt etc.). Eben deshalb möchte ich ja nur ein Produkt für beide Sprachen benutzen, nur mit einem unterschiedlichen Preis/Währung.

Bilder sagen bekanntlich mehr als Tausend Worte. Ich habe ein PDF mit Screenshots erstellt und wäre Ihnen überaus dankbar, wenn Sie mir sagen, was ich falsch mache bzw. die ich zum Ziel komme.

<a href="http://we.tl/VBi3qevwT5">PDF mit Screenshots zum Problem</a>
30-01-16 11:44:41 fh_debug
Franz Holzinger
Wenn die Debug Datei leer bleibt, dann ist etwas im Extension Manager bei fh_debug falsch eingestellt worden, z.B. die IP Adresse.

Wenn die Produkte in der Schweiz auf Deutsch sind und sonst auch alle Produkte im gleichen Deutsch sind, dann verstehe ich nicht, warum Sie etwas übersetzen wollen. Es reicht jedenfalls, die Produkte auf mehrere Sysfolder aufzuteilen, um zu verhindern, dass in der Schweiz alle Produkte gekauft werden können. Einfach die pid_list für jedes Land anders setzen. Und für die Schweiz dann price2 verwenden.

Was hier ein Fallback bezwecken sollte, das ist mir unklar.
1-02-16 08:54:16 2. Sprache
André Sheydin
> Wenn die Produkte in der Schweiz auf Deutsch sind und sonst auch alle Produkte im gleichen Deutsch sind, dann verstehe ich nicht, warum Sie etwas übersetzen wollen.

Ganz genau. Thema Fallback spielt keine Rolle mehr. Ich möchte nur, dass mir der Variable L=1 die gleichen Datensätze wie bei L=0 angezeigt werden. Doch leider passiert es nicht. Das ist alles. Dabei haben die Datensätze unter Sprache nicht deutsch, sondern »alle Sprachen« eingestellt. Sollte das klappen, würde ich bei L=1 price2 verwenden. Bitte sagen Sie mir, wie ich die Artikel bei L=1 einfach angezeigt bekomme.

Sollte es Abweichungen geben, würde ich wie schon sagen ein Duplikate und verschiedene Sysfolder anlegen. Das ist momentan aber nicht der Fall.

Besten Dank!
1-02-16 11:04:41 Übersetzung deaktivieren
Franz Holzinger
Ich habe vorhin bereits das Setup angegeben, womit man die Übersetzungstabellen deaktiveren kann.

conf.tt_products.ALL {
language.type = noTranslation
}

ebenso für tt_products_cat .

conf.tt_products_cat.ALL {
language.type = noTranslation
}
1-02-16 12:09:20 Danke!
André Sheydin
Es klappt! Ich habe das Template kopiert und gebe entsprechend Preis2 aus.

Jetzt entsteht aber leider ein neues Problem: Die Marker z.B. im Warenkorb ###PRICE_TOTAL_TAX### gibt es nicht für Price2, also sie werden in der Listenansicht nicht ausgegeben:

###PRICE2_TOTAL_TAX###
###PRICE2_TOTAL_NO_TAX###
###PRICE2_TOTAL_ONLY_TAX###

Das Wiki [1] bestätigt, dass die Marker nicht belegt sind. Sie wären aber notwendig, wenn man Price2 im Warenkorb einsetzt.

[1] https://wiki.typo3.org/Tt_products_marker
1-02-16 15:11:43 Marker für Price
Franz Holzinger
Der Preis2 muss aktiviert werden, dann werden alle Preismarker für den 2. Preis verwendet.

priceNoReseller = 2
6-02-16 12:54:58 div2007
Franz Holzinger
Es erstelle eine korrigierte div2007 1.6.2, um die PHP Warnung 'illegal string offset' wegzubekommen. Korrektur in getExtensionInfo_fh003 und getExtensionInfo.
9-02-16 15:20:09 Vielen Dank!
André Sheydin
Es hat funktioniert!
< BACK TO FORUM