Artikelliste mit zweigeteilter Ausgabe

Gesperrt
funktionaer
Beiträge: 4
Registriert: Do 12. Jul 2007, 08:28
Kontaktdaten:

Artikelliste mit zweigeteilter Ausgabe

Beitrag von funktionaer »

Guten Tag zusammen,

ja, ich habe die Suche im Forum benutzt, bin aber leider nicht fündig geworden. Deshalb habe ich mich nun entschlossen, eine Anfrage zu erstellen. Mein Problem ist folgendes:

Ich benutze das Modul News, um Artikel einer Kategorie anzeigen zu lassen. Nun möchte ich jedoch, dass die ersten 5 Artikel mit einem bestimmten Template verbunden werden, alle anderen dementsprechend mit einem zweiten. Das ganze soll den Effekt haben, dass die neusten Einträge mit Überschrift, Teasertext und Bild angezeigt werden können, die älteren nur mit der Überschrift.

Ich hoffe, ich konnte mein Anliegen verständlich machen.

Vielen Dank im Voraus.
funktionaer
MichFress
Beiträge: 750
Registriert: Mo 5. Jan 2004, 22:32
Wohnort: Bochum
Kontaktdaten:

Beitrag von MichFress »

Du brauchst im Prinzip nur zwei Container auf der Seite. Im ersten hast du eine Artikelliste, die die ersten 5 Artikel im ausführlichen Modul-Template anzeigt; und im zweiten zeigst du die anderen Artikel im spartanischeren Modul-Template an...
Klingt nicht sonderlich aufwändig...
"Es wird keine Handlung geben, keine Geschichte mit ihrer Versprechung auf einen Anfang und ihrer Hoffnung auf ein Ende." (Andrzej Stasiuk)
funktionaer
Beiträge: 4
Registriert: Do 12. Jul 2007, 08:28
Kontaktdaten:

Beitrag von funktionaer »

Hallo MichFress,

danke für deine schnelle Antwort.

Soweit bin ich mit meinen Überlegungen auch gekommen, nur dabei stellt sich mir ein Problem in den Weg. Ich müsste dann doch im Modul News definieren, dass:

1. die Artikel absteigend nach deren Veröffentlichungsdatum sortiert werden (sollte nicht das eigentliche Problem sein)

2. die ersten 5 mit dem ausführlichen Template verwendet werden und

3. alle nachfolgenden mit dem "spartanischen".

Ansonsten bekomme ich doch Redundanzen, oder?
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

um das problem etwas universell zu lösen, müsstest du in der lage sein, deiner artikelliste zwei masken anzugeben: 1 für die ersten fünf sowie 1 für die folgenden einträge.

ist im prinzip keine grosse sache.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
funktionaer
Beiträge: 4
Registriert: Do 12. Jul 2007, 08:28
Kontaktdaten:

Beitrag von funktionaer »

Hallo nochmals,

ich habe versucht, im Output des Moduls die Trennung der Artikel zu vollziehen. Anbei der Output:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      News
* Author(s)   :     Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
************************************************/

cInclude('classes', 'class.article.php');
cInclude('includes', 'functions.api.string.php');
cInclude('includes', 'functions.api.images.php');

if (!is_object($tpl)) {
	$tpl = new Template;
}
if (!is_object($tpl2)) {
	$tpl2 = new Template;
}
$tpl->reset();
$tpl2->reset();

$sql = "SELECT
            htmlpath, frontendpath
        FROM
            ".$cfg["tab"]["clients"]." 
        WHERE
            idclient = ".$client." ";

$db->query($sql);

if ($db->next_record()) {
	$htmlpath = $db->f('htmlpath');
	$frontendpath = $db->f('frontendpath');
}

// selected category
$selcat = "CMS_VALUE[1]";
$template1 = "teaser-standard.html";
$template2 = "teaser-sparta.html";
// anzahl der zeichen text
$mxtext = 190;

$limit = "CMS_VALUE[15]";

$cms_sort_direction = "CMS_VALUE[16]";
if ($cms_sort_direction == '') {
	$cms_sort_direction = 'desc';
}

if ("CMS_VALUE[3]" == "sortdate") {
	$order = 'lastmodified';
} else {
	$order = 'artsort';
}

if ("CMS_VALUE[17]" != '') {
	$with_start = true;
} else {
	$with_start = false;
}

$newsheadline = "CMS_VALUE[4]";
$ganze_artikel = 3; 

$tpl->set('s', 'TITLE', $newsheadline);

if (strlen($selcat) > 0 AND $selcat != '0') {
	$options = array ('idcat' => $selcat, "start" => $with_start, "order" => $order, "direction" => $cms_sort_direction);

	$list = new ArticleCollection($options);

	$count = $list->count;

	if ($count > 0) {
		if (is_numeric($limit) AND strlen($limit) > 0) {
			if ($limit < $list->count) {
				$limit_art = $limit;
			} else {
				$limit_art = $list->count;
			}
		} else {
			$limit_art = $list->count;
		}
	//if ($limit_art > $ganze_artikel) {
			/*	$ganze_artikel = $limit_art;
			} else {
				$ganze_artikel = $ganze_artikel;
			}*/
	
		for ($i = 0; $i < $ganze_artikel; $i ++) {

			$article = $list->nextArticle();

			$article_id = $article->getField('idart');

			$headline = strip_tags($article->getContent('CMS_HTMLHEAD', 1));
			$headline = str_replace($replace, " ", $headline);

			/*			$subheadline = strip_tags($article->getContent('CMS_HTMLHEAD', 2));
						$subheadline = str_replace($replace, " ", $subheadline);*/

			$teaserheadline = /*$subheadline."&nbsp;-&nbsp;".*/
			$headline;
			$href = $sess->url("front_content.php?idcat=$selcat&idart=$article_id");
			$teasertext = $article->getField('summary');
			$teaser_tag = date('d', strtotime($article->getField('lastmodified')));                        
			$teaser_monat = date('m', strtotime($article->getField('lastmodified')));
			$teaser_jahr = date('Y', strtotime($article->getField('lastmodified'))); 

			switch ($teaser_monat):
			case 01:
			   $teaser_monat = 'JAN';
			   break;
			case 02:
			   $teaser_monat = 'FEB';
			   break;
			case 03:
			   $teaser_monat = 'MAR';
			   break;
			case 04:
			   $teaser_monat = 'APR';
			   break;
			case 05:
			   $teaser_monat = 'MAI';
			   break;
			case 06:
			   $teaser_monat = 'JUN';
			   break;
			case 07:
			   $teaser_monat = 'JUL';
			   break;
			case 08:
			   $teaser_monat = 'AUG';
			   break;
			case 09:
			   $teaser_monat = 'SEP';
			   break;
			case 10:
			   $teaser_monat = 'OKT';
			   break;
			case 11:
			   $teaser_monat = 'NOV';
			   break;
			case 12:
			   $teaser_monat = 'DEZ';
			   break;
			endswitch;
			
			if (strlen(trim($teasertext)) == 0) {
				$teasertext = strip_tags($article->getContent('CMS_HTML', 1));
				$teasertext2 = $teasertext;
				$teasertext = capiStrTrimAfterWord($teasertext, $mxtext);
				if ($teasertext!=$teasertext2) {
					$teasertext.= '...';
				}
				
			} // end if   			

			$teasertext = $teasertext."&nbsp;";

			$tpl->set('d', 'HEADLINE', $teaserheadline);
			$tpl->set('d', 'TEXT', $teasertext);
			$tpl->set('d', 'HREF', $href);
			$tpl->set('d', 'IMG', $teaser_img);
			$tpl->set('d', 'TAG', $teaser_tag);
			$tpl->set('d', 'MONAT', $teaser_monat);
			$tpl->set('d', 'JAHR', $teaser_jahr);
			$tpl->set('d', 'MORE', mi18n("[mehr]"));

			$tpl->next();

		} // end for

		$tpl->generate('templates/'.$template1);


//	}
for ($i = $ganze_artikel; $i < $limit_art; $i ++) {

			$article = $list->nextArticle();

			$article_id = $article->getField('idart');

			$headline = strip_tags($article->getContent('CMS_HTMLHEAD', 1));
			$headline = str_replace($replace, " ", $headline);

			/*			$subheadline = strip_tags($article->getContent('CMS_HTMLHEAD', 2));
						$subheadline = str_replace($replace, " ", $subheadline);*/

			$teaserheadline = /*$subheadline."&nbsp;-&nbsp;".*/
			$headline;
			$href = $sess->url("front_content.php?idcat=$selcat&idart=$article_id");
			$teasertext = $article->getField('summary');
			
						
			if (strlen(trim($teasertext)) == 0) {
				$teasertext = strip_tags($article->getContent('CMS_HTML', 1));
				$teasertext2 = $teasertext;
				$teasertext = capiStrTrimAfterWord($teasertext, $mxtext);
				if ($teasertext!=$teasertext2) {
					$teasertext.= '...';
				}
				
			} // end if   			

			$teasertext = $teasertext."&nbsp;";

			$tpl2->set('d', 'HEADLINE', $teaserheadline);
			$tpl2->set('d', 'TEXT', $teasertext);
			$tpl2->set('d', 'HREF', $href);
			$tpl2->set('d', 'MORE', mi18n("[mehr]"));

			$tpl2->next();

		} // end for

		$tpl->generate('templates/'.$template2);
	}
}
?>
Die Variable $ganze_artikel soll angeben, wieviele Artikel mit dem Template teaser_standard.html angezeigt werden sollen, alle anderen sollten mit teaser_sparta.html angezeigt werden.

Zumindest funktioniert der erste Teil, nur drei Artikel werden ausführlich dargestellt, dann jedoch kommt der Wurm. Es werden zwar auch Artikel mit dem spartanischen Template angezeigt, doch wiederum die 3 gleichen. Könntet ihr mir vielleicht auf die Sprünge helfen, wo der Fehler liegt?

Danke,
funktionaer
Gesperrt