[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Modul Teaser in Redxo 3.1
Seite 1 von 1

Modul Teaser in Redxo 3.1

Verfasst: 3. Dez 2005, 19:10
von holger
Hallo,

ich habe mit dem Modul Teaser aus der Version 3.1 Probleme.

1. Ich stelle den Wert "Anzahl der Wörter pro Artikel" auf 20.
Heraus kommt dann das:

"Ersparen Sie sich und Ihren Mitarbeitern viel Zeit, denn die Zeiten für die Erstellung und Pflege von kostenintensiven statischen...mehr"

So weit OK.

2. Nun schaue ich in den Quelltext:

Code: Alles auswählen

<div class="teaser"><table border="0"><tr><td>
Ersparen Sie sich <strong>und Ihren Mitarbeitern viel Zeit, denn die Zeiten f&uuml;r die Erstellung und Pflege von kostenintensiven statischen<a href="index.php?article_id=16">...mehr</a></p></div>
Dieser Text wurde mit dem WYSIWYG-Modul angelegt und befand sich dort in einer Tabelle. Einige Wörter waren fett geschrieben.

Das Modul Teaser gibt nun den Tabellenanfang und den Fettschriftanfang weiter, aber nicht das ENDE !

Das führt bei meinem Layout zu Chaos.

Entweder müßten die Tags hier komplett raus oder geöffnete Tags müßten wieder geschlossen werden.

mfg
Holger

Verfasst: 3. Dez 2005, 19:35
von Markus.Staab
Hi Holger,

am besten du behandelst das ganze mit strip_tags(), dann hast du da keine Probleme.

Gruß,
Markus

Re: Modul Teaser in Redxo 3.1

Verfasst: 9. Dez 2005, 01:13
von holger_76
hallo holger, hier auch holger :-)

was macht der teaser? meine vermutung neszeilen aus artikeln erstellen, die unter metatags mit teaser gekennzeichnet sind.

was aber bei nicht funktioniert. habe neue artikel, häkchen ist drinn und die seite news bleibt leer (teaser eingerichtet, 20 wörter und 100 zeichen.
vg holger

Verfasst: 9. Dez 2005, 01:17
von Thomas.Blum
hej,

zur erklärung des teasers:

der teaser wird in dem startartikel als modul eingebunden. mann kann die anzahl der artikel pro seite und die wörter pro artikel festlegen.

der Teaser sucht nun nach artikeln in der gleichen kategorie die online sind und gibt sie entsprechend aus.

Der Teaser hat nix mit der checkbox unter den Metadaten zu tun.

vg Thomas

Re: Modul Teaser in Redxo 3.1

Verfasst: 9. Dez 2005, 01:21
von Thomas.Blum
holger hat geschrieben: Entweder müßten die Tags hier komplett raus oder geöffnete Tags müßten wieder geschlossen werden.
raus per strip_tags.

rein per tidy_clean_repair() [1]
(weiss aber nicht ob das funktioniert, noch nie damit gearbeitet)

[1] http://at2.php.net/manual/en/function.t ... repair.php

vg Thomas

Verfasst: 9. Dez 2005, 01:35
von holger_76
tbaddade hat geschrieben:hej,

zur erklärung des teasers:

der teaser wird in dem startartikel als modul eingebunden. mann kann die anzahl der artikel pro seite und die wörter pro artikel festlegen.

der Teaser sucht nun nach artikeln in der gleichen kategorie die online sind und gibt sie entsprechend aus.

Der Teaser hat nix mit der checkbox unter den Metadaten zu tun.

vg Thomas
jo, das geht und hab ich kappiet, eins erstmal :-)

Verfasst: 9. Dez 2005, 08:40
von holger

Code: Alles auswählen

rein per tidy_clean_repair() [1] 
 (weiss aber nicht ob das funktioniert, noch nie damit gearbeitet) 
Das soll allerdings erst ab PHP5 funktionieren.
Also nicht besonders universell.

mir fällt im moment auch nichts anderes als strip_tags ein. schön wäre es allerdings, wenn wenigstens die Zeilenumbrüche drinblieben.

mfg
holger

Verfasst: 9. Dez 2005, 11:52
von svenalbert
Ich hatte mir den Teaser auch schon mal angeschaut gehabt und mir fiel auch auf, daß er z.B. am Artikelanfang eingebundene Bilder mit übernimmt und ausgibt.

Je nachdem wie groß das Bild im Artikel skaliert ist (und ob vielleicht im nächsten angeteasten (geiles Wort) Artikel auch wieder ein Bild kommt) gibt das ein ganz schönes Chaos.


Sven

Verfasst: 9. Dez 2005, 12:05
von Thomas.Blum
Hej sven,

die Bilder kannst ganz einfach per Regex entfernen.

Code: Alles auswählen

$articleContent = preg_replace("/<img.+\/>?>/","",$articleContent);
vg Thomas

Verfasst: 9. Dez 2005, 15:05
von Markus.Staab
Hi zusammen,
holger hat geschrieben:

Code: Alles auswählen

rein per tidy_clean_repair() [1] 
 (weiss aber nicht ob das funktioniert, noch nie damit gearbeitet) 
Das soll allerdings erst ab PHP5 funktionieren.
Also nicht besonders universell.
Tidy gibts in PHP4 auch, muss aber als extension nachträglich installiert werden
holger hat geschrieben:mir fällt im moment auch nichts anderes als strip_tags ein. schön wäre es allerdings, wenn wenigstens die Zeilenumbrüche drinblieben.
siehe PHP-Manual:
string strip_tags ( string str [, string allowable_tags] )

Code: Alles auswählen

$string = strip_tags( $string, '<br>'); // br drinnen lassen
Gruß,
Markus

http://www.php.net/manual/en/function.strip-tags.php

Verfasst: 9. Dez 2005, 15:49
von svenalbert
tbaddade hat geschrieben:Hej sven,

die Bilder kannst ganz einfach per Regex entfernen.

Code: Alles auswählen

$articleContent = preg_replace("/<img.+\/>?>/","",$articleContent);
vg Thomas

Thomas, mein Kommentar war eher für jemanden gedacht, der sich vielleicht dieses Moduls nochmal annimmt. Und da die "Fehler" eh immer erst unter Einsatzbedingungen und durch die DAUs (zu denen ich mich jetzt auch einfach mal zähle) auftreten, war das nur zur Info und nicht als Mangel.

Ich selbst hab ja leider noch kein REX im Produktiveinsatz, ärgere mich aber, daß ich meine Seite vor nem Monat, oder so, ohne CMS neu gemacht hab.


Sven

klappt nicht

Verfasst: 10. Dez 2005, 00:31
von musicstar
Hallo Zusammen,

muss mich jetzt auchmal zu Wort melden. :-)

Als erstes möchte ich sagen Redaxo ist absolut genial!!!
Habe einige CMS Systeme ausprobiert und bin jetzt nach fast 1. Jahr hier hängen geblieben. Man merkt sehr schnell warum Redaxo soviele Vorteile hat. Ich liebe die freie Gestaltungsmöglichkeit. Denn ich kann für jeden Redakteur eine eigene Eingabemaske bauen ohne das Layout anzugreifen. :-)

Habe versucht das Forum auch für die Fehlersuche weitestgehend zu nutzen, aber nun habe ich das Problem:

Der Teaser funktioniert einwandfrei, nur möchte ich halt auch keine Bilder in der Teaseransicht, da diese das Layout zerstören.

Ich habe folgendes gefunden:

Code: Alles auswählen

$articleContent = preg_replace("/<img.+\/>?>/","",$articleContent);
Habe das in das Modul kopiert, aber die Bilder werden trotzdem angezeigt.

Was habe ich falsch gemacht?
Wahrscheinlich die Reihenfolge oder?

Mein modul:

Code: Alles auswählen

<?php

$itemsPerSide = "REX_VALUE[1]";
$wordsPerArticle = "REX_VALUE[2]";

// Nur im Frontend
//if (!$REX['REDAXO']):

// Sortierfunktion
if (!function_exists(sortArticlesByUpdateDate)) {
	function sortArticlesByUpdateDate( $artA, $artB) {
		$createA = $artA->_updatedate;
		$createB = $artB->_updatedate;

		if ( $createA == $createB) {
			return 0;
		}

		return $createA > $createB ? -1 : 1;
	}
}

$start = !empty($_GET['start']) ? (int) $_GET['start'] : 0; // Startitem
$offset = $itemsPerSide; // 10 Items pro Seite
$cats = array( REX_CATEGORY_ID); // alle Kategorien die Du "indizieren" willst

$articles = array();

foreach ( $cats as $catId) {
  $cat = OOCategory::getCategoryById( $catId);
 
  // CatIds die nicht funktionieren aussortieren
  if( $cat === null) {
     continue;
  }

  $cat_articles = $cat->getArticles( true);

  foreach ( $cat_articles as $ooarticle) {
     // keine Startartikel anzeigen
    if ( $ooarticle->isStartPage()) {
       continue;
     }

     // Damit keine Endlosschleife passiert, den Artikel der die Pagination setzt überspringen
     if ( $ooarticle->getId() == REX_ARTICLE_ID) {
        continue;
     }
     $articles[] = $ooarticle;
  }
}

$articles_length = count( $articles);

// Sortieren nach Erstellungsdatum
if ( $articles_length > 0) {

   usort( $articles, "sortArticlesByUpdateDate");
}

$article_list = array_slice( $articles, $start, $offset);

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);
		
$articleContent = preg_replace("/<img.+\/>?>/","",$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 = '<br> <a href="'.rex_getUrl($articleId).'">...mehr</a>';
		$newString = $link.'</p>';
	
	
		if ($isCloseParagraph == '</p>') {
			$output = substr_replace($output,$newString,-4);
		}
		else {
			$output .= $newString;
		}
	
		print '<div class="teaser">'.$output.'</div>';
	}
}

$prevStart = $start - $offset;
if ( $prevStart < 0)
{
   $prevStart = '';
}

$nextStart = $start + $offset;
if ( $nextStart >= $articles_length)
{
   $nextStart = '';
}

$link_format = '<a href="index.php?article_id=REX_ARTICLE_ID&start=%s">%s</a>';

// Vorherige Seite Link
if ( $prevStart !== '') {
  $backLink = sprintf( $link_format, $prevStart, '<< vorherige Seite');
}


// Nächste Seite
if ( $nextStart !== '') {
  $nextLink = sprintf( $link_format, $nextStart, 'n&auml;chste Seite >>');
}

if ($backLink != "" AND $nextLink != "") {
	print '<div class="teaserNav"><p>'.$backLink.'&nbsp;|&nbsp;'.$nextLink.'</p></div>';
}
elseif ($nextLink != "") {
	print '<div class="teaserNav"><p>'.$nextLink.'</p></div>';
}
elseif ($backLink != "") {
	print '<div class="teaserNav"><p>'.$backLink.'</p></div>';
}

//endif;

?>

Verfasst: 10. Dez 2005, 09:55
von Thomas.Blum
Hej,

schreibe am besten

$articleContent = preg_replace("/<img.+\/>?>/","",$articleContent);

hinter

// Leerzeichen entfernen am Anfang und Ende des Strings
$articleContent = trim($articleContent);

Wenn es nicht klappt bitte einmal einen Teil des SourceCodes posten.

vg Thomas

....

Verfasst: 10. Dez 2005, 10:45
von musicstar
Hallo Thomas,

erstmal vielen Dank für Die superschnelle Antwort. :D

Habe es jetzt so eingefügt:

Code: Alles auswählen

// Leerzeichen entfernen am Anfang und Ende des Strings
		$articleContent = trim($articleContent);
		$articleContent = preg_replace("/<img.+\/>?>/","",$articleContent);
Es funktioniert aber leider noch nicht.

Gruß
Markus

Verfasst: 10. Dez 2005, 10:57
von Thomas.Blum
tbaddade hat geschrieben: Wenn es nicht klappt bitte einmal einen Teil des SourceCodes posten.

Verfasst: 10. Dez 2005, 11:08
von musicstar
Wahrscheinlich ist es noch zu früh für mich. :-)

was meinst Du mit "einen" Teil des Sourcecodes?

Vor allem welchen... :oops:

Danke

Verfasst: 10. Dez 2005, 11:15
von Thomas.Blum
Hast du die Seite online? Wenn ja, dann bitte mal die Url. Ansonsten braucht man den HTMLCode der ausgegeben wird.

Thomas

Verfasst: 10. Dez 2005, 11:19
von musicstar
Habe Dir ne PM geschickt...

Verfasst: 10. Dez 2005, 11:28
von Thomas.Blum
Da sieht das natürlich ein wenig anders aus:

Verwende das hier:
$articleContent = preg_replace("/<img.+>?>/","",$articleContent);


Grund: du verwendest kein XHTML, also dein <img src="" > ist so und nicht wie in der ersten Regex so: <img src="" />


Thomas

Verfasst: 10. Dez 2005, 11:32
von musicstar
Danke Dir, aber nun ist der "mehr lesen" link, in den bildhintergrund des anzuzeigenden Artikelbildes, verrutscht.
Kann ich die nach dem gleichen Prinzip verschwinden lassen?

Außerdem werden die ersten beiden Artikel nicht mehr mit xx Zeichen angezeigt.

Verfasst: 10. Dez 2005, 11:37
von Thomas.Blum
Nimm bitte die Regex nochmal raus. Ich brauche den HtmlCode

Verfasst: 10. Dez 2005, 12:00
von Thomas.Blum
Ich hab dir die Regex so angepasst, daas bei dir die Bilder und die Bildbeschreibung rausfallen.

Willst du dich mit Regex beschäftigen findest du hier paar nützliche links.

vg Thomas

Verfasst: 10. Dez 2005, 12:46
von musicstar
Danke, Nochmal...

Werde an meiner Art zu coden arbeiten. :D