Ergebnis 1 bis 7 von 7

Thema: Artikelteaser: "Weiterlesen"-Link nicht in eigener Zeile

  1. #1
    Contao-Nutzer
    Registriert seit
    25.08.2009.
    Beiträge
    70

    Standard Artikelteaser: "Weiterlesen"-Link nicht in eigener Zeile

    Hallo,

    ich habe das Template ce_teaser abgeändert. Da ich von PHP gerade mal ein Grundverständnis habe, bitte ich die PHP-Cracks unter euch, mal meine Lösung anzusehen. Stimmt das alles so? Hier die Aufgabe:

    Standardmäßig steht bei einem Artikelteaser der "Weiterlesen"-Link in einer eigenen Zeile nach dem Teasertext. Also:

    text text text text
    text text.
    Weiterlesen ...

    Nun wollte ich die Frontend-Ausgabe so verändern, dass der "Weiterlesen"-Link nicht in einer eigenen Zeile nach dem Teasertext steht, sondern gleich im Anschluss an das letzte Teaser-Wort (bzw. das Satzzeichen). Also so:

    text text text text
    text text. Weiterlesen ...

    In dem Template ce_teaser ist folgende Zeile für die Textausgabe zuständig:
    PHP-Code:
    <?php echo $this->text?> <a href="<?php echo $this->href?>" class="more"><?php echo $this->more?></a>
    Und als HTML ausgegeben:
    HTML-Code:
    <p>text text text text text text.</p>
    <a href="..." class="more">Weiterlesen ...</a>
    Der ungewünschte Zeilenumbruch entsteht also, weil der Zeichenstring aus $this->text mit einem </p>-Tag abgeschlossen wird. Mein erster Ansatz war, dieses </p>-Tag zu entfernen bzw. durch ein Leerzeichen zu ersetzen. Der abschließende </p>-Tag muss dann stattdessen hinter dem Link stehen:
    PHP-Code:
    <?php echo str_replace("</p>"," ",$this->text); ?> <a href="<?php echo $this->href?>" class="more"><?php echo $this->more?></a></p>
    Das funktioniert wohl auch, wenn es im Teasertext nur einen Absatz gibt. Bei mehreren Absätzen werden aber alle ersetzt, das ist ja nicht gewünscht.

    Stattdessen habe ich nun den ausgegebenen Teaser-String um die letzten vier Zeichen gekürzt. Damit wird tatsächlich nur das letzte </p>-Tag der letzten Textzeile entfernt. Die geänderte Zeile im PHP-Code sieht nun so aus:
    PHP-Code:
    <?php echo substr($this->text0strlen($this->text)-4); ?> <a href="<?php echo $this->href?>" class="more"><?php echo $this->more?></a></p>
    Und in HTML:
    HTML-Code:
    <p>text text text text text text. <a href="..." class="more">Weiterlesen ...</a></p>
    Das Ergebnis ist also genau so, wie ich es mir gewünscht habe. Trotzdem noch einmal die Frage an alle, die sich mit PHP besser auskennen als ich: Ist das eine richtige und saubere Lösung? Oder ginge es sogar noch viel einfacher?

    Besten Dank,
    der Graf
    Geändert von Graf Typo (22.11.2009 um 15:09 Uhr)

  2. #2
    Contao-Urgestein Avatar von Sebastian
    Registriert seit
    19.06.2009.
    Ort
    Stuttgart
    Beiträge
    3.361

    Standard

    HI

    du könntest auch einfach per CSS die beiden Elemente floaten.

    Sebastian
    Ich arbeite beim Linux-Systemhaus ETES in Stuttgart

  3. #3
    Contao-Nutzer
    Registriert seit
    25.08.2009.
    Beiträge
    70

    Standard

    Hallo Sebastian,

    wie würde das genau aussehen? Bei einem Float hängt sich doch der Link nicht an das letzte Wort eines (mehrzeiligen) Absatzes.

    Gruß,
    der Graf

  4. #4
    Contao-Urgestein Avatar von Sebastian
    Registriert seit
    19.06.2009.
    Ort
    Stuttgart
    Beiträge
    3.361

    Standard

    HI

    zumindest sollte das mit display:inline oder display:inline-block funktionieren, bei Floats bin ich mir doch nicht so sicher.

    Sebastian
    Ich arbeite beim Linux-Systemhaus ETES in Stuttgart

  5. #5
    Contao-Nutzer
    Registriert seit
    25.08.2009.
    Beiträge
    70

    Standard

    Hallo nochmal,

    ich probiere gerne alles mal aus, aber auch ein display: inline bringt mir doch nichts, wenn der Absatz vorher mit einem schließenden </p>-Tag beendet wurde und der Link gar nicht innerhalb des Absatzes steht, oder? Und ein Link ist per Default ohnehin ein Inline-Element, dachte ich.

    der Graf
    Geändert von Graf Typo (22.11.2009 um 16:56 Uhr)

  6. #6
    Contao-Urgestein Avatar von Sebastian
    Registriert seit
    19.06.2009.
    Ort
    Stuttgart
    Beiträge
    3.361

    Standard

    HI

    du must also logischerweise dem Absatz display:inline mitgeben. Oder eben das Template ändern (was ich schöner finde).

    Sebastian
    Ich arbeite beim Linux-Systemhaus ETES in Stuttgart

  7. #7
    Contao-Nutzer
    Registriert seit
    20.05.2010.
    Beiträge
    74

    Standard

    Ich möchte auch das "Weiterlesen..." in die letzte Zeile rüberbekommen. Irgend jemand ne Kurzanleitung für nen Noob parat? Falls über CSS bitte den Selektor mit angeben...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Artikelteaser: wie mache ich anstatt "Weiterlesen ..." ein Bild?
    Von Katze75 im Forum Layout / Templates / Holy Grail
    Antworten: 2
    Letzter Beitrag: 21.10.2010, 10:08
  2. "Weiterlesen..."-Link modifizieren
    Von Yann im Forum Layout / Templates / Holy Grail
    Antworten: 5
    Letzter Beitrag: 14.09.2010, 16:15
  3. "Weiterlesen" / Detailseite geht nicht
    Von Summi im Forum Nachrichten/Events/FAQ
    Antworten: 5
    Letzter Beitrag: 13.07.2010, 12:50
  4. Problem mit Teaser-Link "Weiterlesen"
    Von xtg im Forum Allgemeine Inhaltselemente
    Antworten: 0
    Letzter Beitrag: 11.05.2010, 09:15
  5. Link "Weiterlesen.." nicht sichtbar
    Von dibo im Forum Sonstiges zu Contao
    Antworten: 0
    Letzter Beitrag: 12.08.2009, 18:13

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •