Beiträge von opschwarz

    Hallo,

    da es rechtlich nicht zulässig ist, einfach um eine Bewertung zu bitten, egal wann, ohne die Zustimmung des Kunden, ist hier leider eine Zustimmung nötig.

    Befrag mal Google:Nach ständiger und mittlerweile höchstrichterlicher Rechtsprechung fallen solche Feedbackanfragen allerdings unter den Begriff der (Direkt-)Werbung und sind daher ohne vorherige Einwilligung des Kunden stets unzulässig – selbst wenn mit der E-Mail die Übersendung einer Rechnung für ein zuvor gekauftes Produkt erfolgt.


    Also lieber rausnehmen und das direkt in der orderdone.php lösen. :-)

    Lieben Gruß

    Hallo,

    ich habe jetzt einfach eine Datenbankabfrage in die orderdone.php eingebaut, die mir immer die letzten Einträge in den Tabellen ausgibt.

    Da in meinem Fall keine 10 Bestellungen in einer Millisekunde kommen, ist das für meinen Shop optimal.

    Die Abfrage funktioniert dann auch über alle Zahlarten hinweg in der orderdone.php als Overrides und ist somit Update fest und muss nicht in den Core integriert werden.

    Hier noch der Code, falls jemand ein ähnliches Problem hat:


    Pfad Overrides: /templates/dein_template/html/com_virtuemart/cart/orderdone.php

    Pfad Original Datei: /components/com_virtuemart/views/cart/tmpl/orderdone.php


    Am Ende in der Datei orderdone.php (am besten als Overrides, nicht im Core, wegen Updates) folgenden Code anhängen:


    Update 29.02.2024 -> Da mir langweilig war, habe ich den Code noch einmal etwas eingekürzt und vor allem die Eingabe der Datenbank Zugangsdaten entfernt. Funktion und Ausgabe ist die gleiche.


    Option Neu (2):

    //Code Beginn:


    //Datenbank verbinden und direkt auslesen

    //("SELECT Spalte_1, Spalte_2, Spalte_3, usw., created_on FROM Tabellenname ORDER BY Spalte_nach_welcher_geordnet_wird DESC LIMIT 0,1")

    //DESC LIMIT 0,1 - 0,1 bedeutet nur den letzten Eintrag der Spalte auslesen

    //Somit wird immer nur der letzte / neuste Tabeleneintrag ausgegeben, wenn man nach created_on sortiert

    $db=JFactory::getDBO(); $db->setQuery("SELECT order_number, order_total, virtuemart_order_id, order_shipment, created_on FROM j_virtuemart_orders ORDER BY virtuemart_order_id DESC LIMIT 0,1"); $result_1 = $db->loadAssocList();

    foreach($result_1 as $ausgabe_1)

    {

    $order_value = $ausgabe_1['order_total']; //Gesamtbetrag

    $order_shipping = $ausgabe_1['order_shipment']; //Versandkosten

    $order_id = $ausgabe_1['order_number']; //Bestellnummer

    $order_id = $ausgabe_1['created_on']; //Bestelldatum

    }

    $db->setQuery("SELECT email, created_on, virtuemart_order_id FROM j_virtuemart_order_userinfos ORDER BY virtuemart_order_id DESC LIMIT 0,1"); $result_2 = $db->loadAssocList();

    foreach($result_2 as $ausgabe_2)

    {

    $email = $ausgabe_2['email']; //Bestell Email Adresse

    }


    //ggf. fest vorgegebene Variablen einbinden, ohne das diese ausgelesen werden müssen:

    $xc_label = 'XXXXX'; //Eure Shop-ID bei Shopbewertung.de

    $token = 'XXXXXXXXXXX'; //Meist fest vorgegeben - bei Shopbewertung.de z.B. IEqggoqlBJdA/gCRrKsRmQ

    $shopname = 'Dein_Shop'; //Name deines Shops

    $url_shop = 'www.deine_Seite.de'; //ohne Protokoll-Prefix - ohne http:// oder https://

    $shop_type = 'XXX'; //laut Liste des Bewertungsportals - Virtuemart aktuell "13. Modified" bei Shopbewertung.de

    $language = 'de'; //Shopsprache

    ?>


    //Script einbinden:

    <script type="text/javascript">

    var fetched_data = {

    'order_value': '<?php echo $order_value; ?>',

    'shipping_value': '<?php echo $order_shipping; ?>',

    'order_id': '<?php echo $order_id; ?>',

    'order_created': '<?php echo $order_created; ?>',

    'email': '<?php echo $email; ?>',

    'xc_label': '<?php echo $xc_label; ?>',

    'token': '<?php echo $token; ?>' }

    'shop_name': '<?php echo $shopname; ?>',

    'url': '<?php echo $url_shop; ?>',

    'shop_type': '<?php echo $shop_type; ?>',

    'language': '<?php echo $language; ?>'

    }

    </script>

    <script type="text/javascript" src="https://rba.shopauskunft.de/js/rba_widget.js" id="rba_widget" async></script>

    <?php


    //Code Ende



    Option alt (1):

    //Code Beginn:


    //Datenbank verbinden

    $db = new mysqli('localhost', 'XXXXXXX', 'XXXXXXX', 'XXXXX'); //('Server', 'Benutzername', 'Passwort', 'Datenbankname');


    //Datenbank auslesen / abfragen

    //("SELECT Spalte_1, Spalte_2, Spalte_3, usw., created_on FROM Tabellenname ORDER BY Spalte_nach_welcher_geordnet_wird DESC LIMIT 0,1")

    //DESC LIMIT 0,1 - 0,1 bedeutet nur den letzten Eintrag der Spalte auslesen

    //Somit wird immer nur der letzte / neuste Tabeleneintrag ausgegeben, wenn man nach created_on sortiert

    $ausgabe = $db->query("SELECT order_number, order_total, virtuemart_order_id, order_shipment, created_on FROM j_virtuemart_orders ORDER BY virtuemart_order_id DESC LIMIT 0,1")

    or die( $db->error);

    while ($order = $ausgabe->fetch_object()) {

    $order_value = $order->order_total; //Gesamtbetrag

    $order_shipping = $order->order_shipment; //Versandkosten

    $order_id = $order->order_number; //Bestellnummer

    $order_created = $order->created_on; //Bestelldatum

    }


    $ausgabe_2 = $db->query("SELECT email, created_on, virtuemart_order_id FROM j_virtuemart_order_userinfos ORDER BY virtuemart_order_id DESC LIMIT 0,1")

    or die( $db->error);

    while ($order_2 = $ausgabe_2->fetch_object()) {

    $email = $order_2->email; //Bestell Email Adresse

    }


    //ggf. fest vorgegebene Variablen einbinden, ohne das diese ausgelesen werden müssen:

    $xc_label = 'XXXXX'; //Eure Shop-ID bei Shopbewertung.de

    $token = 'XXXXXXXXXXX'; //Meist fest vorgegeben - bei Shopbewertung.de z.B. IEqggoqlBJdA/gCRrKsRmQ

    $shopname = 'Dein_Shop'; //Name deines Shops

    $url_shop = 'www.deine_Seite.de'; //ohne Protokoll-Prefix - ohne http:// oder https://

    $shop_type = 'XXX'; //laut Liste des Bewertungsportals - Virtuemart aktuell "13. Modified" bei Shopbewertung.de

    $language = 'de'; //Shopsprache

    ?>


    //Script einbinden:

    <script type="text/javascript">

    var fetched_data = {

    'order_value': '<?php echo $order_value; ?>',

    'shipping_value': '<?php echo $order_shipping; ?>',

    'order_id': '<?php echo $order_id; ?>',

    'order_created': '<?php echo $order_created; ?>',

    'email': '<?php echo $email; ?>',

    'xc_label': '<?php echo $xc_label; ?>',

    'token': '<?php echo $token; ?>' }

    'shop_name': '<?php echo $shopname; ?>',

    'url': '<?php echo $url_shop; ?>',

    'shop_type': '<?php echo $shop_type; ?>',

    'language': '<?php echo $language; ?>'

    }

    </script>

    <script type="text/javascript" src="https://rba.shopauskunft.de/js/rba_widget.js" id="rba_widget" async></script>

    <?php


    //Datenbank schließen:

    $db -> close();


    //Code Ende


    Somit kann das Thema als erledigt angesehen werden.


    Lieben Gruß

    Hallo,


    offensichtlich stelle ich mich einmal wieder ein wenig zu blöd an, aber ich steht hier kurz vor einem Nervenzusammenbruch.


    Ich möchte gern eine Rechtssichere Bewertungsabfrage in die Bestellbestätigung direkt nach Absendung der Bestellung integrieren.


    warenkorb?task=orderdone -> Vielen Dank für Ihre Bestellung!


    Die Datei habe ich in ‎/templates/mein template/html/com_virtuemart/cart/orderdone.php als Overides angelegt und muss diese mit einem Script und ein paar Daten befüllen.


    Leider gelingt es mir nicht, hier die Daten der Bestellung auszulesen und anzuzeigen.

    Ich habe gefühlt bereits alle Varianten aus dem Forum und dem Netz versucht um die E-Mailadresse des Kunden auszulesen und anzuzeigen:


    <?php echo $view->orderDetails['details']['BT']->email; ?>

    <?php echo $viewData->orderDetails['details']['BT']->email; ?>

    <?php echo $this->orderDetails['details']['BT']->email; ?>

    <?php echo $viewData->order_details['details']['BT']->email; ?>

    <?php echo $view->order_details['details']['BT']->email; ?>

    <?php echo $this->order_details['details']['BT']->email; ?>


    Keine Chance und zudem würde ich gern noch die Versandkosten (->order_shipment), die Gesamtkosten (->payment_order_total) und die Ordernummer (-> order_number) ausgeben.


    Aber wenn ich mal wüsste mit was ich die email rausbekomme, dann wird der Rest gehen.


    Wenn ich in der Datei: /plugins/vmpayment/standard/standard/tmpl/post_payment.php

    $viewData["order_number"] und $viewData['displayTotalInPaymentCurrency'] eintrage, bekomme ich zumindest die Ordernummer und die Gesamtkosten, aber weder Versandkosten noch E-Mail geht auch in dieser Datei. Und als Overrides anlegen klappt irgendwie auch nicht mit dieser Datei.


    Vielleicht hat jemand eine Idee, wie ich die Mail Adresse in der orderdone.php ausgelesen bekomme.

    Klar, das ganze muss ich dann auch noch für orderdone_paypal machen.


    Danke und Gruß

    Hallo,

    da kann ich dir vielleicht helfen, schau einfach einmal, ob bei dir in der Konfiguration direkt vom Virtuemart unter "Stilvorlagen" -> unten links "Kern CSS Stile & Javaskripte (nur für Experten)" evtl. beim Letzen Punkt "Externe google jquery Prgrammbibliothek benutzen (veraltet)" ein "Ja" gesetzt ist, wenn dem so ist, dann einfach einmal auf "Nein" setzen und noch einmal versuchen, das hat bei mir den Fehler behoben.

    Lieben Gruß

    Hallo,

    vielen Dank, für die Rückmeldung, ich habe mir jetzt einfach mit dem oberen Preis mit einem CSS in der Datei "components/com_virtuemart/assets/css/vm-ltr-site.css" unter dem Punkt ".product-price" ca. in Zeile 53 die Befehle "position: sticky !important; top: 0;" eingebaut, damit bleibt der Preis einfach beim Scrollen oben stehen und ist immer sichtbar, meines Erachtens nach noch besser / hübscher / moderner. :-)

    Sollte jemand einen festen Header haben, so rutscht der Preis vor der Fixierung unter den Balken, dann muss noch zusätzlich der Befehl "padding-top: 65px;" mit rein, die 65px müsste ihr natürlich auf die Breite eures Header anpassen.

    Damit kann das Thema geschossen werden.

    Lieben Gruß

    Hallo,

    nach Jahren habe ich es endlich geschafft, den VM auf die aktuelle Version 4.012 in Verbindung mit Joomla 4.2.4 und PHP 8.1.13 zu updaten bzw. zu migrieren.

    Nun soll ja noch Wünschen alle wir vorher laufen, nur tut es das nicht ganz.

    Ich habe bisher in einer Produktdetailseite den Preis doppelt anzeigen lassen (zb. hier: https://www.fuersbaby.de/index…-chilling-box-emmi-detail), jeweils oben und unten und wenn ich eine Aufpreispflichtige Option gewählt habe, hat es diese sowohl oben als auch unten berechnet und der Kunde hat immer den korrekten Preis gesehen.

    Leider wird in der aktuellen Version, wenn ich wie damals den Code-Schnippsel

    (<?php echo shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$this->product)); ?>)

    aus der Datei components/com_virtuemart/views/productdetails/tmpl/default.php einfach unten kopiert und weiter oben erneut eingefügt habe.

    Aktuell wird leider oben nur der Einstandspreis angezeigt und eine Berechnung eines Mehrpreises bei einer Variantenauswahl wird nur unten angezeigt.

    Lösche ich jedoch unten den gleichen Code-Schnippel einfach raus und lassen nur den oberen angezeigt, rechnet er oben auch ganz normal.

    Als ob er nur einmal rechnen kann / darf.

    Was habe ich hier für Möglichkeiten, den Preis auch in der aktuellen Version zweimal (wegen Mobilen Endgeräten, um das Scrollen möglich gering zu halten und den Preis nicht immer suchen zu müssen) anzeigen zu lassen?

    Die aktuelle Testseite mit dem gleichen Artikel und der Fehlfunktion ist ebenfalls zugänglich unter (https://joomla4.fuersbaby.de/i…-chilling-box-emmi-detail).

    Danke für eine hoffentlich positive Rückmeldung.

    P. S. An der PHP Version kann es nicht liegen, es funktioniert auch nicht mit der PHP Version 7.4.33, welche auf den aktuellen Server läuft.

    Lieben Gruß

    Hallo Maik,


    die Lösung deines Problemes findest du in der Datei:
    plugins\vmcustom\textinput\textinput.php


    Ab Zeile 106:


    Folgendermaßen abändern:
    Zeile 106 das isset gegen !empty ersetzen und ein else mit gleichen Parametern ergänzen und statt dem comment einfach ein eigenes Overrides erstellen und ausgeben lassen -> in meinem Fall heißt die Übersetzung des Overrides: nicht gewünscht
    Dann wird im Warenkorb der Name das Selbsterstellten Feldes ausgegeben und dahinter steht dann "nicht gewünscht".
    Diese Daten werden auch durchgehend bis zum Ende (Mails an Kunden, Bestellübersicht usw.) weiter gegeben.



    Ich hoffe ich konnte dir helfen und es funktioniert auch so. :D


    Gruß Pierre

    Vielen Dank für die sehr überschaubare Antwortquote.


    Ich habe das Problem inzwischen selbst gelöst.


    Die id kann in der Datei "eure_Seite/plugins/vmcustom/textinput/textinput/tmpl/default.php ergänzt werden:


    Direkt ganz oben wird alles erzeugt:
    Sieht dann so aus hier wird denn folgendes ausgegeben id="wunschname_[customfield_id]", also die id des Feldes bei der Anlage.


    <?php
    defined('_JEXEC') or die();
    $class='vmcustom-textinput';
    $product = $viewData[0];
    $params = $viewData[1];
    $idTag = 'wunschname_['.$params->virtuemart_customfield_id .']';
    $name = 'customProductData['.$product->virtuemart_product_id.']['.$params->virtuemart_custom_id.']['.$params->virtuemart_customfield_id .'][comment]';
    ?>


    <input class="<?php echo $class ?>"
    type="text" value=""
    size="<?php echo $params->custom_size ?>"
    id="<?php echo $idTag?>"
    name="<?php echo $name?>"
    ><br />


    Vielleicht benötigt ein anderer auch mal eine ID bei diesem Feld.

    Hallo liebe Formum Mitglieder, ich bin Neu hier und freue mich nun ein Teil der Gemeinde zu sein! :D


    Ich nutze seit vielen Jahren Virtuemart und hatte bishher bei meinen "Selbsterstelle Felder", welche als Plugin "Feld-Typ E" (VM Custom - Customer Text Input) angelegt wurden, bis Version 2.6.6 immer im Fondend beim Anzeigen des Quellcodes eine ID (Beispiel:
    <input class="vmcustom-textinput" value="" size="30" id="selbsterstelltes_feld_30" name="customPlugin[1389][textinput][comment]" type="text">)


    Diese ID setzte sich lediglich aus der dem Namen (Selbsterstelltes Feld) und der Feldgröße (30) zusammen.
    Ich habe diese ID für ein Java Script genutzt, welches automatisch in dieses Feld einen Text einfügt.
    Beispiel: javascript:window.opener.document.getElementById('selbsterstelltes_feld_30').value='Teddy2'; window.close();


    Somit konnte der Kunde aus Bildern auswählen und das Bild wurde zu Text und in das Feld automatisch eingetragen.


    Nun zum eigentlichen Problem, in VM 3 gibt es diese ID oder überhaupt keine ID mehr für Plugins der Selbsterstellten Felder (Text Input).
    Beispiel: input class="vmcustom-textinput" value="" size="30" name="customProductData[97][52][1354][comment]" type="text">


    Für alle anderen Selbsterstellten Feldtypen wir z.B. Zeichenfolge, gibt es nach wie vor eine ID.
    Beispiel (ID bereits gekürzt: <div class="product-field-display"><select id="1015" name="customProductData[9]" class="vm-chzn-select">


    Ich finde einfach nicht die Ecke, wo für das VM Plugin (Selbsterstelltes Feld) der Name erzeugt wird und ich ggf. noch eine ID erzeugen lassen kann?
    Der Name kommt aktuell immer mit "customProductData[Produkt_ID][Feld_ID][Custom_ID][comment]" raus und ich finde einfach nicht die php, die diesen Namen erzeugt.


    Ich habe bereits folgende Dateien durchsucht:
    Components/cam_Virtuemart/sublayouts/customfield.php
    Components/cam_Virtuemart/sublayouts/customfields.php
    administrator/components/com_virtuemart/plugins/vmplugin.php
    administrator/components/com_virtuemart/plugins/vmcustomplugin.php
    administrator/components/com_virtuemart/plugins/vmuserfieldtypeplugin.php


    Wie gesagt, ich bin nicht fündig gewurden, wo ich den Namen ändern kann, oder für Plugins eine ID einfügen kann.
    Evtl. bin ich auch nur blind! :cool:


    Vielleicht hat hier jemand eine Idee, wo ich noch schauen könnte oder wie ich vielleicht auch anderweitig die ID rein bekomme.
    Ich möchte einfach, das dieser Automatismus weiterhin funktioniert und die Kunden den Text bzw. Bildname nicht manuell eintragen müssen, aber dafür braucht man halt eine eindeutige Zuordnung des Textfeldes mit ID.


    Vielen Dank bereits vorab.


    Gruß
    Pierre