Seite 3 von 4

Modul Artikelblättern überarbeitet

Verfasst: Mi 9. Dez 2009, 17:56
von derSteffen
So nach langem testen...

Modul funktioniert wie beschrieben.
Enthält die Anpassungen von netmax auf Seite 1
Der Bug wurde behoben, dass Artikel mit einer Templatezuweisung nicht angezeigt werden (AND ARTLANG.idtplcfg = 0 einfach rausgenommen )
und jetzt kann sich in der Kategorie auch ein Startartikel befinden (z.B. eine Artikelliste) und dieser wird beim durchblättern nicht mit angezeigt (der Hinweis von smac hat bei mir nicht gefunzt, da er alle Artikel durchblättert hat, vom ganzen CMS nicht nur von der Kategorie).

Getetstet mit 4.8.11

Der Output (Input bleibt so)

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     artikellaettern
* Author      :     smac
* Created     :     21-09-2006
* Created     :     21-09-2006
************************************************/


$anzahl = "CMS_VALUE[1]";
$platzhalter = "CMS_VALUE[2]";
$zurueck = "CMS_VALUE[3]";
$weiter = "CMS_VALUE[4]";
$sortiert = "CMS_VALUE[5]";
$steigung = "CMS_VALUE[6]";

if ($anzahl=="") $anzahl = 1;
if ($platzhalter=="") $platzhalter = "...";
if ($sortiert=="") $sortiert = "ARTLANG.created";
if ($steigung=="") $steigung= "ASC";


$sql = "SELECT 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"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat_lang"]." AS CATLANG, ".$cfg["tab"]["content"]." AS tblData, ".$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
ORDER BY ".$sortiert." ".$steigung;



$db->query($sql);
if ($db->num_rows() != 0)
{
echo "<div class=\"indexnavigation\">";
$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");

$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;
      $zurueck_link ="front_content.php?client=$client&lang=$lang&idcat=".$artikel[$x][1]."&idart=".$artikel[$x][0];
      echo "<a href=\"".$sess->url("$zurueck_link")."\" class=\"links\">".$zurueck."</a> ";
   }
}


// Zahlen und Platzhalter
/* for ($i=0; $i < $j; $i++)
{

   $k = $i+1;
   
   $navmod_link ="front_content.php?client=$client&lang=$lang&idcat=".$artikel[$i][1]."&idart=".$artikel[$i][0];

   if ($idart!=$artikel[$i][0]) {
      if ( $k <= $anzahl || $k > $j-$anzahl) {
         echo "<a href='".$sess->url("$navmod_link")."'>".$k."</a> ";
      }
   } else {
      if ($k != 1 && $k != 2) { echo $platzhalter." " ; };
      echo $k." ";
      if ($k != $j-1 && $k != $j) { echo $platzhalter." "; };
   }   
   
}
*/
// Weiterblättern
for ($i=0; $i < $j; $i++)
{
   if ($idart==$artikel[$i][0] && $i != $j-1) {
      $y = $i+1;
      $weiter_link ="front_content.php?client=$client&lang=$lang&idcat=".$artikel[$y][1]."&idart=".$artikel[$y][0];
      echo "<a href=\"".$sess->url("$weiter_link")."\" class=\"rechts\">".$weiter."</a> ";
   }
}

}   //Ende nicht ausgeben, wenn nur eine Seite...

echo "</div>";
}


?>
Getestet mit 4.8.12 mit und ohne AMR

MfG Steffen

Sortierbar nach Headline?

Verfasst: Mo 18. Jan 2010, 09:44
von derSteffen
Hallo,

ich habe doch noch eine Frage.

Ich würde es gerne realisieren das man auch nach Überschrift des Artikels sortieren kann. Wie müßte denn die SQL-Abfrage sein, um die Headline auszulesen?
Könnte mir da jemand bitte helfen?

Zur Zeit sieht die Abfrage so aus:

Code: Alles auswählen

$sql = "SELECT 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"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat_lang"]." AS CATLANG, ".$cfg["tab"]["content"]." AS tblData, ".$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
ORDER BY ".$sortiert." ".$steigung;
Vielen Dank

MfG Steffen

PS. Natürlich für eine 4.8.12er

Re: Modul Artikelblättern

Verfasst: Fr 13. Aug 2010, 11:14
von Prime
Das Modul funktioniert wunderbar, herzlichen Dank! Kann jemanden kurz erklären, wie man auch das Startartikel in die Blätterfunktion mit einbezieht? Danke schonmal.

Re: Modul Artikelblättern

Verfasst: So 19. Sep 2010, 08:56
von derSteffen
Hi Prime,

probiere mal im Output die Zeile

Code: Alles auswählen

AND tblData.idartlang != CATLANG.startidartlang
in das zu ändern

Code: Alles auswählen

AND tblData.idartlang = CATLANG.startidartlang
MfG steffen

PS: Hast du vielleicht eine Lösung dafür, dass man nach den Überschriften sortieren kann (nicht nache Seitentitel)?

Re: Modul Artikelblättern

Verfasst: Mi 4. Jun 2014, 13:39
von matthiasschnueriger
Ich finde das das Modul "Artikelblättern" nach wie vor sehr praktisch und verwende es regelmässig, sogar in der neuen 4.9er Version.
Das Modul von smac habe ich leicht modifiziert und auf meine Bedürfnisse angepasst (Modul-Output siehe unten)

Jetzt würde ich gerne anstelle der normalen Prev/Next-Navigation Vorschaubilder des vorherigen respektive nächsten Artikels anzeigen lassen. Wie muss ich die SQL-Abfrage anpassen, damit ich das CMS_IMG[1] des jeweiligen Artikels ausgeben kann?

Danke für die Unterstützung!

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     artikellaettern
* Author      :     smac
* Created     :     21-09-2006
* Created     :     21-09-2006
************************************************/



$sortiert = "ARTLANG.created";
$steigung= "DESC";


$sql = "SELECT 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"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat_lang"]." AS CATLANG, ".$cfg["tab"]["content"]." AS tblData, ".$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
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");

$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 "";
?>
	
	
	<nav class="nav-thumbflip">
					<?php
					// Zurückblättern
					for ($i=0; $i < $j; $i++)
					{
					   if ($idart==$artikel[$i][0] && $i!=0) {
						  $x = $i-1;
						  $zurueck_link ="front_content.php?client=$client&lang=$lang&idcat=".$artikel[$x][1]."&idart=".$artikel[$x][0];
						   echo "<a href=\"".$sess->url("$zurueck_link")."\" class=\"prev\"><span class=\"icon-wrap\"><i class=\"fa fa-angle-left\"></i></span>
								<img src=\"upload/bilder/portfolio/thumb.jpg\" alt=\"Previous thumb\"/></a> ";
					   }
					}
					

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

					?>
                    
					
	</nav>

Re: Modul Artikelblättern

Verfasst: Mi 4. Jun 2014, 14:30
von Faar
Eventuell kommst Du über die neue Klasse an den Bildpfad, sofern man weiß, welche ID dort gebraucht wird:
http://api.contenido.org/con493/class-c ... peImg.html

Re: Modul Artikelblättern

Verfasst: Mi 4. Jun 2014, 15:10
von Oldperl
Nein Frank, die nützen einem da nix. Hier muss man gewünschten Daten schon zu Fuß mit Hilfe der cApi-Klassen auslesen.

Gruß aus Franken

Ortwin

Re: Modul Artikelblättern

Verfasst: Mi 4. Jun 2014, 15:18
von Faar
Ja eigentlich habe ich die Info ja auch da her, von der API :)

Wie würdest du es machen? :?

Re: Modul Artikelblättern

Verfasst: Do 5. Jun 2014, 13:22
von Oldperl
Faar hat geschrieben:Wie würdest du es machen? :?
Da man ja in dem Modul offensichtlich die ArtikelId des Vorgänger- und Folgeartikels hat, und die Nummer sowie der Content-Typ ja auch gegeben ist könnte man über die Klasse cApiContentCollection, mit Hilfe der ermittelten idartlang, jeweils den gewünschten Content auslesen. Das sollte in diesem Fall die ID des Uploades/Bildes sein. Nun diesen noch per cUpload auslesen, Pfad zusammen basteln, evtl. das Bild croppen und cachen, und fertig.

Gruß aus Franken

Ortwin

Re: Modul Artikelblättern

Verfasst: Do 5. Jun 2014, 13:45
von Zuschauer
Fällt eigentlich nur mir auf, dass es sich hier um ein Modul für die 4.6.x handelt?
Ihr postet hier Lösungen und Doku-Links für die 4.9 :shock:

Gruß
Zuschauer

Re: Modul Artikelblättern

Verfasst: Do 5. Jun 2014, 14:07
von Oldperl
Zuschauer hat geschrieben:...Ihr postet hier Lösungen und Doku-Links für die 4.9 :shock:
Deswegen muss man doch nicht gleich so geschockt sein :mrgreen:
Für die 4.6 würde ich an dem Modul eh nix mehr basteln. Und für die 4.8 geht es analog meiner Vorgehensweise, halt nur anstelle der neuen cApi-Klassen muss man die eine oder andere Corefunktion nehmen, bzw. sich selbst was basteln.

Aber grundsätzlich ist schon richtig das man natürlich schauen sollte für welche Version die Anpassungen gemacht werden sollen.

Edit: Davon abgesehen hieß es ja
matthiasschnueriger hat geschrieben:...verwende es regelmässig, sogar in der neuen 4.9er Version.
Gruß aus Franken

Ortwin

Re: Modul Artikelblättern

Verfasst: Do 5. Jun 2014, 14:59
von Zuschauer
Oldperl hat geschrieben:Davon abgesehen hieß es ja
matthiasschnueriger hat geschrieben:...verwende es regelmässig, sogar in der neuen 4.9er Version.
... was nicht heißt "nur noch in der neuen 4.9er Version" ;)
Außerdem, auch wenn es alt ist, schauen hier evtl. noch Leute rein, die tatsächlich die 4.6 noch einsetzen.
Wenn dann eine Frage für die neue Version sein sollte, sollte der Fragesteller lieber dort im Forum posten.
Und hier gehören dann m.E. nur Lösungen für die alte Version hin.

Gruß
Zuschauer

Re: Modul Artikelblättern

Verfasst: Do 5. Jun 2014, 17:31
von Oldperl
Ach geh... :wink:
Wenn' s dich stört dann schreib doch einfach nen Post im 4.9er Forum und setz nen Link hier her :mrgreen:

Und bevor das hier noch mehr offtopic wird - Du hast ja recht und man könnte sicherlich so vieles so viel anders machen in dem Forum hier... 8)

Gruß aus Franken

Ortwin

Re: Modul Artikelblättern

Verfasst: Do 5. Jun 2014, 17:38
von Faar
Wir bräuchten hier im Forum so eine Plauder Rubrik, in der nur geplaudert wird 8)

Re: Modul Artikelblättern

Verfasst: Do 5. Jun 2014, 21:34
von Oldperl
[Ironie An]Nee Frank, lass mal, dann hätten wir ja gar keine Zeit mehr was zu schaffen :mrgreen: [Ironie Aus]

Gruß aus Franken

Ortwin