1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Längenbegrenzung von Kommentaren

Dieses Thema im Forum "Allgemeines" wurde erstellt von maksi, 22. September 2008.

  1. maksi

    maksi Member

    Registriert seit:
    11. Februar 2007
    Beiträge:
    9
    Zustimmungen:
    0
    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
     
  2. Karbrüggen

    Karbrüggen Well-Known Member

    Registriert seit:
    3. Dezember 2005
    Beiträge:
    160
    Zustimmungen:
    0
    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 max-height des Kommentarbereiches auf die gewünschte maximale Höhe, und
    • verpasse dem Kommentarfeldbereich ein passendes overflow-Verhalten (auch CSS)
    Die andere Möglichkeit wäre nur die ersten x 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
     
  3. maksi

    maksi Member

    Registriert seit:
    11. Februar 2007
    Beiträge:
    9
    Zustimmungen:
    0
    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
     
  4. Karbrüggen

    Karbrüggen Well-Known Member

    Registriert seit:
    3. Dezember 2005
    Beiträge:
    160
    Zustimmungen:
    0
    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 header.php vornehmen, am besten direkt vor dem Aufruf von wp_head():
      PHP:
      Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    2. Hier bietet sich an die automatisch vergebene (naja, falls der Theme-Autor daran gedacht hat) Kommentar-ID zu benutzen (comments.php): Irgendwo taucht (meist bei Listen-Elementen) die Passage "id="comment-<?php comment_ID() ?>"" 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:
      Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
      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 longcomment verpasse, also etwa so:
      PHP:
      Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
      Das Vereinfacht denke ich die Arbeit mit jQuery nochmal, da ich jetzt mit...
      Code:
      Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
      ... 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... ;)
     
    #4 Karbrüggen, 22. September 2008
    Zuletzt bearbeitet: 22. September 2008
  5. maksi

    maksi Member

    Registriert seit:
    11. Februar 2007
    Beiträge:
    9
    Zustimmungen:
    0
    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
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden