Kategorie alphabetisch ordnen

  • Hallo,

    ich möchte eine einzelnen kategorie anlegen und in diese kommen ein paar Tausend Beiträge rein.

    Diese Beiträge würde ich gerne auf der "Startseite" der Kategorie durchsuchbar machen und nach Alphabet ordnen.

    Also Pratkisch eine Suche einbauen, die sich nur auf diese Kategorie bezieht (besser noch wäre wählbar, in dieser Kategorie suchen oder die ganze Domain durchsuchen, die normalen Suchfunktionen von Wordpress müssen aber natürlich erhalten bleiben) und dann will ich noch A B C D E.... abbilden und wenn man auf a Klickt, kommen alle mit A etc.

    Jemand eine Idee ?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Alphabetische Sortierung, am Beispiel einer einzelnen Kategorie:
    Alphabetizing Posts « WordPress Codex

    Dann in das Kategorie-Template das normale Suchfeld einbauen, wie es auch in der Sidebar ist, und um ein hidden-Feld erweitern:
    <input type="hidden" name="cat" value="1" />
    Statt der 1 natürlich die Kategorie-ID angeben. So sucht WP nur in dieser einen Kategorie.

    Zu A B C... gabs hier mal einen Thread, aber ohne Lösung, wenn ich mich richtig erinnere. Das geht also in WP nicht so einfach.

  • Ich muss dann wohl ein eigenes Template für diese Kategorie erstellen oder ?

    Wenn ja, bitte mal ganz kurz wie.

    Also ich brauche eine Übersichtsseite, wo man reinschreibt, hier könnt Ihr durchsuchen, das suchfeld einbaut und das Alphabate.

    Dann die einzelenen Beiträge und eine Seite wo man alle ansehen kann.

  • Jetzt hast Du mich missverstanden.

    Das ist schon klar, das man für die einzelnen Buchstaben dann ein einzelnen Template machen muss.

    Ich meinte für die Startseite der Kategorie, wo ich parttiksch die Suche einbaue.

    Und wenn ich es richtig verstanden habe, dann müsste ich jetzt 26 subkategorien (Soviel Buchstaben hat das Alphabet nunmal) zur Hauptkategorie anlegen und deren ID´s dann mit dem von Dir verlinkten Tool verwenden und für jeden Buchstaben eine eigene Page (Template) erstellen. Dann lege ich in meiner "Startseite" der Oberkategorie A,B,C etc. an und verlinke den jeweiligen Buchstaben mit der dazugehörigen Templateseite. Richtig ?

    Ergänzung: Ich sehe gerade, er kann nur eine Liste erstellen, offenbar keine einzelnen Buchstaben ausgeben.

    Ich bräuchte ein script: Alle Postings aus der Kategorie XY mit dem Anfangsbuchstaben "A"
    unsw.

    Kann man das vorliegende evtl. erweitern ?

    Einmal editiert, zuletzt von stevie99 (18. November 2007 um 14:52)

  • Ahja. Na gut. Also ich nehm mal an, du willst folgende Kategoriestuktur:

    Alphabet-Startseite
    - A
    - B
    - ...
    - Z

    Wobei "Alphabet-Startseite" und "A"-"Z" jeweils Kategorien sind, richtig?

    Auf diese kommt dann das Alphabet als Links (von Hand eingetragen - musst du ja eh, da die Kategorie-Templates ja auch von Hand angelegt werden müssen)

    Und darüber das Suchfeld, wie oben schon angedeutet. Dieses Kategorietemplate würde dann keinen Loop enthalten.

    Nehmen wir an, die Startkategorie hätte die ID 1 und die Alphabet-Kategorien die IDs 2-27. Dann legst du eine category-1.php in deinem Theme an (nur der Hauptteil, Header usw. je nach Belieben):

    Und die category-2.php bis category-27.php so:

    PHP
    <div id="content" class="narrowcolumn">
    <?php query_posts($query_string . '&orderby=title&order=asc'); ?>
    <?php while (have_posts()) : the_post(); ?>
    [I][COLOR="Gray"][...][/COLOR][/I]
    <?php endwhile; ?>
    </div>


    Wie der Loop auszusehen hat hab ich dir bereits nebenan erklärt, das spar ich mir mal hier.


    Tipp: Da die category-2.php bis category-27.php alle gleich aussehen, kannst du dir auch eine alphabetized-cat.php anlegen, die diesen Inhalt hat, und in die category-2.php bis category-27.php nur folgendes:

    PHP
    <?php include 'alphabetized-cat.php'; ?>


    So musst du nicht alle 26 Dateien bei Änderungen bearbeiten, sondern nur die alphabetized-cat.php ändern.

  • Super dass Du es geschrieben hast (sehr nett), aber so hätte ich es jetzt auch gemacht.

    Frage nur: Was gibt der denn dann dabei aus ?

    Gibt er denn tatsächlich bei ID-2 auch nur "A" aus ?

    In dem Tool das Du verlinkt hast, steht nämlich, dass er nur eine Liste des Alphabets nach macht

    P.S.: Wieso steht im Link eigentlich "PHP get echo ?"

    Einmal editiert, zuletzt von stevie99 (18. November 2007 um 15:27)

  • Super dass Du es geschrieben hast (sehr nett), aber so hätte ich es jetzt auch gemacht.


    :-D

    Zitat

    Frage nur: Was gibt der denn dann dabei aus ?

    Gibt er denn tatsächlich bei ID-2 auch nur "A" aus ?

    In dem Tool das Du verlinkt hast, steht nämlich, dass er nur eine Liste des Alphabets nach macht


    Auf der Startseite gibt er das Suchformular aus, sowie eine Alphabet-Liste die jeweils auf die Unterkategorien verlinkt. Es werden hier keine Beiträge ausgegeben (es ist ja auch kein Loop vorhanden).
    Beim Posten muss dann natürlich drauf geachtet werden, dass ein Beitrag zum Theme "Birnen" auch in die Unterkategorie "B" gepostet wird.

    Zitat

    P.S.: Wieso steht im Link eigentlich "PHP get echo ?"


    Du meinst das get_category_link() ? Aus der Doku: "Returns the correct url for a given Category ID." Liefert dir also die Kategorie-URL.


    Zitat

    Wenn ich noch kein Alphabet eingetragen habe, dann muss man in der Datei auch noch nichts sehen oder ? Korrekt?


    Ja.


    Zitat

    Verlinkung ganz normal über /kategorie-A (zum beispiel oder ?


    siehe get_category_link().


    Nachtrag: <?php query_posts($query_string . '&orderby=title&order=asc'); ?> in einem Kategorietemplate bewirkt, dass die Auflistung der Beiträge in dieser Kategorie aufsteigend alphabetisch erfolgt.

  • Zuerst einmal vielen vielen Dank, lieber Marx.

    Es klappt wunderbar !

    Frage noch

    Er zeigt im Link hetzt /category/kuenstlerdatenbank "Category mit an.

    Das macht er bei meinen anderen nicht und soll er auch nicht tun.
    Wie kann ich das ändern ?

    Und noch etwas:

    ich habe jetzt unter "A" ein Posting angegeben.


    Er zeigt aber nichts an, wenn ich auf "A" gehe.

    Die Codes sind so:

    Category-33.php (Das ist die Übersichtsseite)

    <?php get_header();?>



    <div id="content" class="narrowcolumn">
    <form id="alphasearch" action="" method="get">
    <fieldset>
    <input name="s" type="text" value="<?php the_search_query(); ?>" />
    <input type="hidden" name="cat" value="33" />
    <input type="submit" value="Suchen" />
    </fieldset>
    </form>
    <ul id="alphalist">
    <li><a href="<?php echo get_category_link(34); ?>">A</a></li>
    <li><a href="<?php echo get_category_link(35); ?>">B</a></li>
    <li><a href="<?php echo get_category_link(36); ?>">C</a></li>
    <li><a href="<?php echo get_category_link(37); ?>">D</a></li>
    <li><a href="<?php echo get_category_link(38); ?>">E</a></li>
    <li><a href="<?php echo get_category_link(39); ?>">F</a></li>
    <li><a href="<?php echo get_category_link(40); ?>">G</a></li>
    <li><a href="<?php echo get_category_link(41); ?>">H</a></li>
    <li><a href="<?php echo get_category_link(42); ?>">I</a></li>
    <li><a href="<?php echo get_category_link(43); ?>">J</a></li>
    <li><a href="<?php echo get_category_link(44); ?>">K</a></li>
    <li><a href="<?php echo get_category_link(45); ?>">L</a></li>
    <li><a href="<?php echo get_category_link(46); ?>">M</a></li>
    <li><a href="<?php echo get_category_link(47); ?>">N</a></li>
    <li><a href="<?php echo get_category_link(48); ?>">O</a></li>
    <li><a href="<?php echo get_category_link(49); ?>">P</a></li>
    <li><a href="<?php echo get_category_link(50); ?>">Q</a></li>
    <li><a href="<?php echo get_category_link(51); ?>">R</a></li>
    <li><a href="<?php echo get_category_link(52); ?>">S</a></li>
    <li><a href="<?php echo get_category_link(53); ?>">T</a></li>
    <li><a href="<?php echo get_category_link(54); ?>">U</a></li>
    <li><a href="<?php echo get_category_link(55); ?>">V</a></li>
    <li><a href="<?php echo get_category_link(56); ?>">W</a></li>
    <li><a href="<?php echo get_category_link(57); ?>">X</a></li>
    <li><a href="<?php echo get_category_link(58); ?>">Y</a></li>
    <li><a href="<?php echo get_category_link(59); ?>">Z</a></li>
    <li><a href="<?php echo get_category_link(60); ?>">*</a></li>
    </ul>
    </div>

    <?php get_sidebar(); ?>

    <?php get_footer(); ?>


    und die Category-34 (das ist "A"):

    <?php get_header();?>



    <div id="content" class="narrowcolumn">
    <?php query_posts($query_string . '&orderby=title&order=asc'); ?>
    <?php while (have_posts()) : the_post(); ?>
    <?php endwhile; ?>
    </div>

    <?php get_sidebar(); ?>

    <?php get_footer(); ?>

    Einmal editiert, zuletzt von stevie99 (18. November 2007 um 16:51)

  • Zuerst einmal vielen vielen Dank, lieber Marx.

    Kleines 'm', großes 'X' bitte! Sonst denkt noch einer, ich heiße "Karl" mit Vornamen. ;-)

    Zitat

    Es klappt wunderbar !


    Sehr schön!


    Zitat

    Er zeigt im Link hetzt /category/kuenstlerdatenbank "Category mit an.

    Das macht er bei meinen anderen nicht und soll er auch nicht tun.
    Wie kann ich das ändern ?


    Backend > Einstellungen > Permalinks
    Da unten gibts "Kategorie-Basis". Dort kannst du was andres eintragen. Ich hab da "/." drin stehen, dann würde der Link so aussehen: "/kuenstlerdatenbank" (manche ältere Browser machen daraus zwar ein "/./kuenstlerdatenbank", aber das stört höchstens optisch ein wenig, auch die zeigen die Seiten korrekt an).

    Zitat

    Er zeigt aber nichts an, wenn ich auf "A" gehe.


    Logisch. Guck dir mal an, was bei dir innerhalb des Loops, also in der while-Schleife passiert:

    PHP
    <div id="content" class="narrowcolumn">
    <?php query_posts($query_string . '&orderby=title&order=asc'); ?>
    <?php while (have_posts()) : the_post(); ?>
    <?php endwhile; ?>
    </div>


    Richtig. Gar nix. ;-) Da müssen jetzt noch die gewünschten Template Tags rein, also "the_title()", "the_content()" usw. Deswegen ja in meinem Code oben die Auslassungszeichen.

    [SIZE="1"]PS: Du hast mal wieder die Code-Tags bei deinen Quelltexten vergessen. ;-)[/SIZE]

  • Ok, alles verstanden.

    In der Kategoriebasis steht bei mir jedoch im Moment gar nichts drin.

    Komisch ist auch, dass es in anderen kategorien einwandfrei hinhaut.

    Denkst Du nicht, das hat einen anderen Grund ?

    Denn zum Beispiel die Kategorie News zeigt er /news/Beitrag an.

    Das was Du vorgeschlagen hast mache ich mal lieber nicht, denn das würde zu falschen links führen, die User dann am ende auch noch falsch verlinken.

    ein // darf nicht entstehene. Wir sind sehr auf Suchmaschinen angewiesen.

    Wieso macht er denn eigentlich das in den anderen kategorien richtig und nur in der nicht ?

    Ach ja und:

    <?php get_header();?>



    <div id="content" class="narrowcolumn">
    <?php query_posts($query_string . '&orderby=title&order=asc'); ?>
    <?php while (have_posts()) : the_post(); ?>
    <div class="cats">
    <?php while (have_posts()) : the_post(); ?>
    <div class="entry">
    <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
    <?php the_content_limit(400, "mehr..."); ?>

    </div><!--entry end-->

    <?php endwhile; ?>
    </div></div>

    <?php get_sidebar(); ?>

    <?php get_footer(); ?>

    Was ist falsch ?

    Einmal editiert, zuletzt von stevie99 (18. November 2007 um 18:07)

  • In der Kategoriebasis steht bei mir jedoch im Moment gar nichts drin.


    Dann wird der Standard verwendet, steht doch da. Im Normalfall von WP also /category


    Zitat

    Komisch ist auch, dass es in anderen kategorien einwandfrei hinhaut.

    Echte Kategorien-Übersicht? Oder Seitentemplates?


    Zitat

    Denkst Du nicht, das hat einen anderen Grund ?


    Eher nicht.


    Zitat

    Das was Du vorgeschlagen hast mache ich mal lieber nicht, denn das würde zu falschen links führen, die User dann am ende auch noch falsch verlinken.

    ein // darf nicht entstehene. Wir sind sehr auf Suchmaschinen angewiesen.


    Ich bin mir zwar nicht 100% sicher (kann man in Bezig auf SuMas nie sein), aber ich vermute mal ganz stark, dass das keinerlei Einfluss auf die SuMas hat, da die URLs äquivalent sind.



    1. Da fehlen Code-Tags.
    2. Da ist ein doppelter Loop (d.h. 2 ineinander verschachtelte while-Schleifen - wobei die 2. nichtmal geschlossen wird). Entferne das 2. Auftreten von <?php while (have_posts()) : the_post(); ?> Ich dachte du hättest die Grundstrukturen von WP langsam verstanden?

  • ja...denke ich auch :)
    Habe einfach nicht aufgepasst.

    Ja echte Kategorien (alle anderen) werden ohne categroy angezeigt, also mit ihrem korrektem Namen.

    Darum geht es ja. die Kategorie soll ja drin sethen, nur eben ihr korrrekter Name.

    Nochmal zur Korrektur:

    ok so ?

    <?php get_header();?>



    <div id="content" class="narrowcolumn">
    <?php query_posts($query_string . '&orderby=title&order=asc'); ?>
    <?php while (have_posts()) : the_post(); ?>
    <div class="cats">
    <div class="entry">
    <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
    <?php the_content_limit(400, "mehr..."); ?>

    </div><!--entry end-->

    <?php endwhile; ?>
    </div></div>

    <?php get_sidebar(); ?>

    <?php get_footer(); ?>

    Einmal editiert, zuletzt von stevie99 (18. November 2007 um 18:50)

  • Ja echte Kategorien (alle anderen) werden ohne categroy angezeigt, also mit ihrem korrektem Namen.

    Darum geht es ja. die Kategorie soll ja drin sethen, nur eben ihr korrrekter Name.


    Merkwürdig...


    Zitat

    Nochmal zur Korrektur:

    ok so ?


    Bis auf die fehlenden Code-Tags... ja. Nur eine Kleinigkeit:


    1 DIV außerhalb des Loops geöffnet, und 2 innerhalb. Aber nur 1 innerhalb geschlossen, 2 außerhalb. Siehe rot markierte Zeile (hier schon korrigiert).

  • Ich habe die Problematik nun mit dem Plugin Top-Level-Cats bereinigt. Problem nur. Klicke ich auf eine Kategorie, gibt es nen 404 Fehler. Sprich, er findet dann die Seitze nicht.

    Müsste Dir MarX bei Deiner Version auch so gegangen sein. Was tun ?

  • So wie ich es oben beschrieben habe, geht es bei mir. Zu sehen hier:
    SV Fronberg Schreiersgrün e.V.
    Wie gesagt, ich hab nur die Kategoriebasis geändert. Ich setze kein Plugin dafür ein.

    Guck dir ruhig auch mal den Quelltext der Sidebar an, und was die verschiedenen Browser draus machen.

    Nachtrag: Es könnte evtl. Probleme geben, wenn sich danach URLs überschneiden, z.B. weil eine Seite u. eine Kategorie gleich heißen und somit die gleiche URL erhalten!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!