+ Antworten
Ergebnis 1 bis 9 von 9

Thema: Dynamischer Inhalt mit Cookie

  1. #1
    Neu an Board
    Registriert seit
    08.08.2006
    Ort
    Gruibingen
    Alter
    24
    Beiträge
    64
    Bedankte sich
    23
    1 Danksagung in 1 Beitrag

    Standard Dynamischer Inhalt mit Cookie

    Hallo ich hätte da mal eine warscheinlich blöde Frage.

    Ich möchte in Joomla ein "internes" popup auf meiner Joomla seite erzeugen da ich demnächst auf J16 wechseln möchte habe ich mir gedacht dies über ein externes Skript zu realisieren. Entschieden habe ich mir für jQuery und da diesen Dialog.

    Jetzt mein Problem ich möchte, dass dieser Dialog nur beim ersten Besuch eines Nutzers angezeigt wird. Ich weiß dass ich dies über Cookies realisieren muss jedoch schaff ich es nicht diesen Dialog zu unterdrücken.

    HTML-Code:
    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="utf-8">
    	<title>jQuery UI Dialog - Basic modal</title>
    	<link rel="stylesheet" href="../../themes/base/jquery.ui.all.css">
    	<script src="../../jquery-1.5.1.js"></script>
    	<script src="../../external/jquery.bgiframe-2.1.2.js"></script>
    	<script src="../../ui/jquery.ui.core.js"></script>
    	<script src="../../ui/jquery.ui.widget.js"></script>
    	<script src="../../ui/jquery.ui.mouse.js"></script>
    	<script src="../../ui/jquery.ui.draggable.js"></script>
    	<script src="../../ui/jquery.ui.position.js"></script>
    	<script src="../../ui/jquery.ui.resizable.js"></script>
    	<script src="../../ui/jquery.ui.dialog.js"></script>
    	<link rel="stylesheet" href="../demos.css">
    	**********
    
    
    	$(function() {
    		$( "#dialog:ui-dialog" ).dialog( "destroy" );
    		// a workaround for a flaw in the demo system (http://dev.jqueryui.com/ticket/4375), ignore!
    	
    		$( "#dialog-modal" ).dialog({
    			height: 240,
    			width: 625,
    			modal: true
    		});
    	});
    	</script>
    </head>
    <body>
    
    
    
    <!-- Dieser Berich soll nur beim ersten mal angezeigt werden -->
    <div class="demo">
      <div id="dialog-modal" title="Test">
    <p>Mein Test</p>
    </div>
    
    <!-- Sample page content to illustrate the layering of the dialog -->
    <!-- <div class="hiddenInViewSource" style="padding:20px;">
    	<p>Sed vel diam id libero <a href="http://example.com">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>
    	<form>
    		<input value="text input" /><br />
    		<input type="checkbox" />checkbox<br />
    		<input type="radio" />radio<br />
    		<select>
    			<option>select</option>
    		</select><br /><br />
    		<textarea>textarea</textarea><br />
    	</form>
    </div><!-- End sample page content -->
    
    </div><!-- End demo -->
    <!-- Bis hier -->
    
    
    <div class="demo-description">
    <p>A modal dialog prevents the user from interacting with the rest of the page until it is closed.</p>
    </div><!-- End demo-description -->
    
    
    </body>
    </html>
    Ich habe mal den Kompletten Code reingestellt fals Ihr wissen müsste wie der Dialog erstellt wird.

  2. #2
    Kommt häufiger vorbei Avatar von Robstar
    Registriert seit
    09.01.2005
    Ort
    Wetzlar, Hessen
    Beiträge
    325
    Bedankte sich
    25
    Erhielt 57 Danksagungen
    in 50 Beiträgen

    Standard

    Cookies sind wohl eher nicht die Lösung.. Was ist mit den Benutzern die genrell cookies sperren, bei denen bloppt es dann immer auf...
    Ich würde da eher die IP als Kriterium wählen...und die könnest Du mit einfach auslesen und für 30 minuten in der Datenbank speichern..
    Grüße Robstar

    Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.

  3. #3
    Hat hier eine Zweitwohnung Avatar von progandy
    Registriert seit
    25.06.2007
    Beiträge
    1.939
    Bedankte sich
    13
    Erhielt 640 Danksagungen
    in 577 Beiträgen

    Standard

    @Robstar: Das kann man auch so programmieren, dass alle, die Cookies deaktiviert haben gar kein Popup bekommen.
    Suche und FAQ helfen bei Problemen oft weiter!

  4. #4
    Neu an Board
    Registriert seit
    08.08.2006
    Ort
    Gruibingen
    Alter
    24
    Beiträge
    64
    Bedankte sich
    23
    1 Danksagung in 1 Beitrag

    Standard

    Ja das Problem mit den Cookies ist mir bekannt es geht halt darum, dass es nicht hin bekomme eine JavaScript abfrage zu erstellen die überprüft, ob ein Cookie mit dem wert z.B. 1 vorhanden ist oder nicht und dann erst über if entschieden wird ob das popup angezeigt wird oder nicht.
    Hätte jemand da ein Beispiel wie ich das mach? Den Rest mit der abfrage ob Cookies allgemeine erlaubt sind werde ich dann hin bekommen da hatte ich gestern schon ein paar Beispiele gefunden. Ich weiß nur nicht wie ich mit js auf HTML "zugreifen" kann.

  5. #5
    Hat hier eine Zweitwohnung Avatar von JoomDesign
    Registriert seit
    19.03.2006
    Ort
    Berlin, Deutschland
    Beiträge
    1.927
    Bedankte sich
    269
    Erhielt 594 Danksagungen
    in 511 Beiträgen

    Standard

    Zitat Zitat von chr__au Beitrag anzeigen
    ... es geht halt darum, dass es nicht hin bekomme eine JavaScript abfrage zu erstellen die überprüft, ob ein Cookie mit dem wert z.B. 1 vorhanden ist oder nicht und dann erst über if entschieden wird ob das popup angezeigt wird oder nicht.

    Weshalb?

    Du brauchst doch die JS-Funktion nicht mehr wenn der Cookie vorhanden ist, also brauchst Du sie doch auch garnicht erst ausgeben.
    HTML-Code:
    
    <?php if( JRequest::getVar( 'mycookie', '', 'cookie', 'INT' ) != 1 ) : ?>
    $(function() {
    		$( "#dialog:ui-dialog" ).dialog( "destroy" );
    		// a workaround for a flaw in the demo system (http://dev.jqueryui.com/ticket/4375), ignore!
    	
    		$( "#dialog-modal" ).dialog({
    			height: 240,
    			width: 625,
    			modal: true
    		});
    	});
    <?php endif; ?>
    Die gleiche Abfrage dann noch auf den HTML Block anwenden.

    Ob Du die anderen Scripte mit in die Anweisung der Abfrage einbindest kann ich nicht sagen. Aber Du könntest auch die "jquery.ui.dialog.js" weglassen.


    //edit: ooops. Ganz vergessen:
    eine einfache Möglichkeit mit jQuery Cookies zu setzen/lesen/löschen.
    Geändert von JoomDesign (26.03.2011 um 07:44 Uhr) Grund: Korrektur + Ergänzung Link zu jQuery Cookie

  6. #6
    Hat hier eine Zweitwohnung Avatar von progandy
    Registriert seit
    25.06.2007
    Beiträge
    1.939
    Bedankte sich
    13
    Erhielt 640 Danksagungen
    in 577 Beiträgen

    Standard

    Übrigens ist es bei Joomla meistens sinnvoller mootools statt JQuery zu verwenden, denn mootools ist sowieso schon vorhanden, jQuery muss zusätzlich geladen werden.
    Suche und FAQ helfen bei Problemen oft weiter!

  7. #7
    Neu an Board
    Registriert seit
    08.08.2006
    Ort
    Gruibingen
    Alter
    24
    Beiträge
    64
    Bedankte sich
    23
    1 Danksagung in 1 Beitrag

    Standard

    Danke Marcel aber könntest du mir noch bitte sagen wie ich diese Abfrage machen kann (mit dem jQuery Cookies)? Meine Idee war im script-Tag folgendeszu ergänzen.
    Code:
    $(function() {
    		$( "#dialog:ui-dialog" ).dialog( "destroy" );
                    if($.cookie('FFBDDATA') == 1){
    		     $( "dialog-modal" ).dialog({ autoOpen: false });
    		}else{
    		     // Und jetzt noch das Cookie FFBDDATA mit dem Wert 1 setzten.
    		}
    		
    		$( "#dialog-modal" ).dialog({
    			
    			height: 240,
    			width: 625,
    			modal: true
    			
    			
    		});
    		
    		
    	});
    Wenn ich Java-Skript richtig verstanden habe muss ich aber jetzt eine ID aufrufen wie z.b. "dialog-modal" und wie ist das mit dem Cookie. Mein Test hat ergeben, dass
    Code:
    $( "#dialog-modal" ).dialog({ autoOpen: false });
    for dem
    Code:
     $( "#dialog-modal" ).dialog({
    stehen muss da sonst das popup nicht angezeigt wird.
    Vielleicht könntest du bzw. auch jemand anderes mir noch einen paar kleinere tipps geben ich habe leider fast keine javascript Kenntnisse


    EDIT:

    Ich habe jetzt die Daten in mein Template integriert und über den Webserver getetstet und musste feststellen, dass der Aufruf sich sehr verzögert kann ich auch erst nach der Cookie Überprüfung die JavaScript dateien laden lassen? Also wenn ich kein Cookie habe dann läd es die Daten ansonsten lässte es dies weg und wie ist dass dann im Body mit dem Text der als Popup angezeigt werden sollte? Der wird ja dann am unteren Rand des Templates angezeigt.

    EDIT2:

    Ebenfalls progandy danke wie rufe ich mit mootools ein solchen Dialog auf?
    Geändert von chr__au (26.03.2011 um 10:17 Uhr)

  8. #8
    Hat hier eine Zweitwohnung Avatar von progandy
    Registriert seit
    25.06.2007
    Beiträge
    1.939
    Bedankte sich
    13
    Erhielt 640 Danksagungen
    in 577 Beiträgen

    Standard

    Zitat Zitat von chr__au Beitrag anzeigen
    Ebenfalls progandy danke wie rufe ich mit mootools ein solchen Dialog auf?
    Damit hab ich mich noch nicht beschäftigt. Es könnte sein, dass du dazu eine Addon brauchst. Wenn du lieber mit jquery arbeitest, geht auch schpn, vergiss aber nicht, den NoConflict-Modus zu setzen.
    Suche und FAQ helfen bei Problemen oft weiter!

  9. #9
    Hat hier eine Zweitwohnung
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    32
    Beiträge
    1.237
    Bedankte sich
    115
    Erhielt 471 Danksagungen
    in 368 Beiträgen

    Standard

    Als Ergänzung zu den bereits genannten Lösungsansätzen nachfolgend einige Informationen zur Mootools Variante: MooDialog, Mootools Cookie Handling

    Ich würde den von Andreas vorgeschlagenen Weg über Mootools unterstützen und vielleicht sogar soweit gehen und fragen, ob dir die von Joomla! bereitgestellte Lightbox nicht weiterhelfen kann. Vielleicht ist dein Vorhaben sogar ausschließlich mit Boardmitteln zu lösen.
    Das ist sicher nicht weniger Aufwand, erfordert aber keinerlei Einbindung zusätzlicher Scripte und ist sowohl unter 1.5.x, als auch Joomla! 1.6 nutzbar.
    Hier findest du den Quelltext, der von Joomla! eingebunden wird, wenn man einen Link "modal" öffnet. Daraus lässt sich folgende Informationen ziehen:
    PHP-Code:
    $script = <<<EOD
    /* <![CDATA[ */
    window.addEvent('domready', function() {
        // var options = ...
        SqueezeBox.initialize(options);
        SqueezeBox.fromElement(element);
    });
    /* ]]> */
    EOD;

    JFactory::getDocument()->addScriptDeclaration($script); 
    element ist hier das ... Element das in der Lightbox dargestellt wird. Der initialize Funktion ist optional ein options Objekt mitzugeben. (Prima Satzbau Sven)

    Wenn man also mit:
    PHP-Code:
    JHtml::script('modal.js');
    JHtml::stylesheet('modal.css'); 
    alle nötigen Scripte läd und dann über den Code weiter oben ein DIV Element einblendet, käme das doch dem Vorhaben recht nahe, oder?

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein