[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Teaser_Modul verändern - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

Teaser_Modul verändern

18. Sep 2006, 13:46

wie soll ich das angehen?

Die Newsausgabe funktioniert schon super, nur ist es ja so, dass auf der News-seite die ersten 40 zeichen des Artikel stehen. Ich will aber einen kurtzen einleitenden Text. Also z.B. dass ich wenn ich eine News erstelle, dass ich dort dann die Blockelemente: Üerschrit, bild, kurtzer Text und langer text eingeben kann. Wenn ich auf "mehr lesen" klicke möchte ich dann den kangen text lesen. Wie mach ich das? also wie mach ich der teaser-ausgabe klar, welcher der kurtze, und welcher der lange text ist?

lg. SquirrelFrank

dancefan
Beiträge: 246
Registriert: 10. Feb 2006, 22:09
Wohnort: Nidderau

18. Sep 2006, 14:45

Meine Idee,
ein spezielles Modul für den Kurztext, das im Artikel nicht angezeigt wird ?
dancefan

Mensch lerne tanzen, sonst wissen die Engel im Himmel nichts mit dir anzufangen

Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

18. Sep 2006, 15:58

hab ich so gemacht... jetzt wird um den kurztext ein div mit einer spetiellen klasse geschrieben. Aber wie sage ich jetzt dem Teaser, dass nur dieser Teil ausgegeben werden soll? Weil das Ganze ist ja der "output"-block. Ich dachte mir, dass ich einfach im News-kuztext modul eine spetielle Zeichenkette einfüge (sowas wie "sgh4owgoe8io") und dann mittels explode den block in 2 bereiche zu teilen.

Den breich vor "sgh4owgoe8io", und der danach. Und dann einfach nur den ersten teil auszugeben...

wenn ich jetzt aber auf "mehr lesen" klicke, wird auch sgh4owgoe8io ausgegeben.

Ich könnte das jetzt einfach auskommentieren, aber gäbe es da auch eine schönere lösung?

Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

18. Sep 2006, 21:45

sodale... ein bisschen herumgebastelt, und folgendes ist rausgekommen:

http://squirrelfrank.sq.funpic.de/redaxo/

doch das problem besteht aus 2 Fehlern, die ich einfach nicht wegbekomme.

Zum einen wird beim ersten artikel das "alles lesen" ins <p>-Absatzelement reingezogen, und zweitens werden die DIVs falsch geschlossen. Wodurch der Content-berich schon oberhalb aufhört.

Warscheinlich liegt es daran, dass ich das ganze in eine Liste gebaut habe,... auf jedenfall schaffe ich es nicht, keinen Fehlr zu profuzieren

Ich werde den Teil des Teaser-outputs posten, den ich verändert habe, und die veränderten Stellen mit //SQUIRRELFRANK kennzeichnen.

Code: Alles auswählen

print '<ul class="teaser">'; //SQUIRRELFRANK
foreach ( $article_list as $ooarticle) {
	
	if ($ooarticle->isOnline(true)) {
		$articleId = $ooarticle->getId();

		$article = new article();
		$article->setArticleId( $articleId);
		$articleContent = $article->getArticle();
	
		// Leerzeichen entfernen am Anfang und Ende des Strings
		$articleContent = trim($articleContent);
		
		// Leerzeichen vor </p> einfuegen.
		// Sonst wird das letzte Wort eines Absatzes und das erste Wort 
		// des nachfolgenden Absatzes als ein Wort erkannt
		$articleContent = str_replace("</p>", " </p>", $articleContent);
		
		// Leerzeichen vor <br /> einfuegen.
		// Sonst wird das letzte Wort einer Zeile und das erste Wort 
		// des nachfolgenden Zeile als ein Wort erkannt
		$articleContent = str_replace("<br />", " <br />", $articleContent);
		
		$output = "";
				
		$words = explode(" ",$articleContent);
		$wordsCount = count($words);
	
		if ($wordsCount < $wordsPerArticle) $wEnd = $wordsCount;
		else  $wEnd = $wordsPerArticle;
				
		for ($w=0;$w<$wEnd;$w++) {
			$output .= $words[$w]." ";
		}
				

		// Leerzeichen entfernen am Anfang und Ende des Strings	
		$output = trim($output);
	
		$isCloseParagraph = substr($output,-4);
		$link = '<a href="'.rex_getUrl($articleId).'">alles lesen</a>';
		$newString = $link.'</p>';

	$teile = explode("<!--2o4gub44##split-->", $output); //SQUIRRELFRANK
	$output = $teile[0];

		
		if ($isCloseParagraph == '</p>') {
			
			$output = substr_replace($output,$newString,-4);
		}
		else {
			
			$output .= $newString;
		}



		print '<li>'.$output.'</div></li>'; //SQUIRRELFRANK
	}
}

print '</ul>'; //SQUIRRELFRANK

vielen lieben Dank
SquirrelFrank

atomic
Beiträge: 60
Registriert: 18. Mai 2006, 20:05
Wohnort: Freiburg
Kontaktdaten: Website

18. Sep 2006, 21:59

Code: Alles auswählen

<h1>Neuigkeiten in und über Sachsen</h1>
<ul class="teaser">
<li>
  <h1>neue meldug, neue meldung!</h1>
  <div class="news-kurz-text">	
    <p>der kurze, aber spritzige text… nur hier erhätlich </p>
  </div>
  <a href="index.php?article_id=25">
   alles lesen
  </a>
  </p>
  </div>
</li>
</ul>
</div>
Also irgendwie machst du einige Elemente zu oft zu.

Code: Alles auswählen

print '<li>'.$output.'</div></li>'; //SQUIRRELFRANK 
muss auf jedenfall schonmal das </div> raus. dann machst du noch ein </p> zuviel zu (vor dem </div>) das letzte div nach dem </ul> ist auch zuviel. Wie sieht denn der Artikel selbst aus ? Wenn ich das richtig verstanden habe packst du den Teaser mit in der originaltext und nimmst <!--2o4gub44##split--> als Trennzeichen ?

vg,
andreas


Als schoene Loesung wuerde ich sagen bau ein extra Feld fuer den Teaser ins eingabe/ausgabe modul ein. :-) oder nimm das Beschreibungsfeld. Sollte sowieo der knackig kurze Text sein den du eh haben willst!

Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

19. Sep 2006, 16:30

kann ich was genaueres zum "Beschreibungsfeld" erfahren? was ist das denn?

atomic
Beiträge: 60
Registriert: 18. Mai 2006, 20:05
Wohnort: Freiburg
Kontaktdaten: Website

19. Sep 2006, 16:48

Unter Metadaten/Sonstigen kannst du eine Beschreibung eingeben, gedacht fuer das Meta-Feld description. Das sollte sowieso dein Teaser-Text rein fuer die Suchmaschinen, insofern kannst du das auch zur Darstellung verwenden.

Wenn du die Artikel listest kannst du ein

Code: Alles auswählen

echo $meinArtikelOO->_description;
machen um eben dieses Beschreibungsfeld auszugeben.

$meinArtikelOO steht in dem Fall fuer ein Artikel Objekt das du z.B. in einem Array hast oder wie auch immer.

Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

19. Sep 2006, 16:49

ch hab das jetzt geschafft, vielen dank für deine hilfe

atomic
Beiträge: 60
Registriert: 18. Mai 2006, 20:05
Wohnort: Freiburg
Kontaktdaten: Website

19. Sep 2006, 17:15

Keine Ursache.

Super waere wenn du deine Loesung noch posten koenntest damit andere mit aehnlichem Problem eine Hilfestellung haben.

vg,
andreas

Benutzeravatar
SquirrelFrank
Beiträge: 186
Registriert: 9. Sep 2006, 22:40
Wohnort: Österreich / Wien
Kontaktdaten: ICQ Website

19. Sep 2006, 17:36

Das, was ich noch geändert habe ist folgendes: den kurzen artikel hab ich einfach das DIV weggenommen, und ich hab das eine div aus

print '<li>'.$output.'</li>';

herausgenommen. dafür hab ich eine zeile weiter oben

$output .= '</p>'.$newString;

ein </p> anstatt der if-else verzweigung eingesetzt.

lg. SquirrelFrank

Zurück zu „Allgemeines [R3]“