Stichwortliste Objekte A-Z

Fragen zum Erstellen von Templates für webEdition.
Leon
Senior Member
Beiträge: 204
Registriert: Fr 9. Jul 2004, 20:26

Stichwortliste Objekte A-Z

Beitragvon Leon » Mo 20. Aug 2012, 12:07

Nach der alten (leider nicht mehr verfügbaren) Dokumentation hatte ich die Stichwortliste mit Accordions ala JQuery nachgebaut. Also alle Stichworte auf einer Seite. Basis sind Objekte.

Da die Anzahl der Stichworte jetzt sehr umfangreich geworden ist, ist die Ladezeit der Seite zu groß geworden.
Also sollen die Stichworte jetzt auf Einzelseiten pro Buchstabe aufgeteilt werden. Tja, aber wie ohne für jeden Buchstaben eine Seite zu erstellen?

Ich habe versucht diesen Uraltvorschlag von Dirk Einecke http://forum.webedition.org/viewtopic.php?f=87&t=5503 umzusetzen - gibt leider div. Fehlermeldungen.

Die A-Z Linkleiste und Einzelseiten sollten automatisch generiert werden, Umlaute sollten entsprechend sortiert werden.

Vielleicht kann jemand helfen?
Nachfolgend der bisherige Code, wie beschrieben alles auf einer Seiten mit Accordions.
Funktioniert hervorragend.

Code: Alles auswählen

 <?php
      // Funktion substr() für UTF8-Strings
      // Siehe: http://de.php.net/substr
      function utf8_substr($str,$from,$len)
      {
        return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
                            '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
                            '$1',$str);
      }
?>
<we:listview type="object" name="Overview" order="Stichwort" classid="3">
<?php
        $str_character_1 = (string) '';
        $str_character_2 = (string) '';
?>
<div id="accordion">
<we:repeat>
<we:setVar to="global" nameto="Stichwort" from="listview" namefrom="Stichwort" typefrom="text"/>
          <?php
            // Ersten Buchstaben des Feldes "Headline" holen
            $str_character_1 = strtoupper(utf8_substr($GLOBALS['Stichwort'], 0, 1));

            // Einträge, die mit einem Umlaut beginnen, sollen bei
            // den Nicht-Umlaut-Einträgen eingeorndet werden.
            // Umlaute werden zu Nicht-Umlauten umgeschrieben.
            switch ($str_character_1)
            {
              case 'Ä':
                $str_character_1 = 'A';
                break;
              case 'Ö':
                $str_character_1 = 'O';
                break;
              case 'Ü':
                $str_character_1 = 'U';
                break;
            }

            // Ende von '<div class="element">'
            // Nur ausgeben, wenn ein Buchstabenwechsel stattgefunden hat und
            // es nicht der erste Durchlauf (Eintrag) ist.
            if ($str_character_1 != $str_character_2 && '' != $str_character_2)
            {
              echo '</div>';
            }

            // Nur wenn ein Buchstabenwechsel stattgefunden hat.
            if ($str_character_1 != $str_character_2)
            {
              // Buchstabe ausgeben
              echo '<h2 class="toggler">', $str_character_1, '</h2>';
              // Start für den DIV-Container um die Einträge
              // mit dem gleichen Anfangsbuchstaben ausgeben
              echo '<div class="element">';
            }
          ?>
<h3 class="sw-h3"><we:field type="text" name="Stichwort"/></h3>
<ul class="sw-ul">
<we:ifFieldNotEmpty match="Link1"><li><we:field type="link" name="Link1"/></li></we:ifFieldNotEmpty>
</ul>

<?php /*  Beim letzten Duchlauf (Eintrag) das Ende von '<div class="element">' ausgeben */ ?>
<we:ifPosition type="listview" position="last"></div></we:ifPosition>
         <?php
            // Es werden zwei Variablen benötigt, um den Buchstabenwechsel zu erkennen.
            $str_character_2 = $str_character_1;
          ?>
        </we:repeat>
      </div>
    </we:listview>

Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 38 Gäste