Neueste News einer Kategorie auf beliebiger Seite(z.B. Home)

Gesperrt
kptkip
Beiträge: 192
Registriert: Mi 8. Jun 2005, 18:02
Kontaktdaten:

Neueste News einer Kategorie auf beliebiger Seite(z.B. Home)

Beitrag von kptkip » Do 7. Jul 2005, 10:31

Hallo Ich habe ein neues Modul erstellt, das den neuesten Artikel (News) einer wählbaren Kategorie auf einer beliebigen Seite inklusive eingebettetem Bild und Bildunterschrift ausspuckt.

Im Input kann man folgendes wählen:

1. Die Kategorie (noch ohne Unterkategorie)
2. Startartikel Ja/Nein
3. Anzahl der Zeichen, nach der der Text gekürzt werden soll. Falls kein Wert eingegeben wird, wird der komplette Text ausgegeben. (allerdings noch ohne Berücksichtigung des Wortendes)
4. Linktext, der bei abgekürztem Ausgabetext als "Weiter"-Button verwendet werden soll.

Vielleicht kann das ja jemand gebrauchen. Erweiterungen dafür habe ich s.o. schon im Kopf, allerdings kommt das erst in Kürze - aber vielleicht hat ja der eine oder andere Lust etwas dran zu basteln ;-))


Input-Code:

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Neueste News
*
* Ausgabe des neuesten Artikels aus einer wählbaren Kategorie
* basiert in Fragmenten auf der Artikelliste von Thilo
* 1.Gibt die Headline eines Artikel mit aus
* 2.Gibt ein Bild (falls vorhanden) der News mit Untertitel aus
* 3.Startartikel zuschaltbar
* 4. Textkürzung möglich (noch ohne Berücksichtigung des Wortendes)
* Author : Alexander Marquart <info at kptkip punkt de>
* Copyright : None
* Created : 06-07-05
* Modified : 
************************************************/


// selected category
$selected = "CMS_VALUE[0]";
$seldir = "CMS_VALUE[9]";
$selimg = "CMS_VALUE[11]";

//funktion für die checkboxen
function d_checked($which) {
  if ($which != "") {
    return "checked";
  }
} // end function


echo "<table cellspacing=\"0\" cellpadding=\"2\" border=\"0\">
         <tr bgcolor=\"#E8E8EE\" valign=\"top\">
            <td></td>
            <td><input type=\"checkbox\" value=\"on\" ".d_checked("CMS_VALUE[14]")." name=\"CMS_VAR[9]\"></td>
            <td width=\"120\" class=\"text_medium\">Ausgabe mit Startartikel</td>
            <td></td>
<td class=\"text_medium\">Kategorie wählen:<br>
         
<select name=\"CMS_VAR[0]\">";

if($selected!="0" && $selected!=""){
             echo"<option value=\"0\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, ".
                     $cfg["tab"]["cat"]." AS B,  ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat ".
                     "AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ".
                     "AND C.visible=1 ORDER BY A.idtree";
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
             
              $spaces .= ">";


              if ($selected == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "</select>";
echo "</td>
<td></td>     
</tr>";

echo"
<tr bgcolor=\"#E8E8EE\" valign=\"top\">
            <td></td>
            <td></td>
            <td width=\"120\" class=\"text_medium\"><br>Anzahl der Zeichen:</td>
            <td></td>
<td class=\"text_medium\"><br>
<input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\" size=\"24\">";

echo "</td>
<td></td>     
</tr>";

echo"
<tr bgcolor=\"#E8E8EE\" valign=\"top\">
            <td></td>
            <td></td>
            <td width=\"120\" class=\"text_medium\"><br>Linktext zur kompletten Nachricht:</td>
            <td></td>
<td class=\"text_medium\"><br>
<input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=\"24\">";

echo "</td>
<td></td>     
</tr></table>";
Und hier der Output:

Code: Alles auswählen

<?
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Neueste News
*
* Ausgabe des neuesten Artikels aus einer wählbaren Kategorie
* basiert in Fragmenten auf der Artikelliste von Thilo
* 1.Gibt die Headline eines Artikel mit aus
* 2.Gibt ein Bild (falls vorhanden) der News mit Untertitel aus
* 3.Startartikel zuschaltbar
* 4. Textkürzung möglich (noch ohne Berücksichtigung des Wortendes)
* Author : Alexander Marquart <info at kptkip punkt de>
* Copyright : None
* Created : 06-07-05
* Modified : 
************************************************/

$newscat = CMS_VALUE[0];
$htmlLength = "CMS_VALUE[2]";
$linkString = "CMS_VALUE[1]";


// Keine Ausgabe ohne Kategorie-Auswahl
////////////////////////////////////////////////
if($newscat!="0" && $newscat!=""){  

 // Soll der startartikel mit ausgegeben werden?
 $isstarton = "AND CATART.is_start = '0' AND"; 
 $echo_startartikel = "CMS_VALUE[9]";
 if($echo_startartikel !=""){
  $isstarton = "AND";
 }

 // Alle Artikel MIT/OHNE Startartikel
 $newsquery = "SELECT ARTLANG.idart AS newsidart, ARTLANG.idartlang AS newsidartlang, ARTLANG.created AS created "
	."FROM ".  $cfg["tab"]["cat_art"]." AS CATART,".$cfg["tab"]["art_lang"]." AS ARTLANG "
	."WHERE CATART.idcat='$newscat' AND ARTLANG.idart=CATART.idart AND ARTLANG.idlang='$lang' AND ARTLANG.online='1' "
	.$isstarton." ARTLANG.locked='0' "
	."ORDER BY ARTLANG.created DESC";
 $db->query($newsquery);$db->next_record();


 // IDs und Datum sichern
 $newsidart = $db->f("newsidart");
 $newsidartlang = $db->f("newsidartlang");
 $newscreated= date("d.m.y",strtotime($db->f("created")));

 // Inhalte auslesen
 $nStringquery = "SELECT idtype,value FROM ".  $cfg["tab"]["content"] ." WHERE idartlang='$newsidartlang' ";
 $db->query($nStringquery);

 // Inhalte in eigene Arrays schreiben (in Zukunft mehrere Bilder und Texte möglich - kommt noch ;-)!)
 while($db->next_record()){
   switch($db->f("idtype")){
    case "1":
     $headerStrings[] =$db->f("value");  break;
    case "2":
     $htmlStrings[] =$db->f("value");  break;
    case "4":
     $imageIds[] =$db->f("value");  break;
    case "5":
     $imageStrings[] =$db->f("value");  break;
   }
 }

 // Ausgabe des Contents und evtl. Kürzen des Textes


if (!empty($htmlLength) && strlen(urldecode($htmlStrings[0]))>$htmlLength+4){
 $htmlString = substr(urldecode($htmlStrings[0]),0,$htmlLength);
 $htmlString .= "... <a href=\"/front_content.php?idart=" .$newsidart. "\">".$linkString ."</a>";
}
else{
 $htmlString = urldecode($htmlStrings[0]);
}

  echo "<h2>".urldecode($headerStrings[0])."</h2>\n";

// Falls ein Bild existiert, dessen URL einbetten
 if(!empty($imageIds[0])){
  $nImagequery = "SELECT filename,dirname FROM ".  $cfg["tab"]["upl"] ." WHERE idupl='$imageIds[0]' ";
  $db->query($nImagequery); $db->next_record();
  $nImageURL = "/upload/".$db->f("dirname").$db->f("filename");
  echo "<div style=\"float:right; margin:0px 0px 3px 5px;\">"
          ."<img src=\"$nImageURL\" alt=\"$imageStrings[0]\" /><br />";
   if(!empty($imageStrings[0]))
    echo "<span class=\"bold\">$imageStrings[0]</span>";
   echo "</div>";
 }
  echo "<p><span class=\"bold\">". $newscreated." | </span>".$htmlString;



}
// END
?>
Viel Spaß dabei und Anregungen sind wie immer gerne willkommen!

Gruß
Kpt|Kip[/code]

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 11. Jul 2005, 11:36

hab mir das jetzt nicht weiter angesehen...

ist ein mehrfach einsatz innerhalb eines templates möglich ? (sieht auf den ersten blick nicht so aus)
gibts ein beispiel wo man sich das ansehen kann (url)?
*** make your own tools (wishlist :: thx)

kptkip
Beiträge: 192
Registriert: Mi 8. Jun 2005, 18:02
Kontaktdaten:

Beitrag von kptkip » Mi 20. Jul 2005, 10:04

Der Mehrfach-Einsatz ist m.E. (noch) nicht möglich. Ich habe mich damit noch nicht so sehr beschäftigt. Bis jetzt reichte es mir das MOdul einmal pro Seite zu benutzen. Kommt aber auf die Agenda! :-))
Dafür ist im aktuellen Skript (stelle ich dieser Tage auf meiner Webpage online) schon das Trennen des Textes an Leerstellen drin.

Sehen kann man das Ganze unter:
http://www.beiuns-beieuch.de
Die News kommt aus dem Bereich Aktuell->Alle Meldungen.

Zu sehen ist das Ergebnis auf der Startseite und unter Aktuell.

Gruß
Kpt|Kip

Gesperrt