Hallo zusammen,
es geht um folgendes Problem:
Während der Bestellung eines Kunden, in der er sich seinen Artikel individuell gestalten kann, soll ein Bild seines fertig konfigurierten Artikels der Bestellung hinzugefügt werden. Dies dem Artikel hinzuzufügen wäre in dem Fall Unsinn, weil ja jeder Kunde seinen Artikel komplett selber gestalten kann. Wie kann ich nun im Hintergrund der Bestellung das Bild der Bestellung hinzufügen und nicht dem Artikel, wo immer nur die Grundbilder oder Beispielbilder enthalten sein sollen? Meine Idee ist, dies über ein Freitextfeld zu regeln, aber welches Event oder welche Aktion könnte ich da nutzen? Es geht ja im Prinzip nur um das Hinzufügen eines einfachen Links.
Schau mal hier. Vielleichtist das was für Dich.
1 „Gefällt mir“
@megadruck schrieb:
Schau mal hier. Vielleichtist das was für Dich.
http://store.shopware.com/futi00330/warenkorb-upload-nachtraeglicher-upload.html
http://store.shopware.com/dreisc01105/detailseiten-und-warenkorb-upload.html
Vielen Dank für den Tipp, aber zum Einen ist eine solche Investition gerade nicht möglich und zum Anderen soll der beschriebene Vorgang ja automatisch im Hintergrund abgewickelt werden und nicht von mir oder dem Kunden vorgenommen werden müssen.
Nach weiterem Grübeln ist mir klar geworden, dass dieses Artikelbild ja erstmal der Tabelle s_order_basket_attributes hinzugefügt werden muss und dann, wenn wirklich vom Kunden der Bestellbutton geklickt wird muss es in die Tabelle s_order_attributes. Der zweite Schritt ist wahrscheinlich leichter, aber wie kann ich den ersten Schritt angehen? Die Bild-URL ist vorhanden und wird dem Warenkorb im Hintergrund mit übergeben. Nun muss diese URL nur noch in die DB rein, dabei dem richtigen Warenkorb zugeordnet werden und das Bild muss als Artikelbild im Warenkorb angezeigt werden darf aber nicht als Artikelbild dem entsprechenden Artikel zugeordnet werden. Mhmhm… jemand eine Idee?
Hallo,
zuerst werde ich auf dem erstem Schritt antworten.
ja du hast recht , zuerst soll es in s_order_basket_attributes hinzugefügen, dann in s_order_details_attributes (nicht s_order_attributes) hinzufügen.
als Orderartikel (Position) Attribute hinzufügen. 
also wie kann man dies machen.
einfach darfst du ein Hook für sAddArticle Funktion benutzen ( genau after hook).
get die Reutrn Wert ($insertId == basketID in s_order_basket_attributes Table), danach kannst du diese id beuntzen zu update s_order_basket_attributes Table und deine Bild URl hinzufügen.
du kannst diese Attribute in Warenkorb Template benutzen, und ich glaube , bruchst du nicht mehr zu tun , um diese Attribute in s_order_details_attributes zu hinzufügen.
weil das Code in sCreateTemporaryOrder fuktion Line 535 und in sSaveOrder Funktion Line 749 werde diese Attribute vom s_order_basket_attributes Table zu s_order_details_attributes Table kopieren.
probiere mal ob das funktioniert und gib mir bescheid.
VG,
Ahmad
1 „Gefällt mir“
@ahmadsaad schrieb:
Hallo,
zuerst werde ich auf dem erstem Schritt antworten.
ja du hast recht , zuerst soll es in s_order_basket_attributes hinzugefügen, dann in s_order_details_attributes (nicht s_order_attributes) hinzufügen.
als Orderartikel (Position) Attribute hinzufügen. 
also wie kann man dies machen.
einfach darfst du ein Hook für sAddArticle Funktion benutzen ( genau after hook).
get die Reutrn Wert ($insertId == basketID in s_order_basket_attributes Table), danach kannst du diese id beuntzen zu update s_order_basket_attributes Table und deine Bild URl hinzufügen.
du kannst diese Attribute in Warenkorb Template benutzen, und ich glaube , bruchst du nicht mehr zu tun , um diese Attribute in s_order_details_attributes zu hinzufügen.
weil das Code in sCreateTemporaryOrder fuktion Line 535 und in sSaveOrder Funktion Line 749 werde diese Attribute vom s_order_basket_attributes Table zu s_order_details_attributes Table kopieren.
probiere mal ob das funktioniert und gib mir bescheid.
VG,
Ahmad
Hallo Ahmad,
vielen Dank für die ausführliche Antwort!
Ich werde mich morgen um die Umsetzung kümmern. Da ich noch totaler Anfänger bin kann das wohl dauern, aber nur so lernt man ja…
@HolleWolle schrieb:
Nach weiterem Grübeln ist mir klar geworden, dass dieses Artikelbild ja erstmal der Tabelle s_order_basket_attributes hinzugefügt werden muss und dann, wenn wirklich vom Kunden der Bestellbutton geklickt wird muss es in die Tabelle s_order_attributes. Der zweite Schritt ist wahrscheinlich leichter, aber wie kann ich den ersten Schritt angehen? Die Bild-URL ist vorhanden und wird dem Warenkorb im Hintergrund mit übergeben. Nun muss diese URL nur noch in die DB rein, dabei dem richtigen Warenkorb zugeordnet werden und das Bild muss als Artikelbild im Warenkorb angezeigt werden darf aber nicht als Artikelbild dem entsprechenden Artikel zugeordnet werden. Mhmhm… jemand eine Idee?
Hallo,
es gibt im Shopware Store auch einige Plugins, die zusätzliche Felder für die Bestellpositionen bereitstellen - eines davon könntest du ja eventuell dafür nutzen, die Bild-URL in einem der Felder zu speichern (du kannst ja das zusätzliche Feld auch einfach „verstecken“, sodass es nicht sichtbar für den Kunden ist).
Auf jeden Fall ist der Punkt der Übertragung der Werte von s_order_basket_attributes zu s_order_details_attributes nicht sehr einfach, außer du nutzt die Felder von Shopware dazu (das siehst du ja im erwähnten Code von Ahmad, wo nur attribute1 - 6 aus meiner Sicht automatisch übertragen werden) - zumindestens war das unterhalb von Shopware 5.2 auf jeden Fall so.
Wahrscheinlich würdest du also am kostengünstigsten kommen, eines der Plugins zu verwenden - vorallem auch was (zukünftige) Updates betrifft.
Beste Grüße
Sebastian
1 „Gefällt mir“
Hallo Sebastian,
mhm, klingt alles nicht ganz so einfach vor allem wenn man gerade erst mit Shopware angefangen hat. :-o
Was wären das denn z.b. für plugins, die Du da erwähnst?
Gruß
Olli
@HolleWolle schrieb:
Hallo Sebastian,
mhm, klingt alles nicht ganz so einfach vor allem wenn man gerade erst mit Shopware angefangen hat. :-o
Was wären das denn z.b. für plugins, die Du da erwähnst?
Gruß
Olli
Hallo,
es kommt eben auch darauf an, welche Shopware Version bei dir im Einsatz ist. Der Code von Ahmad bezieht sich ja nur auf die aktuellste Shopware Version (> 5.2). Für die Pluginentwicklung würde ich dir auch das Handbuch von Shopware empfehlen: https://www.rheinwerk-verlag.de/shopware\_4185/ . Also das Plugin am besten gleich mit dem neuen Pluginsystem von Shopware entwickeln.
Es gibt auf jeden Fall einfachere Themen, mit der Pluginentwicklung anzufangen, als dieses Thema :D.
Die Plugins, die ich meine, wären: Suchergebnis für Bestellposition | Shopware Store . Unverschlüsselte Plugins haben auch immer den Anreiz, dass du da zur Not auch selbst Hand anlegen kannst, wenn du eine weitere, individuelle Anpassung benötigst (so wie bei allen Shopware Plugins, die in den neusten Versionen ja auch unverschlüsselt ausgeliefert werden).
Beste Grüße
Sebastian
1 „Gefällt mir“
Hallo Sebastian,
also, ich habe Shopware 5.2.16 am laufen…
Ich muss mir das morgen alles mal in Ruhe zu Gemüte führen. Da ist seit ich angefangen habe noch ziemlich viel Bahnhof dabei. Durch den Aufbau von Shopware tiefenwirksam durchzublicken finde ich echt nicht einfach und das was ich bisher selbst an einfachsten php und JS Sachen verwendet habe zu integrieren dauerte in eigenen Projekten 5 Minuten und hier dann teilweise einen ganzen Tag. :-o
smarty, Ajax, eigene Plugins entwickeln usw… habe ich vorher noch nie gemacht.
Beste Grüße
Olli
@HolleWolle schrieb:
Hallo Sebastian,
also, ich habe Shopware 5.2.16 am laufen…
Ich muss mir das morgen alles mal in Ruhe zu Gemüte führen. Da ist seit ich angefangen habe noch ziemlich viel Bahnhof dabei. Durch den Aufbau von Shopware tiefenwirksam durchzublicken finde ich echt nicht einfach und das was ich bisher selbst an einfachsten php und JS Sachen verwendet habe zu integrieren dauerte in eigenen Projekten 5 Minuten und hier dann teilweise einen ganzen Tag. :-o
smarty, Ajax, eigene Plugins entwickeln usw… habe ich vorher noch nie gemacht.
Beste Grüße
Olli
Hallo,
dann würde ich dir wirklich als erstes das Shopware - Handbuch empfehlen, dann wird dir alles viel klarer werden. Dort wird ja auch das Plugin entwickeln im Detail beschrieben anhand von Beispielen.
Bei Plugins musst du eben auch immer aufpassen, dass Sie sich nicht gegenseitig überlagern oder anderen (Fremdanbieter-)Plugins in die Quere kommen. Ebenso sollte man auch nie JavaScript, JQuery etc. inline (also innerhalb von Shopware Blöcken) einbinden, da es Performance kostet. Gibt da vieles zu beachten.
Beste Grüße
Sebastian
1 „Gefällt mir“
@HolleWolle schrieb:
Hallo zusammen,
ich habe mich zwar fast schon daran gewöhnt, in der Regel keine Antworten zu erhalten… aber die Hoffnung stirbt ja bekanntlich zuletzt. 
das ist ja mal ein guter Anfang. Macht ja auch Lust darauf zu antworten. Ansonsten bei solchen Sonderwünschen kann ich Dir die Rubrik Job Postings empfehlen. Dort findet sich evtl. ein Entwickler der bereit ist etwas zu entwickeln - eine Antwort ist wahrscheinlicher.
@NextMike schrieb:
@HolleWolle schrieb:
Hallo zusammen,
ich habe mich zwar fast schon daran gewöhnt, in der Regel keine Antworten zu erhalten… aber die Hoffnung stirbt ja bekanntlich zuletzt. 
das ist ja mal ein guter Anfang. Macht ja auch Lust darauf zu antworten. Ansonsten bei solchen Sonderwünschen kann ich Dir die Rubrik Job Postings empfehlen. Dort findet sich evtl. ein Entwickler der bereit ist etwas zu entwickeln - eine Antwort ist wahrscheinlicher.
Ja, stimmt, da hast Du Recht, sorry war sch… die Einleitung, weil sie missverständlich rüberkam. Ich bezog das nämlich eher selbstironisch auf mich, weil ich davon ausging, dass das Problem keines von sich aus ist sondern eigentlich einfach zu lösen ist aber lediglich an meiner Unwissenheit scheitert.
Entwickeln würde ich eben schon gerne selber dann verstehe ich es auch. Ich will auch keine fertigen Lösungen eher Anhaltspunkte, Einstiegspunkte…
Ich habe jetzt aber auch eine Schulung gebucht und mir das empfohlene Handbuch bestellt.
Wie gesagt tut mir leid wenn das so unfreundlich rüberkam.
Ich habe nun die Funktion sAddArticle ( sAddArticle Funktion , Zeilen 1548 bis 1684) als function.sAddArticle.php in meinem _private/smarty/ Ordner abgelegt und versuche nun die ganze Zeit, sie im template einzubinden, aber bekomme es einfach nicht hin.
Im Moment rufe ich die Warenkorbseite ja noch per Hand auf und gebe ihr den Link, der später per callback kommt, über die URL mit. Ich simuliere dann den späteren Ablauf, indem ich auf die Detailansicht eines Artikels gehe. Von dort aus rufe ich dann den Warenkorb mit der Variable dieid=SW10002 in der URL auf. Dann versuche ich in dem Block, der aufgerufen wird, wenn der Warenkorb leer ist und das ist er ja noch wenn ich den Warenkorb aufrufe, habe ich dann folgende Zeile implementiert:
{* Empty basket *}
{block name='frontend_basket_basket_is_empty'}
{if isset($smarty.get.dieid)}
{sAddArticle(($smarty.get.dieid),1)}
{/if}
{include file="frontend/_includes/messages.tpl" type="warning" content="{s name='CartInfoEmpty'}{/s}"}
{/block}
Was ist daran falsch? Es ist doch in der neusten Shopwareversion so, dass man seine eigenen Plugins nur im Ordner smarty ablegen muss und sie dann Shopware bekannt sind oder habe ich das falsch verstanden und muss doch noch was mit der bootstrap machen?
@HolleWolle schrieb:
Ich habe nun die Funktion sAddArticle ( sAddArticle Funktion , Zeilen 1548 bis 1684) als function.sAddArticle.php in meinem _private/smarty/ Ordner abgelegt und versuche nun die ganze Zeit, sie im template einzubinden, aber bekomme es einfach nicht hin.
Im Moment rufe ich die Warenkorbseite ja noch per Hand auf und gebe ihr den Link, der später per callback kommt, über die URL mit. Ich simuliere dann den späteren Ablauf, indem ich auf die Detailansicht eines Artikels gehe. Von dort aus rufe ich dann den Warenkorb mit der Variable dieid=SW10002 in der URL auf. Dann versuche ich in dem Block, der aufgerufen wird, wenn der Warenkorb leer ist und das ist er ja noch wenn ich den Warenkorb aufrufe, habe ich dann folgende Zeile implementiert:
{* Empty basket *}
{block name=‚frontend_basket_basket_is_empty‘}
{if isset($smarty.get.dieid)}
{sAddArticle(($smarty.get.dieid),1)}
{/if}
{include file=„frontend/_includes/messages.tpl“ type=„warning“ content=„{s name=‚CartInfoEmpty‘}{/s}“}
{/block}
Was ist daran falsch? Es ist doch in der neusten Shopwareversion so, dass man seine eigenen Plugins nur im Ordner smarty ablegen muss und sie dann Shopware bekannt sind oder habe ich das falsch verstanden und muss doch noch was mit der bootstrap machen?
Hallo,
also, wenn du das umsetzen möchtest, was Ahmed geschrieben hat, kommst du mit einem Smarty - Plugin nicht weit, da du ja in der Smarty-Funktion keinen Zugriff auf die Methoden, die Datenbank, etc erhälst. Und wenn du die Funktion sAddArticle in dem Smarty-Plugin ablegst, wird das auch keinerlei Effekt haben.
Du musst hier also ein richtiges Plugin mit Events etc. schreiben. Du verwechselt glaube ich etwas, Plugins <> Smarty Plugins (Smarty-Plugins gibt es eigentlich nur in den wenigstens Fällen, wo vielleicht eine kleine Berechnung erfolgen soll, da Sie eben keinerlei Datenbankzugriff etc erlauben).
Beste Grüße
Sebastian
Hallo Sebastian,
okay, dann muss ich es erstmal einfacher halten.
Die Artikelnummer habe ich ja und wenn ich diesen Link nach dem Callback benutze wird automatisch der richtige Artikel in den Warenkorb verfrachtet:
window.top.location=“http://www.xxx.com/checkout/addArticle/sAdd/”+dieid;
Klappt schonmal, jetzt fehlt nur noch das richtige Bild von dem jetzt durch den Kunden individuell angepassten Artikel im Warenkorb. Hier würde doch ein Überschreiben des bisherigen Bildlinks reichen. Das Überschreiben würde ja im Warenkorb passieren und dann an die Bestellung weitergegeben werden. Was ich bei dem Link aber nicht wirklich verstehe ist die Frage, welche Funktion wird hier eigentlich genau aufgerufen?
Beste Grüße
Olli
Guten Morgen zusammen,
ich arbeite nun daran, ein Plugin an das Event zu hängen sobald der Warenkorb aufgerufen wird, Nur wie finde ich raus wie dieses Event heißt?
Tritt dieses Event ein frage ich im Plugin nach ob zwei bestimmte Variablen (ArtikelID und thumburl) vorhanden sind. Wenn ja muss der Artikel der hinter der ArtikelID steckt in den Warenkorb gelegt werden und das Bild darin durch das aus der thumburl ersetzt werden. Wenn die beiden Variablen nicht vorhanden sind passiert nichts.
Lade ich in meinem Shop den Warenkorb und kontrolliere die dann aufgetretenen events ist das einzige event das ich finde in dem checkout und cart vorkommen dieses hier:
Enlight_Controller_Action_Frontend_Checkout_Cart
Könnte ich mich da mit einem Plugin dranhängen?
Beste Grüße
Olli
Hallo,
du hast _PostDispatchSecure_ vergissen.
schau mal diese linke Plugin quick Startup Guide
VG
Ahmad
1 „Gefällt mir“
Mhm, also, ich habe nun mal für reine Testzwecke dieses Plugin geschrieben:
'startrampe'
];
}
public function startrampe (\Enlight_Controller_EventArgs $args)
{
if(isset($_GET["thumburl"]))
{
?>
<!--
function getUrlVars()
{
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value)
{
vars[key] = value;
});
return vars;
}
var dieid = getUrlVars()["thumburl"];
window.top.location="http://www.xxx.com/checkout/addArticle/sAdd/"+dieid;
//-->
Abgelegt in custom/plugins/OziArtikelInWarenkorb/, im Backend installiert, läuft, allerdings erst richtig nachdem ich das Event von Enlight_Controller_Action_PostDispatchSecure_Frontend_Checkout (damit geriet ich in eine Endlosschleife) in Enlight_Controller_Action_Frontend_Checkout_Cart geändert habe. So, nun mal weitersehen…
Beste Grüße
Olli
@HolleWolle schrieb:
Mhm, also, ich habe nun mal für reine Testzwecke dieses Plugin geschrieben:
‚startrampe‘
];
}
public function startrampe (\Enlight_Controller_EventArgs $args)
{
if(isset($_GET[„thumburl“]))
{
?>
Abgelegt in custom/plugins/OziArtikelInWarenkorb/, im Backend installiert, läuft, allerdings erst richtig nachdem ich das Event von Enlight_Controller_Action_PostDispatchSecure_Frontend_Checkout (damit geriet ich in eine Endlosschleife) in Enlight_Controller_Action_Frontend_Checkout_Cart geändert habe. So, nun mal weitersehen…
Beste Grüße
Olli
Hallo,
auch wenn du jetzt das Event nutzt - dein HTML- und JavaScript - Code gehört in eine Template - Datei und nirgendswo anders hin. Das ist also komplett falsch, wie du es jetzt machst und wird so nie (richtig) funktionieren. Ebenso wird $_GET nicht funktionieren, wenn du das Plugin einmal über den Shopware Store vertreiben möchtest (wenn man jetzt einmal die Sicherheitsrisiken ausblendet). Nimm dir doch einfach einmal die Shopware - Dokumentationen zur Hand und arbeite die durch: https://developers.shopware.com/developers-guide/plugin-system/ . Alles andere wird doch nie etwas brauchbares werden.
Beste Grüße
Sebastian