Nummerierung von Kommentaren ohne list-style

  • Hallo!

    Ich mal wieder.
    Ich rufe meine Kommentare per wp_list_comments wie folgt auf:

    Der Callback dazu ist (momentan noch):

    Nun möchte ich innerhalb dieses Callbacks eine Funktion/Variable, die mir die Kommentare durchnummeriert. Als ich das Ganze noch mit einer foreach-Schleife gelöst habe, ging es total einfach. Nur hier blick ich um's Verrecken nicht durch. Das ganze möchte ich aber ohne list-style lösen, da ich die Nummerierung gerne noch per CSS stylen kann.

    Einmal editiert, zuletzt von unwohltaeter (2. Mai 2010 um 14:29)

    • 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

  • Hi,

    dann schreib doch ziemlich oben in die style.css einfach:

    HTML
    li  { list-style-type:none;  }

    Das müßte doch alle automatischen Listenzeichen ausschalten, wenn ich dich richtig verstanden habe

  • Siehst du da irgendwo 'ne Liste (li)? Sind alles divs.
    Ich möchte z.b. vor "[COLOR=#000000]<div class="commenttext">" eine Nummerierung setzen können.
    [/COLOR]

  • okay, dann habe ich dich wohl falsch verstanden.

    Mit wp_list_comments wird ja üblicherweise eine ul oder ol ausgegeben und da haben die li's per default automatische Listenzeichen.

    Das jemand so einen Unfug macht und die Kommentare nicht in einer Liste ausgibt konnte ich mir zunächst nicht vorstellen. ;)

  • Wieso Unfug? Listen sind meiner Meinung nach schlechter zu gestalten als divs. Ich möchte die Kommentarnummer ja nicht unbedingt links bzw. rechts haben, sondern damit auch "spielen" können. Deswegen divs. :mrgreen:

    Und nebenbei: mit wp_list_comments kann man auch divs ausgeben lassen.

    Einmal editiert, zuletzt von unwohltaeter (2. Mai 2010 um 19:20)

  • Wieso Unfug? Listen sind meiner Meinung nach schlechter zu gestalten als divs.

    Mit der Meinung stehst du ziemlich alleine da.
    Listen lassen sich hervorragend gestalten, weil man es nur mit Blockelementen zu tun hat. :)

    Semantisch sind Kommentare jedenfalls eine Liste, weil es halt eine Aufzählung ist.
    Tante Google nimmt richtige Semantik jedenfalls wohlwollend zur Kenntnis. :mrgreen:

  • koennte mit einer php 'static' variablen gehen;
    (http://www.wellho.net/mouth/1380_Sta…les-in-PHP.html)

    in functions.php; an dieser stelle initialisieren:

    PHP
    function comments($comment, $args, $depth) {
       $GLOBALS['comment'] = $comment; 
       static $comment_number = 0; ?>



    und dann irgendwo hochzaehlen und ausgeben; zB hier:

    PHP
    <?php $comment_number++; echo $comment_number; ?> 
          <div class="commenttext"><?php comment_text() ?></div>
  • So funktionierts prima. Den Lösungsweg hatte ich sogar fast nur dieses static hatte ich nicht drin und deswegen hats nicht funktioniert.
    Danke für die Hilfe! :-D

    Würde mich aber dennoch interessieren wie ich das ganze genauso mit Listen hinbekommen könnte. ;)

    Einmal editiert, zuletzt von unwohltaeter (2. Mai 2010 um 20:16)

  • Vielen Dank für Deinen Code-Schnipsel, ich benutze ihn schon eine ganze Weile erfolgreich.

    Ein Problem ist dennoch aufgetreten als ein Artikel soviel Kommentare angehäuft hatte, das Wordpress die Kommentare auf zwei Seiten verteilte. Jetzt zählt der Code-Schnipsel auf jeder Seite neu, was für die Übersicht eher suboptimal ist.

    Lässt es sich einrichten, das er die Kommentare insgesamt hochzählt und entsprechend ausgibt?

  • so weit ich weiss, hat wordpress die daten fuer die kommentar-seite und die zahl der kommentare pro seite irgendwo; du koenntest versuchen, damit eine startnummer des zaehlers festzulegen.

    PHP
    <?php 
    //comments per page
    $c_per_page = (int) get_query_var('comments_per_page');
    //comments page
    $c_page = get_query_var('cpage');
          if ( !$c_page )
              $c_page = 1;
    ?>
  • Gut, soweit kann ich Dir folgen. Ich habe das mal versucht stümperhaft in meinen functions.php (wo der Kommentar-Callback steht) einzufügen, leider ohne wirklichen Erfolg. Die Variablen funktionieren, wenn ich mir $c_page ausgeben lassen, erscheint die richtige Seitenzahl. Kannst du mir beim Einbau in folgendes Callback-Script helfen?




  • das hier berechnet den 'offset' von der anzahl der kommentare pro kommentar-seite und der nummer der aktuellen kommentar-seite, und initialisiert den zaehler damit:

    PHP
    if($comment_number == 0) $comment_number += ($c_page-1)*$c_per_page;



    (funktioniert nicht mit verschachtelten kommentaren, da die einstellung im dashboard nur auf kommentare der obersten ebene wirkt)

  • Super! Vielen Dank für deine Hilfe und die Ausführungen, die zum Verständnis beigetragen haben. Da ich kein Freund von verschachtelten Kommentaren bin, stellt sich die Problematik nicht. ( noch nicht ;) )

  • Hallo,

    ich möchte meine Kommentare so sortieren, dass der neuste Kommentar oben steht, diesem aber jeweils die neuste (höchste) Kommentarnummer zugeordnet wird.

    Bisher nutze ich folgenden Aufruf in meiner Callback-Funktion:


    global $comment_counter;
    $comment_counter ++;
    echo $comment_counter;


    Damit werden die Kommentare aber nur fortlaufend durchnummeriert, egal ob man die neusten oder ältersten Kommentare oben anzeigen lässt.

    Kann man irgendwie von der maximalen Anzahl an Kommentaren runterzählen? Ich habe schon mit der "comments_number" herumgespielt, bin aber noch zu keinem brauchbaren Ergebnis gekommen.

    Hat jemand zufällig eine Idee? Danke + LG

Jetzt mitmachen!

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