Widerrufsrecht im Warenkorb

  • Hallo,


    ich habe mir gerade ein neues Kundenfeld angelegt und auch auch den Inhalt der tos.php in meine neue wir.php kopiert.


    Was muss ich jetzt alles ändern damit beim Klick auf den Link auch der Inhalt der Seite Widerrufsbelehrung angezeigt wird. Wäre toll wenn das jemand hier ändern könnte.


    Da sind so viele tos und terms-of-service drin, dass ich nicht weiss was ich da tue ;-)


    hier der Code der neuen wir.php


  • Hi Milbo,


    schon mal Danke für Deine Hilfe,


    aber es funktioniert noch nicht ganz. Das Popup Fenster geht zwar auf, aber es werden nur die AGBs angezeigt nicht das Widerrufsrecht.


    Ich habe meine wir.php jetzt soweit geändert:



    soweit ich das sehe ist die ID in dieser Zeile für den Inhalt verantwortlich:


    PHP
    1. <a href="<?php echo JRoute::_ ('index.php?option=com_content&view=article&id=5', FALSE) ?>" class="terms-of-service" id="terms-of-service" rel="facebox"


    aber was muss ich da eintragen, damit der Content aus Artikel id=5 auch angezeigt wird??
    Beim Mouseover wird der Link richtig angezeigt, aber beim Anklicken wird das Häkchen bei den AGBs gesetzt *kopfkratz


    und wenn ich id="terms-of-service" änder passiert gar nichts, also geht kein Popup auf.


    Bin da ein wenig überfragt....sorry

  • Hi Milbo,


    danke für Deine Geduld, aber ich hab da schon alles Mögliche durchprobiert, aber es will leider nicht.


    Das liegt aber auch daran, dass ich nicht wirklich weiß was ich da tue ;-)


    Könntest Du nicht die Datei komplett ändern?? bitte bitte bitte bitte.....


    ich glaube, dass das auch im Sinne vieler anderer Benutzer von VM3 ist, eine fertige Lösung hier zu finden. Das Kundenfeld ist ja sehr einfach zu machen in VM, aber diese Datei ist schon nicht ohne... das ist nicht mal eben geändert...


  • Im Kopf der Funktion wird mit ...

    PHP
    1. static $done = false;
    2. if ($done) return true;


    ... geprüft ob "done=true" ist. Darum kann man mit in der Kopie von "tos.php" z.B." "wb.php" zwar die Funktion "popup" der Klasse "vmJsApi" aufrufen es wird jedoch nur einmal ein Popup JS eingefügt. Ruft man die Funktion "popup" nun 2 mal in einer Datei oder eben auch in verschiedenen Dateien aber der gleiche View auf dann wird nur 1 Java Script erzeugt und hinzugefügt. Dies führt dazu das man keine 2 Popup Felder in einer View nutzen kann.


    Beispiel:

    PHP
    1. vmJsApi::popup('#full-tos','#terms-of-service');
    2. vmJsApi::popup('#full-tos-k','#terms-of-service-k');


    Meine Lösungsvorschläge:


    1) Bitte ändert den VM Code in den kommenden Versionen so ab das die Funktion "popup" in der PHP Klasse vmJsApi einen zusätzlichen Wert übergeben bekommt ...


    PHP
    1. static function popup($container,$activator,$js_id)


    Die "$js_id" muss dann in der Funktion an das JQuery JS weitergegeben werden. Dann kann auch die "done=true" Abfrage raus.


    2) Eine noch bessere Lösung ist wenn ihr die "vmJsApi" so ändert das zuerst alle "popup" JQuery Snippets der Felder gesammelt werden und dann nur ein variables JQuery Snippet geadded wird. Dann wird nicht für jedes Feld das ein Popup hat ein eigenes Js Snippet geadded und das spart Traffic und ist in Hinblick auf Perfomance schick.


    Bei Lösung 1 wird in der Funktion "popup" dann ...


    PHP
    1. self::addJScript('box' ,$box);


    zu


    PHP
    1. self::addJScript('box'.$js_id ,$box);


    Im Quelltext der Seite wird dann ...


    Code
    1. <script id="box" type="text/javascript">//<=!=[=C=D=A=T=A=[
    2. jQuery(document).ready(function($) {
    3. jQuery('div#full-tos').hide();
    4. var con = jQuery('div#full-tos').html();
    5. jQuery('a#terms-of-service').click(function(event) {
    6. event.preventDefault();
    7. jQuery.fancybox ({ div: '#full-tos', content: con });
    8. });
    9. }); //]=]=>
    10. </script>


    zu


    Code
    1. <script id="box[B][U][COLOR='#FF0000']JEWEILIGEID[/COLOR][/U][/B]_js" type="text/javascript">//<=!=[=C=D=A=T=A=[
    2. jQuery(document).ready(function($) {
    3. jQuery('div#full-tos').hide();
    4. var con = jQuery('div#full-tos').html();
    5. jQuery('a#terms-of-service').click(function(event) {
    6. event.preventDefault();
    7. jQuery.fancybox ({ div: '#full-tos', content: con });
    8. });
    9. }); //]=]=>
    10. </script>


    Wie schon erwähnt ist Lösung 2 besser da man bei Lösung 1 je Feld ein JS Snippet pro Popup hat. Ein einziges Snippet mit anderem JQuery Code das mehrere Popups handeln kann ist wie gesagt schöner.




    Ich poste hier mit Absicht keine Step by Step Lösung weil ich kein Freund von Änderungen am Code ohne die Entwickler bin. Diese gehen halt beim nächsten Update verloren.



    Für alle die trotzdem eine schnelle Lösung suchen ...


    a)
    In der "wb.php" direkt die Funktion "addJS" von "vmJsApi" aufzurufen und das Jquery clonen und adden. Dabei ist darauf zu achten das es A) Keine DOM Konflikte bei den CSS Selektoren gibt und B) Die JS ID nicht kollidiert.


    b) Ein override in der View der Cart zu machen und eigenes JQuery an der jeweiligen Stelle adden. Die richtige Stelle kann man ja über die DOM CSS Selektoren wählen und Joomla bietet ja neben dem VM auch eigene Funktionen zum adden von JS Code. Hier ist der Vorteil das dass Override auch beim Update erhalten bleibt.


    Schöner wäre aber eine Lösung durch Euch wackere fleißige Entwickler :cool: