Franz Holzinger

autor  
6-04-18 12:06:28 verwendung verschiedener Templates bei tt_products zur Verwendung als MArketplace
David Gschweng
Hallo,

da ich seit 2 Jahren nun an einer Möglichkeit arbeite/ Entwickle tt_products mittels APIs an Android und iOs App anzubinden was nun auch sehr final inzwischen ist, ich bereits schon eine Schnittstelle habe zur FrontendAnsicht von quasi verschiedenen Endpoints (eigene ShopOwner) welche nur den Eingang von Bestellungen IHRER Produkte sehen welche auch nur den einzelnen ShopOwner betreffen (ebenso diese dadaurch die Mögloichkeit haben Orders auch zu Stornieren oder auf FINAL zu setzen), versuche ich nun schon mittels Conditions im TS (funktioniert bedingt) unterschiedliche Templates zu benutzen welche de facto jeweils ein eigenes bzw. mit eigener ClientID (i.d.f. Payment Gateway) zur Verfügung stellen, ich hierzu aber eben auch die Möglichkeit brauche, eben durch diese Separierung der Templates auch Rechungen (durch das Template) im jeweiligen Namen der einzelnen SHOPOWNER zu versenden. ALSO ich agiere mit tt_products quais als MARKETPLACE - funktioniert quasi scho n recht gut - durch umfangreich ineinander verschachtelte Gruppenrichtlinien.

BSP:

KUNDE A ---- -- ----- SHOP(OWNER) AA ==^Sieht nur Eingang Orders Produkte AA
| TT_products SHOP (Marketplace) |
KUNDE B ----- Produkte SHOP AA, BB, CC, EE, NN, --- SHOP(OWNER) BB ==^Sieht nur Eingang Orders Produkte BB


==> Hierzu sollte auch jeweils ein eigenes PaymentGateway gelten zu SHOP AA und SHOP BB ebenso Rechnungen im Namen derer.


Wie oben bereits erwähnt - funktioniert dies bedingt mit Conditions in dem ein extra Template Setup (nur auf CART) mit Conditions ( auf SWORD im URL String [bspw. HUND oder KATZE) -- den im MArketplace gibt es BEDINGT nur die EINGABE von HUND oder KATZ oder VOGEL etc. anders wie Bengal, Terrierer oder Spatz ist nicht zulässig und wird auch nicht benötigt).

CONDITION im TS des CARTS :

plugin.tt_products.templateFile >
[globalVar = GP:tt_products|sword = HUND] [globalVar = GP:tt_products|sword = hund ] [globalVar = GP:tt_products|sword = Hund ]
plugin.tt_products.templateFile = fileadmin/template/tt_products/HUND.html

[globalVar = GP:tt_products|sword = KATZE] [globalVar = GP:tt_products|sword = katze] [globalVar = GP:tt_products|sword = Katze]
plugin.tt_products.templateFile = fileadmin/template/tt_products/HUND.html

[global]

Constants in root:

plugin.tt_products.file.templateFile >

plugin.tt_products.file.templateFile = fileadmin/template/tt_products/STANDARD.html ==> quasi ohne conditions, da sonst die SUCHE nicht mehr angesprochen werden würde.

DIES mit oben genanntem SWORD funktioniert bis BASKET_INFO -- also ich komme nicht bis FINALIZE- es bricht de facto ab - warum auch immer, (template not found) ich denke mal dass das SWORD im URLS String gecleared wird ... bin mir aber nciht sicher.

KAnn mir da jemand vielleicht einen Lösungsansatz geben ?

Der Marketplace soll DE- weit mit rund (400 SHOPOWNERN) sein ... das Ziel ist aber EU weit !
6-04-18 12:09:47 verwendung verschiedener Templates bei tt_products zur Verwendung als MArketplace
David Gschweng
ebenso sollte später möglich sein dies noch in mehreren Sprachen auszugeben !
6-04-18 18:26:45 Shops und Kunden
Franz Holzinger
Wie weiß ein Kunde, welche Shops er sehen darf?
Ist das über Frontend Benutzergruppen geregelt?

Die Shops müssen doch irgendwie getrennt worden sein. Denn jeder Shop hat eine eigene Email Adresse. Womit ist das gemacht worden?
7-04-18 09:35:46 Shops und Kunden - mehrere Templates !
David Gschweng
Grüß Gott Franz,

das KOnzept ist folgendes:

Der Customer meldet sich an und wählt eine vordefinierte Gruppe (Preise davon abhängig) - diese Gruppe kann er jederzeit ändern, sofern sich sein Status ändert - hierzu kann er per sr_feuser_register auch bzw. Dokumene hochladen zur validierung (das klappt lles schon soweit - dass der ShopOwner diese Dokumente nach BEstelleingang dann gegenprüfen und zu jedem Preis dann auch liefern kann.)
Hierzu hat jeder SHOP X Produkte die dem Preis nach an die Gruppen geknüpft sind.

Dann habe ich Categories die quasi die einzelnen SHOPS darstellen - diese haben Produkte, eigentlich nur eines vorerst, welches aber zur Anzahl der verfügaren Gruppen dupliziert ist und jeweils einen anderen Preis hat und die die entsprechende Gruppenzugehörigkeit aufweist. IN meinem Fall sind es mal 60 Gruppen , ergo hat der SHOP mal 60 gleiche Produkte mit aber unterschiedlichen Preisen, da unterschiedliche Gruppen- die jeweils auch der Categorie zugewiesen sind.

JEder ShopOwner ist quasi auch ein FE-USer, demnach hat er ne Mail Adresse hinterlegt. DIESER Fe-USer lässt sich ja auch jeweils den 60 Produkten zuweisen und somit erhalte ich die eMail-Funktionalität dadurch.

Da ich ja nun auch ein FE_extension entwicklen hab lassen- lässt sich mittels den Tabellen sys_products_orders und fe_users ganz genau nur die bestellten Produkte des jeweligen SHops dem ShopOwner anzeigen und er kann weitere Dinge damit noch tun wie BEstellungen storniern, wiederbeleben, oder auf Finish setzen - ebenso hat er damit die Möglichkeit die vom Customer hochgeladenen Dokumente validieren.


Gruß

David
7-04-18 09:49:53 Shops und Kunden - mehrere Templates !
David Gschweng
Am TT-Products CODE selber wurde nichts verändert - gegenwärtig fahre ich mit tt-products 2.8.13 und Typo3 7.6.15 - soll aber gen Produktive Stage dann auf Typo3 8 angehoben werden - ebenso wünsche ich mir dann die neuste TT-Products von Dir - wozu ich hoffe dass nachher alles noch so funktioniert wie in Version 2.8.13. Wie gesagt, an der Extension selber wurde ncihts customized ... es wurden die gegebenen Funktionen benutzt !
7-04-18 12:48:19 Benutzergruppe
Franz Holzinger
Wenn die Benutzergruppe bestimmt, welchen von 60 verschiedenen Shops jemand sieht, dann kann man die Setup Einstellungen über diese TypoScript Condition steuern.
Über das Setup:

[usergroup = 1]
plugin.tt_products.templateFile = fileadmin/template/tt_products/HUND.html
[usergroup = 2]
plugin.tt_products.templateFile = fileadmin/template/tt_products/KATZE.html

[global]

Alternativ genauso über Constants, aber mit "file.templateFile".

Für diese Anforderung mit 60 gruppenspezifischen Preise für ein Produkt wäre es wohl sinnvoller, tt_products zu erweitern, z.B. so, dass jedem Produkt Datensätze aus einer eigenen Preis-Tabelle zugeordnet werden.
7-04-18 13:36:34 Benutzergruppe
David Gschweng
nein, es geht um Gewichtsklassen als Gruppen. Diese sind nahezu gleich, sollten sie das von SHOP zu shop nciht sein, dann muss Gruppenechnisch erweitert werden mit ParentGroups welche dann ggf. zwischen Stufen der Gewichtsklassen implizieren. Die Shopauswahl ist eindeutig durch Suche von Namen des SHOPS diese sind klar definiert und druch den Customer direkt druch eingabe des Namens des SHOPs welcher auch das eigenltich Produkt i.d.F. darstellt vorgegeben also ==> PRODUKTNAME =^Categorie =^ SHOPNAME - jeder der SHOPs hat Gewichtsklassen zur Bestimmung von Gebühren i.d.F.

Wenn, .. dann - muss ich gucken ob das so geht, ich quasi an den Produkten zusätzlich noch eine jeweilig LocationOwner Gruppe hinzufüge . das wäre ein Lösungsansatz.



Gruppen gibt es:

member
GEwicht 1 --> enthält auch Member 0=> denn nur registrierte User sollen überhaupt was sehen können dürfen !
Gewicht 2 --> enthält auch Member 0=> denn nur registrierte User sollen überhaupt was sehen können dürfen !
Gewicht 3 --> enthält auch Member 0=> denn nur registrierte User sollen überhaupt was sehen können dürfen !


Produkte:

HUND_A --> enthält Gruppe Gewicht 1
HUND_B --> enthält Gruppe Gewicht 2
HUND_C --> enthält Gruppe Gewicht 3

KATZE_A --> enthält Gruppe Gewicht 1
KATZE_B --> enthält Gruppe Gewicht 2

Der redirect sage ich jetzt mal zum ricchtigen Endpunkt geht bis dato nur druch EINGABE von HUND oder KATZE .. dies muss auch so beibehalten werden - anderes macht i.d.F. auch keinen Sinn bzw. würde zu nichts weiterem Beitragen.

Customer registriert sich / Confirmation und hat "member" als primäre Gruppe -- sekundär muss muss er dann noch "Gewicht" als Gruppe in MyAccount wählen um überhaupt was bei eindeutiger Eingabe des SHOPIdentifiers in der Suche zu sehen was er dann wählen kann. Durch den eindeutigen ShopIdentifier bekommt er quasi schon den richtigen SHOPEndpoint.

Wie ich nun oben schon versucht habe anzuführen- wäre mal zu probieren, wenn ich nun dem PRODUKT noch zusätzlich die Gruppe LocationOwner_XXX (HUND oder KATZE) zuweise - OB DANN Ihr / Dein o.g. Vorschlag der Conditions hinsichtlich Gruppen so funktioniert.

Was die Auswahl unterschliedlicher Bezahlarten und damit Ausschluss weiterer Paymentoptionen berifft, so funktioniert dies bereits bspw. SEPA, d.h. der Customer soll demnach KEIN Paypal oder "auf Rechnung" mehr angezeigt bekommen.

Siehe da:

[usergroup = 12]

plugin.tt_products {
payment>
payment {
radio = 1
TAXpercentage = 19
10.title = direct debit SEPA
40.title = Paypal Gateway + 0.50 €
}
}

[else]
plugin.tt_products {
payment>
payment {
radio = 1
40.title = Payment via PayPal only + 0,50 € fee - You can give us SEPA**-Access (** +0,00 € ) for direct debit money transfer each month - Download SEPA-Formular in MyAccount-Section fill out and send back to us via mail !
30.title = You will get an invoice from us + 1,00 € fee - You can give us SEPA**-Access (** +0,00 € ) for direct debit money transfer each month - Download SEPA-Formular in MyAccount-Section fill out and send back to us via mail !
}
}
}
[global]


OB sich das nun wie oben erwähnt auch mit Templates so hantieren lässt - das ne Gte Frage !
7-04-18 13:40:00 Benutzergruppe
David Gschweng
Das obige:

40.title = Paypal Gateway + 0.50 €

ist überflüssig -- ist normal auskommentiert - das habe ich jetzt eben ein # zuviel weggemacht, ... nur zur Info .. nciht dass ich nun meiner Aussage widerspreche
7-04-18 13:45:34 Benutzergruppe
David Gschweng
Nein -- ich glaube nciht dass das so gehen würde mit LOactionOWner als extra Gruppe zum Produkt, dann dann muss bei den Gewichtklassen das LOcationOWner quasi wieder als Childobjekt mit dabei sein. Anderer Anscatz wäre ParentLocationGroup mit Child als LOcationOwner_KATZ und LOCATIONOWNER_Hund -- und dieses PARENT dann als CHILD jeder Gewichtsgruppe zuzuweisen. !! DANN aber zieht die Condition nciht mehr da es dann wieder GLOBAL gelten würde ... also doch etwas schwierig.

Im Idealfall liese sich jedem Product bzw. Categorie ein TEMPLATE zuweisen - dann wäre diese Problematik ausgehebelt.

Ohh Herr Gott -- doch etwas komplizierter alles
7-04-18 14:12:11 userFunc
Franz Holzinger
In einem so komplizierten Fall, den ich wohl nicht verstehe, denn ich dachte, dass die Gruppe des Frontend Benutzers den Shop bestimmt, kann man aber auf eine selbstdefinierte Funktion als TypoScript Condition zurückgreifen:

[userFunc = user_function(argument1, argument2, ...)]

Beispiel:

[userfunc = shopAuswahl() = HUND]
plugin.tt_products.templateFile = fileadmin/template/tt_products/HUND.html
[userfunc = shopAuswahl() = KATZE]
plugin.tt_products.templateFile = fileadmin/template/tt_products/KATZE.html

[global]

Eine Erweiterung dieser Funktionalität gibt es über die Extension patch10011 .
Hiermit kann auf PHP Seite dann alles Mögliche programmiert werden, um aufgrund des zurückgelieferten Ergebnisses das gewünschte templateFile und Anderes zu setzen.
7-04-18 14:16:03 userFunc
David Gschweng
Danke ! .. muss / werde ich probieren !
7-04-18 14:55:41 userFunc
David Gschweng
Habe nun im CART die oben genannte userFunc als TS eingefügt - auch das Standard im Obkjectbrowser EXT:tt_products/template/example_locallang_xml.html rausgenommen.

nun kommt

Die Shop-Template Datei wurde nicht gefunden. Überprüfen Sie im Template Setup: | plugin.tt_products.templateFile

natürlich habe ich auch den Patch installiert !
7-04-18 16:22:40 Condition trifft nicht zu
Franz Holzinger
Das bedeutet, dass die userFunc die Bedingung (Condition) nicht erfüllt hat. Da muss die userFunc korrigiert werden.
< BACK TO FORUM