Zum Inhalt springen

t3blog Bodytext in der Bloglist croppen

Erstellt am 18. September 2009 · 13 Antworten · letzte Antwort am 18. März 2014

Tags: Blog, Frage

rubio ·

Durch ###MORE### im Text wird eine Stelle markiert bis zu welcher der bodytext in der Bloglist angezeigt werden soll. Es folgt ein "more" link,der einen dann zur Single Ansicht führt. Alles soweit ok.

Aber ich stelle fest, dass dann der umschließende <p> tag des bodytextes nicht mehr da ist. Außerdem fehlt der darüberstehende <h3> tag samt headline. Hat jemand die gleiche Erfahrung gemacht? Weiß jemand, wie ich verhindern kann, dass die headline und der <p> tag erhalten bleiben?

Alternativ würde ich auch im Setup ein crop definieren, aber ich weiß nicht, wie ich das anstelle.
#angry#

meckpo ·

Hallo,

da ich mich auch gerade mit diesem Teil rumschlage kann ich dir ungefähr sagen: es geht nicht.
Ich sitze seit 2 Tagen dran, um irgendwelchen Kram einzustellen: Das meiste ist unflexibel, die richtige Stelle im TS findet man sowieso nicht, und Fehler in der Konzeption hat das Teil auch (z.B. ist die Mailfunktion für neue Kommentare völlig falsch programmiert).

"Gelöst" habe ich dein genanntes Problem jetzt so:

[globalVar = GP:tx_t3blog_pi1|blogList|showUid<1]
tt_content.text.20.stdWrap.crop = 500 | &nbsp;...&nbsp;[weiter] | 1
[global]
rubio ·

Noch ein Nachtrag: Habe Antwort von Snowflake bekommen. Das MORE soll in ein eigenes content element. Dann gibt es keine Probleme.

Ich verstehe allerdings nicht, wie das gemeint ist. Ich schreibe den Body-Text für einen Blog eintrag im RTE Fenster des plugins. Wie soll ich das MORE, was ja irgendwo in diesem Text steht, in ein eigenes Content-element packen...

Naja egal, die andere lösung gefällt mir eh besser.

cbatik ·

Hallo!

Ich greife das Thema nochmals auf: Die Lösung mit

[globalVar = GP:tx_t3blog_pi1|blogList|showUid<1]
tt_content.text.20.stdWrap.crop = 500 | &nbsp;...&nbsp;[weiter] | 1
[global]

funktioniert eigentlich problemlos, allerdings nur so lange nur ein Inhaltselement im Blog-Beitrag verwendet wird. Ich verwende zB einen Text, dann ein Plugin und dann wieder einen Text, das Crop betrifft aber nur das erste Inhaltselement.

Fällt Euch eine ähnliche Lösung ein, die den gesamten Inhalte des Blog-Beitrags nach zB 500 Zeichen abschneidet?

Danke, LG
Christoph

lisardo ·

Hallo,

das ###MORE### scheint mir eine "ich weiss nicht so recht, wie ich es programmieren soll"-Funktion 😃 Das ###MORE### mitten in einem Inhaltselement führt natürlich dazu, dass die HTML-Container um dieses Inhaltelement zerbrochen sind. Was über die Codebereinigung von TYPO3 dann dazu führt, dass der <p>-Tag um das Element fehlt.

Logisch.

Das ###MORE### in eigenes Inhalteslement zu legen geht im Gegensatz zu der Auskunft von Snowflake nur dann, wenn mindestens noch ein Zeichen vor dem ###MORE### steht. Ausserdem ist es nicht möglich, ein eigenes Inhaltselement dafür zu erstellen, da offenbar nur TEXT und TEXT mit Bild überprüft wird.

Der Workaround: ein neues Inhaltselement anlegen (TEXT) und darin zuerst ein Leerzeichen gefolgt von ###MORE### - das geht zwar, ergibt aber in der Single-Darstellung einen Absatz.

Eine sinnvolle Lösung wäre eine Grundeinstellung, nach wieviel Inhaltselementen das more kommen soll (0,1,2, ...) oder ein eigenes Inhaltselement zu installieren, das eben den Umbrauch erstellt. Interessanterweise war das zu Anfang so gelöst. Da ging es über das mittlerweile abgeschaffte Inhaltselement HR.

Gruß
Peter
Lisardo Multimedia

lisardo ·

Eher ein Bug.

Ich habe eben den Quelltext überprüft:
- es werden nur Contentelemente aus der DB überprüft und nur das Feld bodytext. also wie vermutet nur TEXT und TEXT mit BILD.
- es wird so geprüft:

$dividerInText = stripos($rowContent['bodytext'], '###MORE###');
if($dividerInText > 0 ) {
	$divider = true;
}

Leider liefert stripos aber auch dann 0, wenn ###MORE### an erster Stelle steht. Um wirklich zu überpfrüfen, ob ###MORE### vorkommt oder nicht, muss auf einen Boolschen Wert geprüft werden. Es müsste heissen:

if($dividerInText !== false ) {
	$divider = true;
}

Ich habe das mal testweise eingefügt, dann klappt es mit einem eigenen Inhaltselement bzw. mit einem zweiten Inhaltselement, wo das ###MORE### ganz am Anfang steht. Und das erste Inhaltselement hat ein <p> drum rum.

weiß jemand, wie man denen bugs sendet? Im Bugtracker ist t3blog ja nicht.

Gruß
Peter
Lisardo Multimedia

anderlk ·
meckpo schrieb

Hallo,

da ich mich auch gerade mit diesem Teil rumschlage kann ich dir ungefähr sagen: es geht nicht.
Ich sitze seit 2 Tagen dran, um irgendwelchen Kram einzustellen: Das meiste ist unflexibel, die richtige Stelle im TS findet man sowieso nicht, und Fehler in der Konzeption hat das Teil auch (z.B. ist die Mailfunktion für neue Kommentare völlig falsch programmiert).

"Gelöst" habe ich dein genanntes Problem jetzt so:

[globalVar = GP:tx_t3blog_pi1|blogList|showUid<1]
tt_content.text.20.stdWrap.crop = 500 |  ... [weiter] | 1
[global]

Hallo,

danke für das tolle TS, doch wie kriege ich es hin, den weiter Button anständig zu verlinken.

Ich verwende folgendes TS um den Link zu erzeugen:

          31 = COA
          31 {
            1 = LOAD_REGISTER
            1 {
              year {
                field = date
                strftime = %Y
              }
              month {
                field = date
                strftime = %m
              }
              day {
                field = date
                strftime = %d
              }
            }
            10 = TEXT
            10 {
              value = {$morelink}
              typolink {
                parameter.data = TSFE:id
                useCacheHash = 1
                additionalParams.dataWrap = &tx_t3blog_pi1[blogList][showUid]={field:uid}&tx_t3blog_pi1[blogList][year]={register:year}&tx_t3blog_pi1[blogList][month]={register:month}&tx_t3blog_pi1[blogList][day]={register:day}
              }
            }
            99 = RESTORE_REGISTER
          }

Erzeugt wird folgender Link

...diskussionsforum/blog-post////bleibt-neunburg-bei-der-entwicklung-zur-nachhaltigen-energiewirtschaft-in-der-steinzeit.html

Er lädt das Datum nicht in den Link.

Gruß Anderl

Unbekannter Benutzer ·

Liebe Leute,

hergottnochmal, ich habe mich ziemlich reingekniet.

In Kürze:
1) Das croppen mit ###MORE### ist ein Krampf und führt immer wieder zu unvorhersehbaren (HTML-)Ergebnissen - unsauber implementiert im PHP-Code. Es sind zwei Haken drin: Wird der Marker sauber gefunden und identifiziert, und werden bei der Trennung der Content-Blöcke die HTML-Tags sauber geöffnet und geschlossen.
2) das croppen mit Bedingung hat den Haken, dass bei Zutreffen der Bedingung ALLE tt_content-Blöcke auf der Seite gecroppt werden - bei mehreren Content-Blöcken pro Post also jeder Block extra, und auch tt_content, der gar nicht zum Blog gehört, zB in anderen Spalten.

Am praktikabelsten erscheint mir folgende Lösung:

1) eine Codezeile, die in der Listenansicht nur das ERSTE Inhaltselement des Posts ausgibt.
2) eine Codewurst, die einen [more]-Button dranzaubert
3) die Blog-Regel, dass das ERSTE Inhaltselement als Teaser vorne steht, alle anderen dann hinten dran.

und natürlich...
4) dass bitte snowflake sich (bittebittedanke) was g'scheites überlegt - ich bin kein Programmierer.

Hier ist eine Übersicht mit codes und links zu bug reports, Codes und mehr:

#117678
*schwitz fluch* claus http://www.clausfaber.net