catalognotelist mit counter der gemerkten einträge

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • formfarbe
    Contao-Nutzer
    • 20.11.2010
    • 51

    #1

    catalognotelist mit counter der gemerkten einträge

    Hi zusammen,
    ich arbeite gerade an einen etwas größeren projekt mit dem contao catalog. ich hab es hinbekommen eine merkliste für meine einträge zu erstellen. die einträge kann ich nun auswählen und sie erscheinen in meiner notelist. mir fehlt allerdings so eine art counter funktion mit der ich am link zum merkzettel sehe wieviel items gespeichert wurden. ich stell mir das so ähnlich vor wie das apple macht.



    gibt es dafür schon ansätze?
    danke
  • formfarbe
    Contao-Nutzer
    • 20.11.2010
    • 51

    #2
    hab mir jetzt anders geholfen

    einfach eine span element an den linkgehangen und per jquery bei klick auf "zu merkliste hinzufügen" am link zum merkzettel eine 1 im roten kreis mit fadein und fadeout einblenden und ausblenden lassen.

    HTML-Code:
    $(function(){
    	var total_click = 0;
    	var total_max = 1;
    		$("deine merkzettel button").click(function(){
    	if(total_click<total_max) total_click++;
    		$("zum merkzettel link - span").html(total_click);
    		return false;
    		});
    	});
    
    $('deine merkzettel button').click(function() {
    	$('zum merkzettel link - span').fadeIn(1000, function() {
        // Animation complete.
      });
    	$('zum merkzettel link - span').fadeOut(500, function() {
        // Animation complete.
      });
    });
    sieht dannungefähr so aus

    Kommentar

    • Tina
      Contao-Fan
      • 10.01.2010
      • 374

      #3
      Hallo,

      gibt es dafür auch noch einen anderen Ansatz? Wenn man das mit JavaScript löst und dann die Seite neu lädt, steht ja wieder der Ursprungswert dort.
      Kann man die Anzahl aus dem Cookie auslesen?

      Gruß
      Tina

      Kommentar

      • MacKP
        Contao-Yoda
        • 15.06.2009
        • 13315

        #4
        Hallo Tina,
        eventuell auf jeder Seite die Notelist als Modul einbinden und dort nur noch die Anzahl ausgeben lassen.

        Viele Grüße
        Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
        [Arbeitet bei -> Paus Design & Medien]
        "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

        Kommentar

        • Tina
          Contao-Fan
          • 10.01.2010
          • 374

          #5
          Hallo MacKP,

          das Problem ist, dass ich dann ein zweites Template brauche, dass nur die Nummer ausgibt und ich kann weder dem Formular noch dem Modul ein Template zuweisen.

          Kommentar

          • MacKP
            Contao-Yoda
            • 15.06.2009
            • 13315

            #6
            Hallo Tina,
            entweder so: http://de.contaowiki.org/Eigene_Temp...C3%B6glichkeit
            oder per CSS ausblenden ;-)

            Viele Grüße
            Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
            [Arbeitet bei -> Paus Design & Medien]
            "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

            Kommentar

            • Tina
              Contao-Fan
              • 10.01.2010
              • 374

              #7
              Ausblenden finde ich immer unschön

              Ich werd mal gucken, was ich basteln kann. Danke für die Tipps!

              Kommentar

              • Tina
                Contao-Fan
                • 10.01.2010
                • 374

                #8
                Ich muss wohl doch mit ausblenden arbeiten, weil ich an der Stelle keinen Zugriff auf die CSS-Klasse hat. Falls hier jemand noch eine andere Lösung weiß, immer her damit

                Das viel größere Problem ist, dass ich zwei Kataloge habe, von denen ich alle Items zusammenzählen möchte. Da aber das form_catalognotelist-Template pro Katalog durchlaufen wird, kriege ich es nicht hin, nur eine einzige Ausgabe zu erzeugen. Hat da jemand eine Idee?

                Viele Grüße

                Kommentar

                • Tim G
                  Contao-Urgestein
                  • 13.02.2010
                  • 2212

                  #9
                  Hier mal ein neuer Ansatz:

                  Zähl einfach die gemerkten Objekte.

                  Dafür das form_catalognotelist.tpl bissel aufbohren und eine "zähl"-Variable einfügen und im foreach hochzählen lassen. Meine heisst hier $itemCount.

                  ich häng das mal an.

                  PHP-Code:
                  <?php 
                  
                  /***
                   * Sample "View notelist" template file which get used to render a form in the frontend.
                   * This sample shows how to display the notelist form element.
                   * To see the data structure, uncomment the print_r() 
                   */
                   
                  ?>
                  <?php // print_r($this->items); ?>
                  
                  <?php $itemCount = 0; ?>
                  
                  <div class="formnotelist">
                  <?php if($this->description): ?>
                  <?php echo $this->description; ?>
                  <?php endif; ?>
                  <?php foreach($this->items as $item): ?>
                  <div class="notelistitem">
                  <?php echo $item['amount']; ?> x
                  <?php foreach($item['fields'] as $k=>$field): ?>
                  <div class="field">
                  <span class="title"><?php echo $field['title']; ?></span>
                  <span class="value"><?php echo $field['value']['value']; ?></span>
                  </div>
                  <?php endforeach; ?>
                  <div class="notelistvariants">
                  <?php foreach($item['variants'] as $k=>$variant): ?>
                  <?php echo $variant['name']; ?>
                  <?php endforeach; ?>
                  </div>
                  <?php echo $item['input_amount']; ?>
                  <?php echo $item['input_update']; ?>
                  <?php echo $item['input_remove']; ?>
                  </div>
                  
                  <?php $itemCount++; ?>
                  
                  <?php endforeach; ?>
                  </div>
                  
                  <?php $GLOBALS['TL_LANG']['MSC']['my_catalognotelist']['items'] = $itemCount; ?>
                  <div class="total">Gemerkte Objekte: <?php echo $itemCount; ?></div>

                  Optional kannst du das ganze noch in eine globale Variable verpacken um diese z.B. an ein Formular zu übergeben. Ist manchmal ganz praktisch.


                  Grüße Tim
                  Zuletzt geändert von Tim G; 23.03.2011, 11:18.
                  http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

                  Kommentar

                  • Tina
                    Contao-Fan
                    • 10.01.2010
                    • 374

                    #10
                    Die Idee ist auch nicht schlecht, aber das löst mein Problem mit den zwei Katalogen nicht. Das Template wird bei mir ja zweimal durchlaufen und ich muss beide Werte dann zusammenzählen und nur einmal ausgeben. Nur weiß ich nicht, wie ich das mache.

                    Ich seh schon, ich hab mir wohl was zu Kompliziertes überlegt

                    Kommentar

                    • Tim G
                      Contao-Urgestein
                      • 13.02.2010
                      • 2212

                      #11
                      Stimmt, die zwei Kataloge habe ich überlesen.

                      Aber, alles ist machbar.
                      Ich überleg mal weiter

                      doch, das geht über das template. Ich bau dir das nachher. Man kann über die CatalogID eine Unterscheidung machen und eine ZählVariable intitialisieren, die für den neuen Catalog zählt.

                      Am Ende alles zusammen addieren.

                      Ich muss jetzt aber erstmal zum Training
                      Zuletzt geändert von Tim G; 23.03.2011, 11:40.
                      http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

                      Kommentar

                      • Tim G
                        Contao-Urgestein
                        • 13.02.2010
                        • 2212

                        #12
                        Bitte mal testen:
                        ps. sind noch ein paar Kommentare etc. drin.

                        Und die Gesamtausgabe wird jetzt natürlich noch für jeden Katalog ausgegeben.
                        Das ändere ich dir nachher.

                        Aber im letzten Umlauf steht immer die Gesamtzahl.

                        schneller gings nicht.

                        PHP-Code:
                        <?php 
                        
                        /***
                         * Sample "View notelist" template file which get used to render a form in the frontend.
                         * This sample shows how to display the notelist form element.
                         * To see the data structure, uncomment the print_r() 
                         */
                         
                        ?>
                        <?php // print_r($this->items); ?>
                        
                        <?php $actCatalogId = $this->items[0]['catId'];  ?>
                        
                        Aktueller Catalog: <?php echo $actCatalogId; ?>
                        
                        <?php if($actCatalogId != oldCatalogId): ?>
                            Neuer Katalog: Eintr&auml;ge im letzten Katalog: <?php echo $GLOBALS['TL_LANG']['MSC']['my_catalognotelist']['oldCatalogCount']; ?>
                        <?php endif; ?>
                        
                        <?php $itemCount = $GLOBALS['TL_LANG']['MSC']['my_catalognotelist']['oldCatalogCount']; ?>
                        
                        <div class="formnotelist">
                        <?php if($this->description): ?>
                        <?php echo $this->description; ?>
                        <?php endif; ?>
                        <?php foreach($this->items as $item): ?>
                        <div class="notelistitem">
                        <?php echo $item['amount']; ?>
                        <?php foreach($item['fields'] as $k=>$field): ?>
                        <div class="field">
                        <span class="title"><?php echo $field['title']; ?></span>
                        <span class="value"><?php echo $field['value']['value']; ?></span>
                        </div>
                        <?php endforeach; ?>
                        <div class="notelistvariants">
                        <?php foreach($item['variants'] as $k=>$variant): ?>
                        <?php echo $variant['name']; ?>
                        <?php endforeach; ?>
                        </div>
                        <?php echo $item['input_amount']; ?>
                        <?php echo $item['input_update']; ?>
                        <?php echo $item['input_remove']; ?>
                        </div>
                        
                        <?php $itemCount++; ?>
                        
                        <?php endforeach; ?>
                        </div>
                        
                        <?php $oldCatalog = $actCatalog; ?>
                        <?php $oldCatalogCount = $itemCount; ?>
                        
                        <?php $total = $itemCount; ?>
                        <div class="total">Gemerkte Objekte: <?php echo $total; ?></div>
                        
                        <?php $GLOBALS['TL_LANG']['MSC']['my_catalognotelist']['oldCatalogCount'] = $oldCatalogCount; ?>
                        <?php $GLOBALS['TL_LANG']['MSC']['my_catalognotelist']['total'] = $total; ?>
                        <?php setcookie("my_catalognotelist_total", "$total",  time()+60*60); // 1 Stunde ?>
                        Ganz unten schreibe ich das noch in einen Cookie, damit man auch von anderen Seiten darauf zu greifen kann. Ist sehr rudimentär, aber funktioniert.

                        Den kannst du mit
                        PHP-Code:
                        Anzahl in Merkliste: 
                        <?php echo $_COOKIE['my_catalognotelist_total']; ?>
                        auslesen.

                        Das updated sich jetzt auf der Seite mit dem Merkliste-Modul. Das muss man jetzt noch umbauen, dass es beim Absenden geupdated wird. Im Grunde sollte das noch einfacher sein, da man nur per Klick hochzählen muss bzw. beim Löschen abziehen - egal welcher Katalog.

                        Aber teste das oben erstmal, ob es in die richtige Richtung geht.
                        Zuletzt geändert von xchs; 23.03.2011, 16:06.
                        http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

                        Kommentar

                        • Tina
                          Contao-Fan
                          • 10.01.2010
                          • 374

                          #13
                          Hey Tim,

                          vielen, vielen Dank für die Mühe!!
                          Wenn ich mich mal revanchieren kann, dann sag Bescheid

                          Es passte fast, ich habe nur noch einen Counter eingebaut, der die Anzahl der Kataloge zählt und wenn der bei 2 steht, gebe ich $total aus, damit die Ausgabe nicht zwei mal stattfindet.

                          LG
                          Tina

                          Kommentar

                          • Tim G
                            Contao-Urgestein
                            • 13.02.2010
                            • 2212

                            #14
                            Jup, cool wenn`s passt.
                            Ist bissel quick & dirty. Wäre was für ein kleines eigenständiges Modul.

                            Noch flexibler wäre es, wenn man vorher guckt wieviele Merklisten ausgezählt werden müssen bevor total ausgeben werden soll. Nur für den Fall man kennt die Gesamtanzahl nicht.

                            Grüße,
                            Tim

                            ps. ich glaube das wird aus dem template heraus zu aufwendig.
                            Zuletzt geändert von Tim G; 23.03.2011, 17:44.
                            http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

                            Kommentar

                            • Tina
                              Contao-Fan
                              • 10.01.2010
                              • 374

                              #15
                              Zitat von Tim G Beitrag anzeigen
                              Jup, cool wenn`s passt.
                              Ist bissel quick & dirty. Wäre was für ein kleines eigenständiges Modul.

                              Noch flexibler wäre es, wenn man vorher guckt wieviele Merklisten ausgezählt werden müssen bevor total ausgeben werden soll. Nur für den Fall man kennt die Gesamtanzahl nicht.

                              Grüße,
                              Tim

                              ps. ich glaube das wird aus dem template heraus zu aufwendig.
                              Ja, das denke ich auch. Aber für meine Zwecke reicht's und da ich eh nie mehr als 2 Katalog haben werde, ist das so eine gute Lösung.

                              Kommentar

                              Lädt...