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.105
1.865
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.105
1.865
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.105
1.865
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.105
1.865
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.367
343
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.105
1.865
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.105
1.865
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.105
1.865
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 Eigenes Feld mit json Array zeilenweise in Druckvorlage ausgeben Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Eigenes weiteres Kontaktformular erstellen möglich ? User helfen Usern - Fragen zu JTL-Wawi 3
Auftrag mit Terminlieferung JTL-Wawi 1.9 1
Neu Fehler bei Export mit Versandart DHL / Die Sequenz enthält keine Elemente. JTL-ShippingLabels - Fehler und Bugs 0
Neu Probleme mit Größenreihenfolge beim CSV-Import User helfen Usern - Fragen zu JTL-Wawi 2
Neu Amazon Business Kunde Österreich mit USt in Wawi Amazon-Anbindung - Fehler und Bugs 0
Neu Workflow mit verfügbarem Bestand User helfen Usern - Fragen zu JTL-Wawi 4
Neu Anbindung an Idealo mit Plugin gesucht Schnittstellen Import / Export 0
Neu Drop Shipping - Beide Firmen mit JTL Wawi - Wie löse ich das? Arbeitsabläufe in JTL-Wawi 7
Neu Mail Vorlagen mit verschiedenen Absender - Mail Adressen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Email Rechnung mit PDF von Ebay blockiert ? eBay-Anbindung - Fehler und Bugs 0
Artikel mit unterschiedlichen Währungen JTL-Wawi 1.9 1
Neu GPSR Verordnung - Wie handhabt ihr das im Shop mit dem Nova Template? Betrieb / Pflege von JTL-Shop 4
Neu Plugin: WooCommerce Wallet oder Gutscheine mit JTL nutzen - Fehler in der MwSt User helfen Usern - Fragen zu JTL-Wawi 0
Lagerartikel mit Variation, von denen manche kein Lager brauchen JTL-Wawi 1.9 1
Chargennummer eines Artikels auf der Rechnung mit ausdrucken JTL-Wawi 1.9 3
Neu Amazon Custom Orders mit Bildern von Kunden Amazon-Anbindung - Ideen, Lob und Kritik 0
Neu Sales Info / Aussendienst Informationssystem mit Besuchserfassung und vielen weiteren Funktionen auf der JTL Connect 2024 Dienstleistung, Jobs und Ähnliches 1
Neu Export / Exportformate: Anleitung bzw. Infoseite mit zulässigen Tags ? Betrieb / Pflege von JTL-Shop 0
Zahlungsmodul mit DKB klappt nicht JTL-Wawi 1.9 21
Neu neue Tarife mit Shop verstehe ich da was falsch? Allgemeine Fragen zu JTL-Shop 3
Neu Problem mit Scroll-Link nach Update auf Shop-Version 5.3.3 Technische Fragen zu Plugins und Templates 0
Neu Kern Waage die im Netzwerk hängt (via Moxa NPort 5100) auf RDP Server mit WMS nutzen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Hat jemand Erfahrung mit MrPacket? User helfen Usern 0
Neu Abgleich mit JTL Shop läuft nach zahlreichen erfolgreichen Durchläufen nicht mehr weiter JTL-Shop - Fehler und Bugs 11
Neu Wie andere Länder und Sprachen vom Google Shopping Plugin mit dem Merchant Center verbinden Plugins für JTL-Shop 5
Neu Nutzung von JTL POS im B2B Bereich mit späterer Zahlung Allgemeine Fragen zu JTL-POS 0
Neu Abholung mit DHL: Ist das immer so schlimm? User helfen Usern 5
Neu Problem mit Shopify abgleich Shopify-Connector 2
Stücklisten mit begrenzter Stückzahl JTL-Wawi 1.9 2
Auftrag ohne Versand aber mit Lagerbuchung abschließen JTL-Wawi 1.9 1
Neu Ebay Verkäufe - Auswahlartikel mit händischer Auswahl in der Rechnung - wie bei Wawi 1.9 vorgehen ?! Arbeitsabläufe in JTL-Wawi 0
Neu Einstieg in die JTL-Welt – JTL-Start mit Wawi-Lager oder gleich JTL-WMS? User helfen Usern - Fragen zu JTL-Wawi 23
Neu Artikel-Etiketten zusammen mit Pickliste drucken Arbeitsabläufe in JTL-Wawi 0
Neu Amazon Für das Feld "Preis mit Steuern zur Anzeige eBay-Anbindung - Fehler und Bugs 2
Neu "Artikel erscheint" Datum mit auf RE drucken Arbeitsabläufe in JTL-Wawi 2
Neu Erfahrungen mit Temu / Anbindung JTL User helfen Usern - Fragen zu JTL-Wawi 5
Neu Rechnungsvorlage mit Boxennummer Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Artikel Bezeichnugen mit einer Funktion variabel abschneiden Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
Neu Unterschiedliche Lagerplätze, wie konfigurieren? Waage nur mit WMS? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 2
Neu JTL-ERP-Connector funktioniert ab 20.09.2024 nicht mehr mit Shopify!? Shopify-Connector 2
Neu Probleme mit Varianten dann Stückliste und beim Hinzufügen ist dann schluss JTL-Wawi - Fehler und Bugs 7
Neu Seit gestern Meldung: Problems creating SAAJ object model mit Export bei Internetmarke JTL-Track&Trace - Fehler und Bugs 2
Neu Endlich Vertreterprovsionen für JTL-Wawi mit arpaTools ProviMate User helfen Usern 0
Neu SQL prozeduren mit #temp Tabellen Eigene Übersichten in der JTL-Wawi 28
Neu JTL WAWI - Suche nach Designer für eBay-Vorlage mit CLP-Feldern Dienstleistung, Jobs und Ähnliches 1
Artikelverkauf über JTL-Shop mit Bestand 0 in der JTL WaWi JTL-Wawi 1.9 13
Neu Stornierte Aufträge werden mit "Ist bezahlt" JA gekennzeichnet JTL-Wawi - Ideen, Lob und Kritik 21

Ähnliche Themen