[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Modul Teaser in Redxo 3.1 - 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
holger
Beiträge: 403
Registriert: 21. Jun 2005, 13:21
Wohnort: Sehnde / Hannover / lower saxony
Kontaktdaten: Website

Modul Teaser in Redxo 3.1

3. Dez 2005, 19:10

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
// Wenn die Theorie von der Praxis abweicht: --> Ändere die Theorie //

CHRONO.net Media Works
In der Wörth 11
31319 Sehnde
+495138614810 tel
+495138615553 fax
info@chrono.net

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

3. Dez 2005, 19:35

Hi Holger,

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

Gruß,
Markus

holger_76

Re: Modul Teaser in Redxo 3.1

9. Dez 2005, 01:13

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

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

9. Dez 2005, 01:17

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

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: Modul Teaser in Redxo 3.1

9. Dez 2005, 01:21

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

holger_76

9. Dez 2005, 01:35

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 :-)

Benutzeravatar
holger
Beiträge: 403
Registriert: 21. Jun 2005, 13:21
Wohnort: Sehnde / Hannover / lower saxony
Kontaktdaten: Website

9. Dez 2005, 08:40

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
// Wenn die Theorie von der Praxis abweicht: --> Ändere die Theorie //

CHRONO.net Media Works
In der Wörth 11
31319 Sehnde
+495138614810 tel
+495138615553 fax
info@chrono.net

Benutzeravatar
svenalbert
Beiträge: 1308
Registriert: 24. Nov 2005, 17:21
Wohnort: Clausthal-Zellerfeld / lower saxony
Kontaktdaten: ICQ Website

9. Dez 2005, 11:52

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

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

9. Dez 2005, 12:05

Hej sven,

die Bilder kannst ganz einfach per Regex entfernen.

Code: Alles auswählen

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

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

9. Dez 2005, 15:05

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

Benutzeravatar
svenalbert
Beiträge: 1308
Registriert: 24. Nov 2005, 17:21
Wohnort: Clausthal-Zellerfeld / lower saxony
Kontaktdaten: ICQ Website

9. Dez 2005, 15:49

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

musicstar
Beiträge: 42
Registriert: 24. Aug 2004, 22:11

klappt nicht

10. Dez 2005, 00:31

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;

?>

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

10. Dez 2005, 09:55

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

musicstar
Beiträge: 42
Registriert: 24. Aug 2004, 22:11

....

10. Dez 2005, 10:45

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

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

10. Dez 2005, 10:57

tbaddade hat geschrieben: Wenn es nicht klappt bitte einmal einen Teil des SourceCodes posten.

musicstar
Beiträge: 42
Registriert: 24. Aug 2004, 22:11

10. Dez 2005, 11:08

Wahrscheinlich ist es noch zu früh für mich. :-)

was meinst Du mit "einen" Teil des Sourcecodes?

Vor allem welchen... :oops:

Danke

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

10. Dez 2005, 11:15

Hast du die Seite online? Wenn ja, dann bitte mal die Url. Ansonsten braucht man den HTMLCode der ausgegeben wird.

Thomas

musicstar
Beiträge: 42
Registriert: 24. Aug 2004, 22:11

10. Dez 2005, 11:19

Habe Dir ne PM geschickt...

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

10. Dez 2005, 11:28

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

musicstar
Beiträge: 42
Registriert: 24. Aug 2004, 22:11

10. Dez 2005, 11:32

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.
Zuletzt geändert von musicstar am 10. Dez 2005, 11:37, insgesamt 1-mal geändert.

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

10. Dez 2005, 11:37

Nimm bitte die Regex nochmal raus. Ich brauche den HtmlCode

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

10. Dez 2005, 12:00

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

musicstar
Beiträge: 42
Registriert: 24. Aug 2004, 22:11

10. Dez 2005, 12:46

Danke, Nochmal...

Werde an meiner Art zu coden arbeiten. :D

Zurück zu „Allgemeines [R3]“