Neu Eigenes Formular mit JS Inhalten

Skuriles

Aktives Mitglied
5. Februar 2017
16
1
Hallo zusammen,

ich habe eine grundsätzliche Frage zum Thema eigene Seiten:

Man kann ja kein PHP verwenden in den eigene Seiten html templates.
Ich habe dort ein Formular eingebaut, das über die Googe Maps Javascript API die Distanz zwischen zwei Orten abfragt (Heimort des Kunden und des Shops) und daraus einen Preis berechnet. Wenn der Kunde das OK findet kann er das Formular abschicken...
Das mit der Google API funktioniert soweit. Das Formular ist von Hand geschrieben, also kein vorgefertigtes Formular.

Jetzt wollte ich natürlich gerne den PHP Mailer verwenden um das Formular abzuschicken, aber das geht ja leider nicht, da PHP nicht erlaubt ist.

Wie wäre denn hier der beste Ansatz? Ein Formular über das admin backend erstellen -> aber dann fehlt mir die Google API dazwischen. Wenn ich eine eigene Seite erstelle -> externer Link auf eine PHP Seite erscheint mir nicht wirklich sinnvoll, da ich ja nicht den Shop "duplizieren" möchte an der Stelle, sondern das Formular soll ja schon ein Include sein...
Oder ginge das irgendwie über smarty direkt im Template?

Hab den Shop nicht lange und bin gerade ein wenig am testen und einlesen.
 

Skuriles

Aktives Mitglied
5. Februar 2017
16
1
Hallo,

ich habe jetzt mal ein Plugin erstellt. JS Einbindung und Template hat so weit geklappt.
Ich kämpfe jetzt allerdings mit der submit action der Form.

Ich kann zwar dort einfach ein action="sendMail.php" setzen, aber das Problem ist, dass er dann ja das File relativ zum root sucht.
sprich: www.shop.de/sendMail.php nicht gefunden...Aber ich möchte ja, dass er die sendMail.php aus dem plugin/version/100/frontend Ordner nimmt, bzw. immer relativ zum aktuellen Template, sonst muss ich es ja für jede Version anpassen??

->nächste Idee per Smarty: action="{include file='../sendMail.php'}"

-> Access denied

Meine info.xml
<Link>
<Filename>start.php</Filename>
<Name>EinbauService</Name>
<Template>einbauService.tpl</Template>
<Link>

Ich habe auch versucht das irgendwie in der start.php mit $smarty->assign hinzubekommen, aber das hilft alles nichts.

Wie kann ich die Post Funktion nutzen mit einem eigenen PHP File?
Oder muss ich die Variablen per value an die start.php übergeben und dort dann eine sendMail Function aufrufen?
also irgendwie sowas:

action="{sendMail()'}"

<input name="vorname" value="$vorname"/>

und in der start.php dann

function sendMail() {
echo $vorname
}

wäre dankbar für einen Tip.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.957
Berlin
Das wuerdest du dann am besten über die io.php abwickeln denke ich "HOOK_IO_HANDLE_REQUEST"
theoretisch könntest du auch diese Daten dann über den HOOK "HOOK_SMARTY_OUTPUTFILTER" abwickeln, aber der io HOOK wäre bestimmt besser geeignet und dann sendest du die Daten beispielsweise per Ajax.

Diese Seite kennst du ?
http://docs.jtl-shop.de/de/latest/shop_plugins/hook_list.html

und bitte lass das mit den includes :)

der JTL Shop hat eine Funktion zum senden von Mails und kann auch auf von dir eingefügte Mailvorlagen reagieren.
http://docs.jtl-shop.de/de/latest/shop_plugins/aufbau.html#e-mail-templates
 

Skuriles

Aktives Mitglied
5. Februar 2017
16
1
Ok, ich hatte schon so ne Idee mit den Hooks, hab aber bei der Vielzahl der Hooks nicht das richtige gefunden :).
D.h. nur nochmal zum Verständnis.
Ich hänge meine sendMail.php als Hook mit der ID 213 ein. Dann sollte das mit action="sendMail.php" funktionieren oder?
In der sendMail kann ich dann soweit ne Validierung etc. machen.

Das mit Email Templates hatte ich auch schon gesehen, da lege ich mal eins an.

Die Shop Email Funktion ist das hier?:

Die Methode um EMails über ein Plugin zu senden heisst: sendeMail() und erwartet zwei Parameter. Der erste ist die eindeutige ID deiner Mailvorlage, der zweite ist das Object mit Empfängerdaten, Absenderdaten und allem weiteren was du in deiner Mail verwenden möchtest.

(von da: https://forum.jtl-software.de/threads/email-template-verwenden.37473/

d.h. ist die ist global verfügbar?

Danke dir, ich denke aber mit den Infos komme ich weiter.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.957
Berlin
suche mal im Shop nach der Funktion sendeMail() mit der kannst du die Daten senden udn dann wird auch dein angegebenes emailTemplate geparsed.

das hier ist ein Auszug aus einem meiner Plugins, das kannst du so nicht nehmen aber da siehst du den Vorgang ungefähr:
Ich bin bei mir nach einer Post abfrage über das HOOK_GLOBALINCLUDE_INC gegangen, das hatte aber dann auch einen Grund.
Du musst auch vorsichtshaber mailtools.php includen

Langsam nervt es dann doch das man keine codes posten kann :( daher hier nur als Bild


upload_2017-2-8_7-29-15.png
 

Skuriles

Aktives Mitglied
5. Februar 2017
16
1
Hey,

also sorry wenn ich nochmal nachfrage:
Das mit dem HOOK funktioniert nicht richtig, bzw. ich bekomme es nicht hin:


<Hooks>
<Hook id="140">includes.php</Hook>
<Hook id="213">sendMail.php</Hook>
</Hooks>

Die Form lasse ich leer, da über den HOOK ja eigentlich die sendMail.php aufgerufen werden müsste oder?

<form action="" class="form" name="einbauservice" method="post">
<fieldset>


sendMail.php
if(isset($_POST['vorname'])){
echo $_POST['vorname'];
}

Aber irgendwie komme ich da nicht vorbei??

Muss ich da noch was in der start.php einbauen?

Am liebsten wäre es mir ja wenn ich in der info.xml einfach eine php file definieren könnte (in dem Fall sendMail.php) auf das ich Zugriffsrechte habe, dann würde
$smarty->assign('path', $oPlugin->cFrontendPfad); das hier funktionieren^^

Wie würde die Geschichte mit den AJAX Call aussehen? Oder soll ich per JS den AJAX call machen, aber auf welchen URL?
Vielleicht denke ich gerade auch einfach nur zu kompliziert....
Danke nochmals und sorry, aber die Docs zu den Plugins sind echt ein wenig spärlich in dem Bereich
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.957
Berlin
Puhhhhhhhhh, du bewegst dich da grade augenscheinlich voll in die falsche Richtung.
wenn du ein Formular baust, das innerhalb einer bestimmten Seite sein soll (z.b. Artikelseite) , kannst du das mit dem 140er HOOK machen und die POST daten dann über Ajax mit dem 213er HOOK schön verarbeiten.

wenn du das Formular auf einer eigenständigen Seite haben möchtest, die aber trotzdem drumrum noch alles von deinem shop hat, dann nimmst du die Möglichkeit der frontend Links
http://docs.jtl-shop.de/de/latest/shop_plugins/aufbau.html#frontend-links

Es geht ja im wesentlichem darum, das du die komplette core unterstützung hast wenn du das so machst und nicht mit fremdtools versuchst emails zu versenden.
nimmst du die frontendlink möglichkeit könntest du da direkt auch deine POST Daten abfragen oder du schickst die auch über den 213er, je nachdem was dein Formular nachher wie auch immer machen soll.
 

Skuriles

Aktives Mitglied
5. Februar 2017
16
1
Ich benutze schon den Frontendlinks... und zusätzlich den 140er HOOK damit ich die externen JS files anziehen kann per PHPquery.
Das Template wird auch sauber innerhalb des Shops angezeigt nur das absenden des Formulars klappt halt nicht so wie ich das gern hätte

Die Frage(n) ist für mich eigentlich nur:

1. was trage ich in die <form action="" > ein...
2. die start.php bleibt ja eigentlich leer?!
3. Die Daten sollten ja an ein php file gehen.. aber wie bekomme ich die Form dazu, die sendMail.php zu nutzen? Wenn ich sie direkt adressiere ist es verboten. Der 213 Hook scheint nicht zu kommen wenn ich die action="" leer lasse....
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.957
Berlin
das js kannst du eigentlich über die xml bereitstellen.
in das action kommt gar nichts oder deine eigene url, wenn da gar nichts drin steht, dann nimmt es die url die gerade aktiv ist.

ich habe doch oben gepostet was du machen musst.
ich habe das mit den frontendlinks noch nie gemacht, daher habe ich eben mal probiert wie sich das verhält udn wie das eingebunden wird.

Du hast eine tpl Datei, in der kannst du deinen output festlegen.
die Datei in "Filename" wird vor der zu parsenden Template Datei aufgerufen, du kannst also in der php Datei dein ding machen und diverse Sachen mit $smarty->assign() für dein Template bereit stellen.
wenn eine Form valid ausgefüllt wurde, dann greifst du auf das da oben von mir zurück , includest also mailtools, initialisierst dir deine mail und schicst die ab, dann kannst du dir noch nen success mit mit assign erstellen oder ein anderen output und das war es.

wir sehen ja nicht was du da alles so hast, wir können ja nur von dem ausgehen was du hier schreibst.
 

Skuriles

Aktives Mitglied
5. Februar 2017
16
1
Zu den JS files: Wenn die JS Files extern liegen wie die Google Maps API geht das nicht über die info.xml (oder ich habe nichts gefunden wie das gehen soll) -> er versucht den Pfad dann relativ zum Template aufzurufen -> www.store.com/template/http://cdn.link.com. Das funktioniert auch ganz gut mit dem 140er Hook. Ich könnte sie zwar runterladen und im JS Ordner einbinden, aber ich bin mir nicht sicher ob das mit dem API Key von google noch funktioniert

Ich teste das nochmal heute abend. Das PHP File start.php müsste eigentlich funktionieren wenn ich die action leer lasse...evtl. hatte ich nur einen Tippfehler oder so.
Aber der Weg ist mir jetzt klar.
Ich glaube ich wollte mit aller Macht in der action ein extra PHP file in der action haben, was aber über die plugin config so nicht direkt möglich ist, da die Rechte fehlen.

Vielen Dank dir!!
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.369
345
Halle (Saale)
Es macht auch keinen Sinn, JS/CSS-Dateien in der info.xml zu definieren.
Der Sinn davon ist ja lediglich, dass dort definierte Ressourcen kombiniert und minifiziert werden können. Mit externen Dateien geht das aber schon rein technisch nicht. Solche Dinge sollten also direkt im Template eingebunden oder notfalls via pq in den DOM geschrieben werden.

Das hat außerdem den Vorteil, dass sie auch nur dann eingebunden werden, wenn das Template tatsächlich gerndert wird und nicht wie bei über die info.xml definierten Dateien pauschal immer.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.957
Berlin
Ja, wenn es externe Daten sind ist das klar, das wusste ich vorher nicht, bzw. habe nicht beachtet daß er ja die googlemaps Api nutzen möchte.
Die könnte er ja theoretisch auch einfach in seinem Template einbinden, bei JS ist es ja egal wo es steht, das muss ja nicht im Header sein.
 

Skuriles

Aktives Mitglied
5. Februar 2017
16
1
Ich glaube das mit dem 140er Hook ist noch ein Relikt von einem meiner ersten Versuche ...Ich ändere die einbindung der externen JS Files mal in ins template.

-> Ich hatte als ich den Shop lokal betrieben hatte immer das Problem, dass ich die jquery backstretch nochmals manuell einbinden musste in mein Plugin, weil er sonst Fehler in der Console geworfen hat. Die sollte aber eigentlich verfügbar sein. Aber das ist vermutlich ein anderer Bug und im Livesystem hat es auch ohne funktioniert...

Vielen Dank nochmals an euch für die Hilfe. Hoffe, dass Ding bekomme ich jetzt auch so zum Laufen
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.957
Berlin
Da ich für ein anderes Projekt (meine Turnierbörse), auch eine neue Entfernungsberechnung brauche (bisher arbeitet die mit GEO Daten, unabhängig von Google, aus 2004 oder so), kannst du mich auch gerne direkt kontaktiieren, dann unterstütze ich dich da ein wenig wenn fragen sind.

Im gegenzug würde ich mir dann deine Entfernungsberechnung gerne genauer anschauen, damit ich das Rad nicht neu erfinden muss.
 

Skuriles

Aktives Mitglied
5. Februar 2017
16
1
Eigentlich nutze ich nur Distance Maps JS API:

https://developers.google.com/maps/documentation/javascript/distancematrix?hl=de

-> Als start und ziel kann man jeweils 1-n Werte als string angeben wie man auch in Google Maps suchen würde: "Hauptstraße 3, 88556 Stadt"
-> Zurück bekommst du ein JSON Objekt mit einer Liste der angefragten Start/Ziel Kombinationen (findest du in dem Link ganz unten)
-> Die Distanz da raus in Metern nehme ich dann ran um eine Anfahrtspauschale zu berechnen.

Ist eigentlich sehr einfach und lässt sich über die einen Http call in jQuery relativ einfach umsetzen.

Ich kann dir wenn du magst heute abend den ganzen Code per PM oder hier reinkopieren. Hab ihn gerade nur nicht bei der Arbeit verfügbar^^
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.957
Berlin
Ja das mit dem deverloper Konto weiß ich und habe ich da ich ja auch schon social logins und andere Anwendungen programmiert habe, 25 000 Anfragen sind schon eine Menge, daher würde ich mir das nicht so die Sorgen machen, sind es mehr heißt es das ich vermutlich auch Geld generiere, dann darf Google auch etwas davon abbekommen :)

wie gesagt mein Angebot steht, wenn du da bei dir nicht weiterkommst, kannst du Bescheid geben, dann gebe ich dir da auch Tipps, damit du schneller vorankommst
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Eigenes Feld aus Kategorie im Shop anzeigen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Eigenes Plugin und der cache.. Plugins für JTL-Shop 3
Neu InvoicePosition.SKU - Formular bleibt zeigt keine Artikelnummer Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Formular Rechnungskorrektur Minus Vorzeichen bei Beträgen entfernen JTL-Wawi 1.9 2
Neu Paternoster Umlaufregal mit JTL Wawi möglich? JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 0
Neu Aufträge mit nicht verfügbaren Artikeln automatisch zurückhalten User helfen Usern - Fragen zu JTL-Wawi 2
Neu WooCommerce Connector Problem mit nachträglich abgebrochenen Bestellungen Onlineshop-Anbindung 0
Neu Überverkäufe mit Kindartikeln - wie richtig einstellen ? User helfen Usern - Fragen zu JTL-Wawi 18
Neu Problem mit Variationen-Artikeln JTL-Shop - Fehler und Bugs 2
Neu WMS - Nachträglicher Labeldruck mit Adressänderung Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neu Connector Verhalten mit Tracking Nummern und Versandbestätigungen Shopify-Connector 0
Neu OTTO-Marketplace Versand NICHT mit DHL möglich? Smalltalk 4
Neu Frage an die (Hobby-) Controller: B2C Einzelhandel mit 6% Marketingbudget - das ist normal? Business Jungle 7
Neu Probeme WaWi mit POS verbinden - failed to connect - server IP 127.0.0.1 Einrichtung / Updates von JTL-POS 0
Neu Immense Probleme mit dem Aufschalten neuer Produkte Amazon-Anbindung - Fehler und Bugs 0
Neu Aufträge mit falsche Steuerart angelegt User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wawi Auftrag in JTL POS öffnen (problem mit Kartenzahlung) Allgemeine Fragen zu JTL-POS 0
Neu Wie erstelle ich Bundles mit JTL Wawi? User helfen Usern 0
Auftrag Inlandskunde mit USt-Id - wie erfassen JTL-Wawi 1.7 6
Konfigurationsartikel mit 0 € vs. Preise der einzelnen Komponenten mit 0 € Einrichtung JTL-Shop5 1
Neu Zahlungsart Überweisung mit Skonto Allgemeine Fragen zu JTL-Shop 1
Neu Übersicht Verkauf mit Artikelmenge und durchschnittlichem VK netto Eigene Übersichten in der JTL-Wawi 6
Neu Artikel mit negativem Preis (Gutschein) eingeben kompliziert...geht das einfacher? Allgemeine Fragen zu JTL-POS 2
Neu Shop 5.4 - Error 500 mit aktiviertem JTL Debug JTL-Shop - Fehler und Bugs 8
Neu Preisdarstellung mit der niedrigsten Staffelung Allgemeine Fragen zu JTL-Shop 5
Neu Plugin mit transparentem Hintergrund (Auswahlassistent) Plugins für JTL-Shop 1
Neu Umgang mit Chargen bei mehreren Bestellungen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu SQL DB läuft mit Fehler voll und crasht Server JTL-Shop - Fehler und Bugs 1
Neu Fehler mit Zugriff auf die Datenbank (Exec Direct). Installation von JTL-Wawi 4
Neu In Filiale umbuchen mit Packungsgröße und dort mit JTL-POS einzeln "verkaufen" User helfen Usern - Fragen zu JTL-Wawi 3
Probleme mit Versandbenachrichtigung versenden JTL-Wawi 1.9 0
Neu Probleme mit PayPal-Plugin: Bestellungen "pending" & doppelte Zahlungen nach Direktzahlung Plugins für JTL-Shop 0
Neu Fehler 500 mit NOVAchild 5.3.1 in JTL-Shop 5.33 Templates für JTL-Shop 2
Neu Neueste Version Paypal Checkout: Rechnungskauf mit Ratepay und Paypal-Kreditkarte sind nicht verfügbar. Plugins für JTL-Shop 21
Neu SW 5.7.18: welcher Connector mit welcher Wawi? Shopware-Connector 1
Neu JTL FEHLER! - JTL sendet falschen ISO-Code - Nordirland Versand mit DHL nicht mehr möglich JTL-ShippingLabels - Fehler und Bugs 5
Probleme beim Versand mit DHL JTL-Wawi 1.9 0
Neu Workflow Auftragssplit bei DHL Export Sendungen mit mehreren Paketen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Artikelexport mit Filter Hersteller, Überverkauf, letzte Änderung JTL Ameise - Eigene Exporte 2
Neu Alternative zu Sendcloud mit JTL Integration (Express Versand International) Arbeitsabläufe in JTL-Wawi 0
Neu Lieferschein mit Versandlabel Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Amazon Lister 2.0 Fehlercode: SLR402 Bild "1.jpg" für das Angebot mit SKU "xxxxx" auf Channel "AMAZONDEJTL" wurde nicht gefunden Amazon-Lister - Ideen, Lob und Kritik 0
Neu noindex bei URLs mit btgsterne Allgemeine Fragen zu JTL-Shop 0
Artikelanlage mit Staffelpreisen JTL-Wawi 1.9 3
Neu Artikel mit Zustand beschädigt wird nicht als eigenständiger Artikel in der WaWi angezeigt User helfen Usern - Fragen zu JTL-Wawi 1
Neu Fehlermeldung: Fehler bei der Kommunikation mit dem eA-Server eBay-Anbindung - Fehler und Bugs 3
Neu Preisdarstellung: keine „ab“-Preise mehr mit Staffelpreisen für Produkte ohne Variationen (JTL Shop 5.3.3) Allgemeine Fragen zu JTL-Shop 1
Neu Liste verkaufter Artikel mit VK Fibu-Konto aus der Artikelkategorie User helfen Usern - Fragen zu JTL-Wawi 4
Neu Marketing Coupons mit Betrag + versandkostenfrei erstellen Allgemeine Fragen zu JTL-Shop 4
Neu Artikeletikett für Kinderartikel drucken mit GTIN Barcode funktioniert nicht User helfen Usern - Fragen zu JTL-Wawi 12

Ähnliche Themen