Seite 1 von 1

Artikelblättern (Paging) mit Vorschaubild und -titel

Verfasst: Do 26. Jun 2014, 11:27
von matthiasschnueriger
Der Code basiert auf dem Modul von smac für Contenido 4.6 und wurde entsprechend erweitert/verändert. Es ginge sicher einfacher, aber es erfüllt meine Anforderungen. Das Modul funktioniert in der neusten Contenido-Version 4.9.3.

Folgender Modul-Output gibt einen Link inkl. Vorschaubild (CMS_IMG[1]) und Headline (CMS_HTMLHEAD[1]) des vorherigen resp. nächsten Artikels in der gleichen Kategorie aus. Es ist damit eine einfache aber nutzerfreundliche Paging-Navigation.
Die Darstellung der Ausgabe kann natürlich beliebig angepasst werden.

Code: Alles auswählen

<?php
$sortiert = "ARTLANG.created";
$steigung= "DESC";

$sql = "SELECT DISTINCT  CONCAT( UPLOADS.dirname, UPLOADS.filename ) AS path, CONTENT.value as page_title, ARTLANG.idart, ARTLANG.title, CATART.idcat, ARTLANG.created, ARTLANG.idartlang AS idartlang, ARTLANG.idartlang AS idartlang, CATART.idcat AS idcat, CATART.idcatart AS idcatart 
FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["upl"]." AS UPLOADS, ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat_lang"]." AS CATLANG, ".$cfg["tab"]["content"]." AS tblData, ".$cfg["tab"]["content"]." AS CONTENT, ".$cfg["tab"]["cat"]." AS CAT
WHERE CAT.idcat='$idcat'
AND ARTLANG.idart = CATART.idart
AND CATART.idcat = CAT.idcat
AND tblData.idartlang = ARTLANG.idartlang 
AND CATLANG.idlang = ARTLANG.idlang 
AND CATLANG.idcat = CATART.idcat
AND ARTLANG.idart = CATART.idart
AND ARTLANG.idlang = '$lang' 
AND ARTLANG.online = '1'
AND tblData.idartlang != CATLANG.startidartlang
AND tblData.value = UPLOADS.idupl
AND tblData.idtype = 22
AND CONTENT.idartlang = tblData.idartlang
ORDER BY ".$sortiert." ".$steigung;

$db->query($sql);
if ($db->num_rows() != 0)
{
$artikel = array(array());
$j=0;
$db->next_record();
$idart_last=$db->f("idart");
for ($i=0; $i<$db->num_rows(); $i++)
{
$artikel[$j][0] = $db->f("idart");
$artikel[$j][1] = $db->f("idcat");
$artikel[$j][2] = $db->f("page_title");
$artikel[$j][3] = $db->f("path");

$type = $db->f("idtype");
$typeid = $db->f("typeid");

while ( $idart_last==$db->f("idart") )
{
$idart_last=$db->f("idart");
$db->next_record();
$i++;
}

$idart_last=$db->f("idart");
$j++;
$i--;
}

// Nicht ausgeben, wenn nur eine Seite existiert...
if ($i>1)
  {
  echo "";

					// Zurückblättern
					for ($i=0; $i < $j; $i++)
					{
                        
					   if ($idart==$artikel[$i][0] && $i!=0) {
						  $x = $i-1;
                          $previous_image = 'upload/'.$artikel[$x][3];
                          $previous_title = strip_tags($artikel[$x][2]);
						  $zurueck_link ="front_content.php?client=$client&lang=$lang&idcat=".$artikel[$x][1]."&idart=".$artikel[$x][0];
						   echo "<a href=\"".$sess->url("$zurueck_link")."\" title=\"$previous_title\" class=\"prev\"><span class=\"icon-wrap\"><i class=\"fa fa-angle-left\"></i></span>
								<img src=\"$previous_image\" alt=\"Previous thumb\"/></a> ";
					   }
					}
					

					// Weiterblättern
					for ($i=0; $i < $j; $i++)
					{
					   if ($idart==$artikel[$i][0] && $i != $j-1) {
                           
						  $y = $i+1;
                          $next_image = 'upload/'.$artikel[$y][3];
                          $next_title = strip_tags($artikel[$y][2]);                          
                          $weiter_link ="front_content.php?client=$client&lang=$lang&idcat=".$artikel[$y][1]."&idart=".$artikel[$y][0];
						   echo "<a href=\"".$sess->url("$weiter_link")."\" title=\"$next_title\" class=\"next\"><span class=\"icon-wrap\"><i class=\"fa fa-angle-right\"></i></span>
								<img src=\"$next_image\" alt=\"Next thumb\"/></a> ";
					   }
					}
					
					}   //Ende nicht ausgeben, wenn nur eine Seite...
					
					}

					?>	


Re: Artikelblättern (Paging) mit Vorschaubild und -titel

Verfasst: Do 26. Jun 2014, 13:07
von Faar
Danke!

Re: Artikelblättern (Paging) mit Vorschaubild und -titel

Verfasst: Sa 28. Feb 2015, 11:50
von McHubi
Hallo Matthias,

ich habe Deinen Code so wie er ist in einer aktuellen 4.9.6er eingebaut und "et kütt nix". Das Ergebnis der query ist leer, sprich echo $db->num_rows(); wirft 0 aus. Es sind in der Kategorie 5 Artikel online. Hast Du einen Tipp? :D

Re: Artikelblättern (Paging) mit Vorschaubild und -titel

Verfasst: Di 3. Nov 2015, 21:28
von benja
Kann man das Modul so anpassen, dass es durch Kategorien blättert? Ich brauche es für eine Kategorie zum Artikelblättern innerhalb einer Kategorie und einmal soll es durch die Startartikel der einzelnen Unterkategorien blättern.
Es geht dabei natürlich um 2 verschiedene Hauptnavigationspunkte.

Liebe Grüsse
benja

Re: Artikelblättern (Paging) mit Vorschaubild und -titel

Verfasst: Mi 4. Nov 2015, 10:39
von Oldperl
Hallo benja,

das Modul auf Kategorien umzubauen macht keinen Sinn. Mit den neuen Funktionen der 4.9 ist es aber problemlos möglich ein entsprechendes Modul zu stricken.

Gruß aus Franken

Ortwin

Re: Artikelblättern (Paging) mit Vorschaubild und -titel

Verfasst: Fr 14. Jul 2017, 10:04
von avito
Hallo zusammen!
Ein klasse Modul. Und es läuft hervorragend unter 4.9.12
Vielen, vielen Dank dafür.

Ich würde als previous_title und next_title gerne ein CMS_HTML ausgeben anstatt der HTMLHEAD.
Irgendwie kann ich das nicht und würde mich über einen Tipp freuen.
Kann mir bitte jemand helfen?

Viele Grüße und einen schönen Freitag.

Re: Artikelblättern (Paging) mit Vorschaubild und -titel

Verfasst: Fr 14. Jul 2017, 13:54
von chris8408
Hallo,

du müsstes den SQL anpassen.
Aktuell werden alle Types (Headline, Headline2, CMS-Content) zurückgegeben und der erste genommen.
Wenn du das einschränken willst einfach in die Where-Bedingung die Einschränkung auf deinen Typ einbauen.

==> AND CONTENT.typeid = 8

8 ist einfach ein Beispiel...

Code: Alles auswählen

$sql = "SELECT DISTINCT  CONCAT( UPLOADS.dirname, UPLOADS.filename ) AS path, CONTENT.value as page_title, ARTLANG.idart, ARTLANG.title, CATART.idcat, ARTLANG.created, ARTLANG.idartlang AS idartlang, ARTLANG.idartlang AS idartlang, CATART.idcat AS idcat, CATART.idcatart AS idcatart 
FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["upl"]." AS UPLOADS, ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat_lang"]." AS CATLANG, ".$cfg["tab"]["content"]." AS tblData, ".$cfg["tab"]["content"]." AS CONTENT, ".$cfg["tab"]["cat"]." AS CAT
WHERE CAT.idcat='$idcat'
AND ARTLANG.idart = CATART.idart
AND CATART.idcat = CAT.idcat
AND tblData.idartlang = ARTLANG.idartlang 
AND CATLANG.idlang = ARTLANG.idlang 
AND CATLANG.idcat = CATART.idcat
AND ARTLANG.idart = CATART.idart
AND ARTLANG.idlang = '$lang' 
AND ARTLANG.online = '1'
AND tblData.idartlang != CATLANG.startidartlang
AND tblData.value = UPLOADS.idupl
AND tblData.idtype = 22
AND CONTENT.typeid = 8
AND CONTENT.idartlang = tblData.idartlang
ORDER BY ".$sortiert." ".$steigung;
Gruß,

Christian

Re: Artikelblättern (Paging) mit Vorschaubild und -titel

Verfasst: Fr 14. Jul 2017, 14:14
von avito
Hallo Christian.

Vielen lieben Dank für Deine Unterstützung. Ich bin froh, so schnell Hilfe gefunden zu haben.
Viele Grüße, Tom

Re: Artikelblättern (Paging) mit Vorschaubild und -titel

Verfasst: Fr 14. Jul 2017, 18:19
von Oldperl
Servus,
chris8408 hat geschrieben:
Fr 14. Jul 2017, 13:54
Wenn du das einschränken willst einfach in die Where-Bedingung die Einschränkung auf deinen Typ einbauen.

==> AND CONTENT.typeid = 8

8 ist einfach ein Beispiel...
Funktioniert aber wiederholbar nur, wenn der Typ auch immer diese ID hat. Dies ist in 4.9 aber nicht mehr gegeben, da inzwischen ja in der DB das autoindex genutzt wird. Daher sollte man besser erst die ID zum entsprechenden Type ermitteln.

Gruß aus Franken

Ortwin