Ankündigung

Einklappen
Keine Ankündigung bisher.

Template: CC FIlter: Alphabetische Liste oder numerische Liste als Linkliste

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    http://www.tim-gatzky.de/Textfilter_alpha.mp4

    Filterfeld ist das Feld "Text".
    http://www.premium-contao-themes.com

    Kommentar


    • #17
      DANKE!!!
      So habe ichs jetzt hinbekommen!
      Ich hatte bei den Filter Einstellungen "Ungenaue Suche" aktiviert.

      Glaubst du ist es möglich die A-Z Liste so anzuzeigen das nur die Buchstaben angezeigt werden die es auch gibt?

      Kommentar


      • #18
        Gehen tut alles. Muss man halt die Buchstaben vorher einzeln gegenprüfen und ggf. rauskicken.
        http://www.premium-contao-themes.com

        Kommentar


        • #19
          Ich habe das jetzt so gelöst.

          Eine 2 Liste anzeigen lassen.
          Das Template dazu schaut so aus:

          PHP-Code:
          <div class="cc_a-z_linklist_helper"><ul>
          <?php foreach($this->entries as $entry): ?>

          <li><?php echo substr($entry->field('Feldname')->value(), 0,1); ?></li>

          <?php endforeach; ?>

          </ul></div>


          Das Template customcatalog_filter_linklist.html5 habe ich mit etwas JQuery erweitert. Jetzt werden nur noch die Einträge angezeigt die es gibt.

          PHP-Code:
          <?php
          /**
           * Linklist (alphabetic or numeric) filter template
           */
          ?>

          <?php
          $arrInput1 
          range(0,9);
          $arrInput2 range('A','Z');
          $arrOptions = array();
          foreach(
          array_merge($arrInput1,$arrInput2) as $key// Beide Arrys ausgeben
          {
              
          $arrOptions[$key] = array
              (
                  
          'id'    => 'ctrl_'.$this->name.'_'.$key,
                  
          'href'     => $this->addToUrl($this->name.'='.$key.'%'),
                  
          'label'    => $key,
              );
              
          // check if filter is selected
              
          if(\Input::get($this->name) == $key.'%')
              {
                  
          $arrOptions[$key]['selected'] = true;
              }
          }
          ?>

          <div <?php echo $this->cssID?> class="widget <?php echo $this->class?> block">
          <fieldset class="linklist_container">
              <?php if($this->label): ?><legend><?php echo $this->label?></legend><?php endif; ?>
              <ul class="linklist">
              <?php foreach($arrOptions as $option): ?>
              <?php if($option['selected']): ?>
              <li id="<?php echo $option['id']; ?>" class="sibling active"><a class="active" href="<?php echo $option['href']; ?>" title=""><?php echo $option['label']; ?></a>
              <?php else: ?>
              <li id="<?php echo $option['id']; ?>" class="sibling"><a href="<?php echo $option['href']; ?>" title=""><?php echo $option['label']; ?></a>
              <?php endif;?>
              <?php endforeach; ?>
              </ul>
          </fieldset>


          <?php echo $this->field('myField')->value(); ?>

          <?php if($this->description): ?><div class="description"><?php echo $this->description?></div><?php endif; ?>
          </div>

          <script type="text/javascript">
          $( document ).ready(function() {
              if ( $('.cc_a-z_linklist_helper').length) { // nur wenn der linklisten Helper auf der Seite ist ...
              
                  // alle Linklisten Links fürs erste verbergen
                  $('.cc_a-z_linklist_helper').parent().css('display','none');
                  $('.linkliste_alphabetisch .linklist_container ul.linklist li').each(function() { 
                      $(this).css('display','none');
                  });
              
                  // Linklisten Helper in Array
                  var optionText = [];
                  $(".cc_a-z_linklist_helper ul li").each(function() { optionText.push($(this).text()) });
              
                  // Die vorhandenen Linklisten Links wieder einblenden
                  $.each( optionText, function( intValue, currentElement ) {            
                      $(".linkliste_alphabetisch ul.linklist li").each(function() { 
                        if ($(this).attr('id') == 'ctrl_linkliste_alphabetisch_'+currentElement.toUpperCase()) {
                          $(this).css('display','inline-block');
                        } 
                        });
                  });
              }
          });
          </script>

          Was mir noch fehlt ist ein Alle anzeigen Link in der Linkliste.


          LG
          Erich

          Kommentar


          • #20
            Knall nen Link mit nem leeren Filterwert dazu Das setzt den Filter zurück

            PHP-Code:
            array_insert($arrOptions0, array(array('label'=>'Zurücksetzen','value'=>'','href'=>$this->addToUrl($this->name.'='))) ); 
            http://www.premium-contao-themes.com

            Kommentar


            • #21
              Wenn hier ein Buchstabe gewählt wird, für den es keinen Eintrag gibt, werden alle Einträge angezeigt.
              Wie kann man es erreichen, dass hier keine Einträge erscheinen bzw. eine Meldung angezeigt wird?

              Könntest du mal darstellen, wie die Prüfung nach vorhandenen Einträgen aussieht. Ich würde den vorhandenen Buchstaben gerne eine Klasse vergeben um sie zu highlighten.

              Kommentar


              • #22
                Im Liste Modul die Option ausstellen "Alle anzeigen bei leerem Filter".

                * Könntest du mal darstellen, wie die Prüfung nach vorhandenen Einträgen aussieht. Ich würde den vorhandenen Buchstaben gerne eine Klasse vergeben um sie zu highlighten.
                Da wirst du via DB Abfrage prüfen müssen oder wie bei den Tags und Co. die ->countValue() Methode nutzen.
                http://www.premium-contao-themes.com

                Kommentar


                • #23
                  Einen kleine Unregelmäßigkeit gibt es noch bei diesem Filter:

                  Bei einer Paginierung funktionieren die Buchstabenfilter ab der zweiten Seite nicht mehr:

                  URL der zweiten Seite
                  HTML-Code:
                  http://domain.de/stichwortverzeichnis.html?page_c231=2
                  Link-URL beim Buchstaben B auf der zweiten Seite
                  HTML-Code:
                  http://domain.de/stichwortverzeichnis/page_c231/2/buchstabe/B%25.html
                  Zum Vergleich Link-URL beim Buchstaben B auf der ersten Seite:
                  HTML-Code:
                  http://domain.de/stichwortverzeichnis/buchstabe/B%25.html
                  D.h. "page_c231/" wird auf der zweiten Seite noch hinzugefügt.
                  Wie kann man dies im Template noch lösen?
                  Muss das im Template des alphabetischen Filters passieren?

                  Kommentar


                  • #24
                    Zweierlei Wege:

                    1. Weg per Smart Filtering (diese Methode gilt für alle Filter)
                    Du kannst CC allgemein mitteilen, das Paginationen aktiv im Filter gehalten werden (das sogn. Smart Filtering in CC):

                    initconfig.php
                    $GLOBALS['PCT_CUSTOMCATALOG']['urlCustomParameters'][] = 'page_c231';

                    Standardmäßig killt CC Paginationen bei Aktivierung eines Filters (hatten wir hier eine Diskussionsrunde zu)

                    2. Im Template die Urls entsprechend um den Parameter ergänzen. Damit erzwingt man die Pagination aktiv zu halten, musst aber ggf. die neue Seite manuell hochblättern.
                    http://www.premium-contao-themes.com

                    Kommentar

                    Lädt...
                    X