Längenbegrenzung von Kommentaren

  • Ich möchte gerne mal wissen, ob die Möglichkeit besteht, Kommentare (und evtl. auch Beiträge) in ihrer Länge zu begrenzen und falls ja, wie man das bewerkstelligt. Manchmal wäre das nämlich wirklich nötig, wenn man, wie ich, zwei, drei sehr "redefreudige" Schreiberlinge hat :mrgreen:

    Viele Grüße,
    Maksi

    • 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

  • Ui, damit würdest du aber den Kommentarfluss deiner zwei, drei sehr redefreudigen Schreiberlingen massivst einschränken, ja, ich würde sogar fast soweit gehen und sagen, du würdest sie zensieren (was mir aber die Definition von Zensur ein wenig zunichte macht ;-))

    Wenn es aber nur dein Ziel ist, die Kommatarfelder auf eine maximale Größe festzulegen, empfiehlt sich folgender Ansatz vielleicht:

    • definere die CSS-Eigenschaft [FONT=Courier New]max-height[/FONT] des Kommentarbereiches auf die gewünschte maximale Höhe, und
    • verpasse dem Kommentarfeldbereich ein passendes [FONT=Courier New]overflow[/FONT]-Verhalten (auch CSS)

    Die andere Möglichkeit wäre nur die ersten [FONT=Times New Roman]x[/FONT] Zeichen anzeigen zu lassen, dahinter und dahinter ein "mehr..."-Link zu setzen, dessen Klick darauf den vollen Kommentartext erscheinen lässt. Idealerweise geschieht dies unaufdringlich durch Javascript, und alle sind zufrieden ;-)

    Das soweit als Ansätze, bei den beiden Vorschlägen würde wir (ich nehme mir mal raus für alle hier sprechen zu dürfen) dir sicher gerne weiterhelfen. Bei meiner Interpretation deines Vorschlags werde ich mich aber vornehm zurückhalten ;-)

    LG
    Dominik


  • Die andere Möglichkeit wäre nur die ersten [FONT=Times New Roman]x[/FONT] Zeichen anzeigen zu lassen, dahinter und dahinter ein "mehr..."-Link zu setzen, dessen Klick darauf den vollen Kommentartext erscheinen lässt. Idealerweise geschieht dies unaufdringlich durch Javascript, und alle sind zufrieden ;-)

    Hallo Dominik,

    danke für deine Antwort. Zensieren möchte ich natürlich niemanden, aber es wäre schon gut, wenn ich den Redefluss ein wenig in vernünftige Bahnen lenken könnte. Z. B. wie mit dem von dir genannten "mehr ..." in den Kommentaren (also genauso wie in den Beiträgen).

    Es wäre also sehr nett von dir, wenn du mir dabei "auf die Sprünge" helfen könntest :-)

    LG,
    Maksi

  • Klar helfe ich. Gib mir ne ~Stunde Zeit, dann geb ich dir ne kleine Ausarbeitung...

    --- eine Stunde später: ---

    (Anm.: "mit " und "ohne" Javascript bedeutet im Folgenden "aktiviertes" bzw. "deaktiviertes" Javascript, dto. für CSS)

    Die Idee, die ich verfolgen würde sähe so aus:

    • Besucher ohne Javascript sollen von vornherein den vollen Kommentar lesen können.
    • Besucher mit Javascript bekommen zunächst einen Teaser.

    Praktische Realisierungen wären entweder

    • sowohl den Teaser als auch den Kommentar auszuliefern (also praktisch doppelt)
      • der Teaser wird zunächst versteckt und der volle Kommentar angezeigt; wenn Javascript aktiv ist, wird die Sichtbarkeit vertauscht und erst ein Klick auf "mehr" gibt wieder den vollen Kommentar preis
        • Vorteil: relativ wenig JS-Code
        • Nachteil: Besucher ohne CSS bekommen zweimal den selben Text angezeigt (KO-Kriterium)
    • oder aber nur den vollen Kommentar auszugeben und diesen per Javascript nach dem Laden zu "verstümmeln".
      • Vorteil: kein doppelter Kommentar
      • Nachteil: relativ aufwändiger JS-Code, u.U. lange Bearbeitung auf langsameren Rechnern
    • oder aber es wird nur der Teaser ausgeliefert, und der Kommentar wird dynamisch nachgeladen
      • Vorteil: relativ einfacher JS-Code
      • Nachteil: schwierige Realisierung des PHP-Codes, insbesondere für Besucher ohne Javascript, da der Kommatar (alleinstehend, denn der Klick auf "mehr" führt ja zu einer eigenen Seite) u.U. aus dem Zusammenhang fällt...

    Zwischenfazit: Punkt 1 entfällt wegen dem KO-Kriterium und bei Punkt drei scheue ich mich vor der Arbeit (Was nicht heißen soll, dass es unmöglich ist. Aber in den Innereien des WP-kerns nach der an der benötigten Stelle nicht dokumentierten API zu fahnden ist WIRKLICH mühselig...!).

    Bleibt also noch Punkt 2. Zu dessen Umsetzung sind folgende Vorraussetzung notwendig:

    1. Um den JS-Code so einfach und funktional wie möglich zu halten sollten entsprechende Bibliotheken eingebunden werden. Hier bietet sich jQuery an, da es bereits in WP integriert ist.
    2. Die einzelnen Kommentare müssen Identifizierbar sein, also über eine eigene ID vefügen (was eigentlich der Fall sein sollte, es sei denn der Theme-Designer war sich dieser Funtionalität nicht bewusst...)
    3. Es muss eine JS-Funktion geschrieben werden, die überlange Kommentare verkürzt, aber das Original zur Rekonstruktion speichert und einen "Link" zur Funktion setzt, die
    4. den ursprünglichen Kommentar wiederherstellt.

    Erläuterungen:

    1. Wenn du noch kein Plugin oder Widget nutzt, dass eigenständig jQuery einbindet kannst du dies selbst in der [FONT=Courier New]header.php[/FONT] vornehmen, am besten direkt vor dem Aufruf von [FONT=Courier New]wp_head()[/FONT]:

      PHP
      ...
      <script type="text/javascript" src="<?php bloginfo('url'); ?>/wp-includes/js/jquery/jquery.js"></script>
      <?php wp_head(); ?>
      ...
    2. Hier bietet sich an die automatisch vergebene (naja, falls der Theme-Autor daran gedacht hat) Kommentar-ID zu benutzen ([FONT=Courier New]comments.php[/FONT]): Irgendwo taucht (meist bei Listen-Elementen) die Passage "[FONT=Courier New]id="comment-<?php comment_ID() ?>"[/FONT]" auf. Wenn ja, dann ist alles in Ordnung. Was jetzt noch interessiert ist die nachfolgende Struktur des Kommentares, um mit jQuery daranzukommen. Im Fall des Default-Themes sähe der Aufruf für Kommentar Nr. 4711 so aus:
      Code
      $(document).ready(function(){
        $('#comment-4711 p'); // wichtige Stelle!
      });

      Das Objekt in der markierten Zeile hält nun alle Absätze, die der Kommentator abgesendet hat. Hieraus ergibt sich aber nun ein Problem, das eher zum nächsten Punkt gehört...

    3. Wie stelle ich fest, dass ein Kommentar zu lang ist?
      Am Einfachsten ist es, dass ich schon per PHP die Länge des Kommentares auswerte und dem ensprechenden Element meinetwegen die (bisher unbenutzte) Klasse [FONT=Courier New]longcomment[/FONT] verpasse, also etwa so:

      PHP
      $longcomment = count(get_comment_text()) > 140
        ? ' class="longcomment"'
        : '';
      <li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>"<?php echo $longcomment ?>>

      Das Vereinfacht denke ich die Arbeit mit jQuery nochmal, da ich jetzt mit...

      Code
      $(document).ready(function(){
        $('.longcomment').each(function(){
          //... jedem Kommentar...
        }
      });

      ... etwas machen kann, ihn z.B. kürzen.

    4. Diesre Punkt braucht kaum Erläuterung; das Original wird in einer Variable gespeichert und bei Bedarf wieder ausgelesen...

    Ich hoffe das ist fürs Erste Anregung genug. Diese Links würde ich dir noch ans Herz legen:

    LG
    Dominik

    Anmerkung: Ich habe eben noch im Codex das hier gefunden. Falls du darauf ausch gestoßen sein solltest: Lies nochmal den ersten praktischen Ansatz... ;-)


    Einmal editiert, zuletzt von Karbrüggen (22. September 2008 um 10:27)

  • UFF! Da muss ich mich jetzt erstmal in einer stillen Stunde rein vertiefen (was wahrscheinlich erst heute Abend möglich sein wird). Danke aber schon mal für deine Mühe. Ich werde auf jeden Fall berichten, ob es geklappt hat (oder ich mir das komplette Blog zerschossen habe *lach*).

    Viele Grüße,
    Maksi

Jetzt mitmachen!

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