Beiträge von Kutzi

    Wir habe das Plugin "istraxx_plgvm2_3_istraxx_download_2.4.10" erworben und stehen vor einem Problem. Der Download von 1 Datei funktioniert. Wir wollen aber 2 Dateien je Produkt zum download anbieten. Es sind Ebooks die in 2 verschiedenen Formaten angeboten werden. Der Kunde soll sich dann je nach Bedürfnis das Format für seinen Reader aussuchen können.


    Wie ist es zu realisieren das man dort mehr als 1 Datei in das Produkt einbindet ? Gibt es hier im Forum eventuell einen Thread den ich übersehen habe ?


    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: