Seite 1 von 1

Artikelliste nach Headline sortieren

Verfasst: Do 29. Nov 2007, 14:26
von saschar
hallo. habe jetzt schon länger im Forum gesucht, aber leider nichts passendes gefunden.

wie schaffe ich es bei einer artikelliste, zB. der eine sortierung nach headline. man kann bei manchen al alles mögliche einstellen, allerdings nirgends nach headline.

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;
}

$tpl->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]";
//echo "sel $selcat<br>";
$template = "teaser-standard2.html";
//echo "tpl $template<br>";
// anzahl der zeichen text
$mxtext = 200;

$limit = "CMS_VALUE[15]";

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

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

$newsheadline = "CMS_VALUE[4]";

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

if (strlen($selcat) > 0 AND $selcat != '0') {
	$options = array ('idcat' => $selcat, "start" => false, "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;
		}

		for ($i = 0; $i < $limit_art; $i ++) {

			$article = $list->nextArticle();

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

			$teaser_img = '';
			if ($noimg != 'true') {
				$text_html = $article->getContent('CMS_HTML', 1);

				$regEx = "/<img[^>]*?>.*?/i";
				$match = array ();
				preg_match($regEx, $text_html, $match);

				$regEx = "/(src)(=)(['\"]?)([^\"']*)(['\"]?)/i";
				$img = array ();
				preg_match($regEx, $match[0], $img);
				$img_src = preg_split("/\//", $img[0]);

				$img_name = $img_src[count($img_src) - 1];
				$img_name = preg_replace("/\"/", "", $img_name);
				$img_split = preg_split("/\./", $img_name);
				$img_type = $img_split[count($img_split) - 1];

				$img_split2 = preg_split("/_/", $img_split[0]);

				$name = $img_name;

				if (count($img_split2) > 1) {
					$img_x = $img_split2[count($img_split2) - 1];
					$img_y = $img_split2[count($img_split2) - 2];

					if (is_numeric($img_x) AND is_numeric($img_y)) {
						$suffix = "_".$img_x."_".$img_y.".".$img_type;
						$name = preg_replace("/$suffix/", "", $img_name);
						$name = $name.".[a-zA-Z]{3}";
					}
				}

				$img_teaser = '';

				if (strlen($name) > 0) {
					$sql = "SELECT
													*
												FROM
													".$cfg["tab"]["upl"]." 
												WHERE
													filename REGEXP '$name' ";

					//echo "<pre>"; print_r($sql); echo "</pre>";

					$db->query($sql);

					if ($db->next_record()) {
						$filename = $db->f('filename');
						$dirname = $db->f('dirname');
					}

					$img_path = $cfgClient[$client]["upl"]["path"].$dirname.$filename;

					$img_size = "CMS_VALUE[14]";

					$img_teaser = capiImgScale($img_path, $img_size, $img_size, $crop = false, $expand = false, $cacheTime = 1000, $wantHQ = false);
				} // end if strlen

				if (strlen($img_teaser) > 0) {
					$teaser_img = '<img src="'.$img_teaser.'" class="teaser_img">';
				} else {
					$teaser_img = '';
				}

			} // end if noimg 		

			$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;";

			$tpl->set('d', 'HEADLINE', $teaserheadline);
			$tpl->set('d', 'TEXT', $teasertext);
			$tpl->set('d', 'HREF', $href);
			$tpl->set('d', 'IMG', $teaser_img);
			$tpl->set('d', 'MORE', mi18n("mehr"));

			$tpl->next();

		} // end for

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

	}
}
?>
vielen dank im voraus für eure hilfe....

sascha

Verfasst: Do 29. Nov 2007, 14:54
von HerrB
Du könntest z.B. die Artikelliste Advanced verwenden. Dort kannst Du u.a. nach Artikelbezeichnung (Backend), Seitentitel (Backend), Seitentitel (Frontend) oder "Headline" sortieren, wobei Du selber bestimmst, welches Feld im Artikel Deiner Headline entsprechen soll.

Gruß
HerrB

danke

Verfasst: Do 29. Nov 2007, 15:04
von saschar
hallo herrB.
vielen dank, vor lauter probieren und suchen habe ich das übersehen.
oder anders gesagt: vor aluter bäumen den wald nicht gesehen.

gruss
sascha

Verfasst: Fr 30. Nov 2007, 19:11
von Fantasmo
Hallo,
ich kenne mich mit PHP überhaupt nicht aus, habe aber schonmal erste Schritt mit Contenido gemacht.

1.
Mir fiel auf, dass in der Newsliste oben ganz normal die Überschrift und ein kleiner Untertext steht... ok... aber diese Überschrift und Text stehen bei mir nochmal in der Liste darunter, als eine News... wie bekomme ich das weg? Ich hätte nämlich nur die News in der Liste und nicht nochmal doppelt die Überschrift.

2.
Ich habe die Schriftfarben geändert.
Jetzt ist die Farbe der Überschriften und des Textes in der Mitte anders.
Allerdings: In den News ist NUR die große Überschrift oben und die Textfarbe anders. Die Farbe der kleinen klickbaren Zwischenüberschriften, der News ist immer noch in der Originalfarbe.
Ich finde im CSS-Code einfach nicht die Stelle für diese Farbe.
Wo stelle ich die ein?

Verfasst: Fr 30. Nov 2007, 19:30
von wosch
Fantasmo hat geschrieben:Hallo,1.
Mir fiel auf, dass in der Newsliste oben ...
Die Beschreibung von dir ist etwas undurchsichtig.
Spontan fällt mir nur dazu ein:
Die Newsliste ist in deiner Startseite, und in dem News-Modul hast du die Option "incl. Startseite" gewählt.
Dann wird die Startseite mit Text dargestellt, und in der Newsliste nochmals.
Fantasmo hat geschrieben:2.
Ich habe die Schriftfarben geändert.
...
Wo stelle ich die ein?
Kommt auf das verwendete News-Modul drauf an.
Entweder in dem Modul-Template, in der DIV/CLASS die das Modul verwendet (-> CSS-Datei), oder im Modul selber.

Verfasst: So 2. Dez 2007, 14:18
von Fantasmo
Ich beziehe mich auf die Newsliste, die in der letzten Contenido-Version ursprünglich dabei ist.

Es sieht ungefähr so aus:
GROSSE ÜBERSCHRIFT "Die News"
KLEINER UNTERTEXT "Hier findet ihr die News"

ERSTE NEWS (diese besteht aus):
KLEINER KLICKBAREN ZWISCHENÜBERSCHRIFT "Das Wetter in Be..."
ERSTE SÄTZE DER NEWS "Das Wetter in Berlin ist schön"

Und nun hab ich's geschafft, die GROSSE ÜBERSCHRIFT zu ändern, ebenso den KLEINEN UNTERTEXT und die ERSTEN SÄTZE (also alles Bodytext) aber die KLICKBARE ZWISCHENÜBERSCHRIFT bleibt weiterhin im Orignal Gelb/Orange-Ton.

In "Layout" unter "Standard.css" kann ich bei a:hover die textdecoration verstellen. Damit kann ich diese Zwischenüberschrift und die Navigation links beeinflussen. Aber die Farbe der Zwischenüberschriften eben nicht.

In "Modul-Templates" kann man nur "border-color" beeinflussen, das bezieht sich auch nicht auf die Schriftfarbe.

Ist mit "ändern in Modul oder Template" das Ändern in PHP gemeint?
Da hab ich nix mit Farben gefunden, da werden doch meines Wissens nur Funktionen, aber nicht die Optik beeinflusst.

Verfasst: So 2. Dez 2007, 15:21
von wosch
Fantasmo hat geschrieben:aber die KLICKBARE ZWISCHENÜBERSCHRIFT bleibt weiterhin im Orignal Gelb/Orange-Ton.
Das nennt sich Headline, und ist die Überschrift des geteaserten Artikels.

Code: Alles auswählen

   <h2><a href="der_linkl">Die Erstellung von Seiten</a></h2>
   <p>Unter dem Reiter Content - Artikel können Sie die Seiten Ihres Onlinedienstes bearbeiten. Auf der linken Seite finden Sie die Struktur (Kategorien) Ihrer Website. Nach Auswahl eines entsprechenden...&nbsp; <a href="/erste-schritte/artikelerstellung.html" alt="mehr" title="mehr">mehr &rsaquo;</a></p>

Dafür verantwortlich ist in der CSS-Datei folgende Stelle:

Code: Alles auswählen

div#col-body h2 a,
div#col-body div.artikelliste p a {
	color: #D9681C;
}
Ein guter Rat:
Schau es dir an um zu verstehen, und dann lösch das Layout des Beispielmandanten.
Das Layout, und hier ist speziel alles gemeint was mit CSS zu tun hat, ist von einem absoluten Fachmann gemacht.
Das ist aber nicht geeignet zum Lernen und Verstehen.
Dafür wäre das Layout einer älteren Contenido-Version sehr viel besser geeignet.
Das ist eben das Problem, Fachleute können meistens nur für Fachleute beschreiben/erstellen, wer nicht das gleiche Niveau dieser Fachleute hat steht schnell auf dem Schlauch.

Verfasst: Mo 3. Dez 2007, 13:33
von Fantasmo
Vielen Dank für die Hilfe.
Ich hab das Ganze jetzt zufällig doch noch gefunden und zwar unter "Modul-Templates" in "teaser-standard.html".

Mit CSS kann ich schon recht gut umgehen, aber mit PHP nicht.
Bei der zweiten Sache: "Allerersten Newsartikel oben nicht mit in der Newsliste drunter aufführen" bin ich nicht weiter gekommen. Ich habe in den "Modulen" bei "Newsliste" die Stelle mit "inkl. Startartikel" gefunden, dort hab ich "value=no" geändert und per grünem Pfeil gespeichert. Es hat sich aber nichts geändert(in der Newsliste auf der Homepage). Ich habe dann nochmal in "Modulhistorie" geguckt, dort war an der gleichen Stelle ("inkl. Startartikel") immernoch "value=yes" und es lies sich auch partout nicht umändern.
Ich denke mal, das es daran liegt, bin mir aber nicht sicher.
Randinfo: Das, was es mir da als Überschrift UND als News anzeigt, steht im Content, bei den Artikeln in "Liste" (hat nen Pfeil vor dran und ist grün unterlegt) ich dachte immer, das wär ohnehin nur die Überschrift und ein kleiner Untertext für die Kategorie News.... aber seltsamerweise wird es eben NOCHMAL als eine News selbst mit aufgeführt.

PS:
Ich konnte schon schön das Ausgangslayout verändern. Alles zu löschen trau mich dann auch nicht so recht... ich befürchte, dass ich dann auch in den Bereichen "Module" und "Templates" alle möglichen Sachen neu zuordnen muss?! Das wär erstmal noch zu schwer für mich.
(Ich könnte aber auch nochmal genauer alles angucken... vielleicht ists ja einfacher, als gedacht...)

Verfasst: Mo 3. Dez 2007, 13:44
von wosch
Fantasmo hat geschrieben:Ich habe in den "Modulen" bei "Newsliste" die Stelle mit "inkl. Startartikel" gefunden, dort hab ich "value=no" geändert und per grünem Pfeil gespeichert. Es hat sich aber nichts geändert(in der Newsliste auf der Homepage). Ich habe dann nochmal in "Modulhistorie" geguckt, dort war an der gleichen Stelle ("inkl. Startartikel") immernoch "value=yes" und es lies sich auch partout nicht umändern.
Das ist ein Bug in der Newsliste.
Das sollte aber eigentlich ab der Version die mir 4.6.8.5 oder 4.6.15 kommt behoben sein.

Mußt mal suchen, der Fix ist von HerrB.

Mögliche Suchwörter:
Artikelliste Startartikel HerrB

Verfasst: Di 4. Dez 2007, 08:16
von Fantasmo
Ich habe z.B. die AdvancedArtikelliste gefunden.

Aber ich bin grad etwas verwirrt, sollen 4.6.8 und 4.6.15 die aktuellsten Versionen sein? Ich habe die 4.6.23 auf der Contenido-Homepage geladen, sie hatte das Datum vom 10.11.2007, da dachte ich, das sei schon die aktuellste Version?!

Verfasst: Di 4. Dez 2007, 09:38
von wosch
Fantasmo hat geschrieben:Aber ich bin grad etwas verwirrt, sollen 4.6.8 und 4.6.15 die aktuellsten Versionen sein?
Nein, aktuell ist die 4.6.23
Der Bug sollte schon in der Vorgängerversion 4.6.8.5 oder 4.6.15 behoben sein.