Seite 1 von 1
Interesse an clientübergreifender Artikel-(News-)liste?
Verfasst: Mi 6. Nov 2002, 22:11
von detlev
Besteht Interesse an einem Modul Artikelliste, (für zentrale Startseite), das alle Artikel aus sämtlichen Client-News-Verzeichnissen auf den obersten Stukturebenen client-übergreifend inclusive Navigation ausgibt ?
Gruß
Detlev
Verfasst: Mi 6. Nov 2002, 23:47
von Eppi
ja

Verfasst: Do 7. Nov 2002, 16:55
von detlev
Geschafft:
Das Modul für die clientübergreifende Newsausgabe mit
sessiongesteurter Navigation,
wenn mehr als die voreingestellte Newsanzahl vorhanden ist.
Vorbedingungen:
Die Clients haben auf der Hauptebene einen eigenen neuen Baum
der News... heißt.
Dieser Baum muss den Navigationslevel Null haben.
Sämtliche Artikel aus diesen News-Verzeichnissen werden nach Erstelldatum
aufgelistet.
Taucht im Titel des Artikels der String (intern) auf, wird er nicht angezeigt
(Filterung zwischen wichtigen, clientübergreifenden und unwichtigeren Artikeln).
Die Grafiken graupfeil.gif, graupfeil_links, leer.gif sowie die verwendeten
css-Klassen habe ich nicht herausgefiltert, müsst ihr selber machen.
Meine Datenbank hat eine zusätzliche Tabelle:
CREATE TABLE int_linkstrg (
linktstrg_ID tinyint(4) NOT NULL auto_increment,
client_ID tinyint(4) NOT NULL default '0',
linktitel varchar(255) NOT NULL default '',
linkuntertitel varchar(255) NOT NULL default '',
aufgeklappt varchar(10) NOT NULL default 'nein',
PRIMARY KEY (linktstrg_ID),
UNIQUE KEY client_ID (client_ID)
) TYPE=MyISAM;
INSERT INTO int_linkstrg VALUES (1, 1, 'Chirurgische Klinik', 'Direktor: Prof. Dr. Dr. Weisskittel', 'nein');
INSERT INTO int_linkstrg VALUES (2, 2, 'Intranet-Startseite<br />Bergmannsheil', '', 'nein');
INSERT INTO int_linkstrg VALUES (3, 3, 'Pflegedienst', 'Leitung: Frau J. Musterfrau', 'nein');
INSERT INTO int_linkstrg VALUES (4, 4, 'Abteilung Gefahrtsoffe, Entsorgung, Umweltschutz und Abfallwirtschaft', 'Leitung: Herr A. Mustermann', 'nein');
INSERT INTO int_linkstrg VALUES (5, 5, 'Personalrat des Bergmannsheil', 'Vorsitzender: Herr Alleswirdgut', 'ja');
diese benötige ich sowohl, um den Client beim Newsmodul namentlich mit auszugeben,
als auch für die Ausgabe des richtigen Clientnamen und Chefs wenn ich innerhalb der Site den Client wechsle.
Wenn ihr diese Tabelle nicht einfügen wollt, müsst ihr die Datenbankabfrage im Outputmodul
um diese Tabelle kürzen, ebenso die Ausgabe der entspürechenden Variablen rausnehmen
///////////////////////////////////
Gruß
Detlev
//////////////////////////////////
/////////////////////////////////////////////////////
modul input
/////////////////////////////////////////////////////
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr>
<td>Anzahl der gezeigten News:</td>";
if("CMS_VALUE[1]"!=0){
echo"<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\"></td>";
}
else{
echo"<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"10\"></td>";
}
echo"
</tr>
<tr>
<td>Untertitel (Anzahl Zeichen)</td>";
if("CMS_VALUE[3]"!=0){
echo"<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\"></td>";
}
else{
echo"<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"200\"></td>";
}
echo"
</tr>
</table>";
/////////////////////////////////////////////////////
modul output
/////////////////////////////////////////////////////
//wieviele Artikel werden gezeigt
$segment_length="CMS_VALUE[1]";
//Anzahl der Zeichen der Summary
$maxchar="CMS_VALUE[3]";
$query="SELECT
a.title,
a.summary,
a.created,
a.lastmodified,
e.linktitel,
g.name,
f.idclient,
a.idlang,
b.idcat,
a.idside
FROM
$cfgTab_side_lang a,
$cfgTab_cat_side b,
$cfgTab_cat_tree c,
$cfgTab_cat_lang d,
int_linkstrg e,
$cfgTab_side f,
$cfgTab_clients g
WHERE
a.online='1' and
a.idside=b.idside and
b.idcat=d.idcat and
d.name like 'news%' and
d.visible='1' and
d.idcat=c.idcat and
c.level='0' and
a.idside=f.idside and
f.idclient=e.client_ID and
g.idclient=f.idclient
ORDER BY
a.created desc
";
$db->query($query);
//$newscounter = $db->num_rows($db);
//Variablenzuweisung
while($db->next_record()){
// check ob die news den sperrvermerk (intern) haben
if(!eregi("\(.?intern.?\)",$db->f("title"))) {
$news_title[]=$db->f("title");
$summary_long=$db->f("summary");
$length=strlen($summary_long);
if ($length > $maxchar) {
$shortend = substr($summary_long,0,$maxchar);
$news_summary[] = $shortend . " ...";
}
else $news_summary[]=$summary_long;
$news_created[] =date("d.m.y H:i",strtotime($db->f("created")));
if(($db->f("lastmodified"))!=($db->f("created"))){
$news_lastmodified[] = date("d.m.y H:i",strtotime($db->f("lastmodified")));
}
$news_dept[] =eregi_replace("<br ?/?>"," ",$db->f("linktitel"));
$news_name[] =$db->f("name");
$news_client[] =$db->f("idclient");
$news_lang[] =$db->f("idlang");
$news_idcat[] =$db->f("idcat");
$news_idside[] =$db->f("idside");
} //ende sperrvermerk-check
} //ende Variablenzuweisung
//wie viele oeffentliche News liegen vor?
$news_oeff=count($news_title);
//session-register des Startwertes für das angezeigte Newssegment des Newspools
$sess->register("segment_start");
//wenn per link ($segment_start_url) ein Startwert kommt
if(isset($segment_start_url))
$segment_start[$client]=$segment_start_url;
//wenn weniger Artikel da sind, als gezeigt werden sollen
if ($segment_start[$client]<$segment_length)
$segment_start[$client]=0;
//html-Tabelle Kopf der News-Seite
echo"<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr> <td rowspan=\"2\" width=\"76%\">
<span class= \"ueberschrift\">Das zentrale Newsarchiv<br /></span>
<span class = \"untertitel\">Zur Zeit liegen ";
if($news_oeff ==0) echo "keine";
else echo $news_oeff;
echo " Einträge im Newsarchiv</span><br /><br />
</td>";
//wenn die Weiterschaltung benötigt wird
if($news_oeff>$segment_length){
$link = $PHP_SELF."?client=$client&lang=$lang&idcat=$idcat&idside=$idside";
echo"
<td width=\"2%\" align=\"right\" height=\"50%\" valign=\"top\"> </td>
<td width=\"20%\" align=\"center\" class=\"fontklein\" height=\"50%\" valign=\"top\">";
//wenn es ältere News gibt
if($segment_start[$client]<$news_oeff-$segment_length){
$summe_url=$segment_start[$client]+$segment_length;
echo"<a href=\"$link&segment_start_url=".$summe_url."\">
ältere News</a>
</td>
<td width=\"2%\" align=\"right\" height=\"50%\" valign=\"top\">
<a href=\"$link&segment_start_url=".$summe_url."\">
<img src=\"../grafiken/graupfeil.gif\" width=\"13\" height=\"11\" border=\"0\">
</a>
</td>";
}//end if ältere News
else {echo " </td><td height=\"50%\"><img src=\"../grafiken/leer.gif\" height=\"15\"></td>";}
echo"</tr>
<tr>
<td width=\"2%\" align=\"right\" height=\"50%\" valign=\"top\">";
//wenn es neuere News gibt
if($segment_start[$client]>0){
$summe_url=$segment_start[$client] - $segment_length;
if ($segment_start[$client]<$segment_length)
$summe_url=0;
echo "<a href=\"".$link."&segment_start_url=".$summe_url."\">
<img src=\"../grafiken/graupfeil_links.gif\" width=\"13\" height=\"11\" border=\"0\"></a>
</td>
<td width=\"20%\" align=\"center\" class=\"fontklein\" height=\"50%\" valign=\"top\">
<a href=\"".$link."&segment_start_url=".$summe_url."\">neuere News</a>";
}//end if neuere News
else{echo "</td> <td width=\"50%\">";}
echo"</td>
<td width=\"2%\" align=\"right\" height=\"50%\" valign=\"top\"> </td>";
} //end if weiterschaltung
else{
echo"
<td width=\"2%\"> </td><td width=\"20%\"> </td><td width=\"2%\" > </td>
</tr>
<tr>
<td width=\"2%\"> </td><td width=\"20%\"> </td><td width=\"2%\" > </td>";
} //ende else
echo"
</tr>
</table>";
/* einige Kontrollvariablen */
// echo "\$segment_length: ".$segment_length."<br>";
// echo "\$maxchar: ".$maxchar."<br>";
// echo "\$segment_start_url: ".$segment_start_url."<br>";
// echo "\$segment_start[\$client]: ".$segment_start[$client]."<br>";
// echo "<br><br><br>";
/* Ende einige Kontrollvariablen */
/////////////////////////////////////////////////////////
//begin if news
if($news_oeff>0){
//ausgabe durch for-schleife
if($news_oeff >= $segment_length + $segment_start[$client])$n_max=$segment_length+$segment_start[$client];
if($news_oeff < $segment_length + $segment_start[$client]) $n_max=$news_oeff;
for ($n=$segment_start[$client]; $n<$n_max;$n++){
$news_link="../$news_name[$n]/front_content.php?client=$news_client[$n]&lang=$news_lang[$n]&idcat=$news_idcat[$n]&idside=$news_idside[$n]";
echo "<span class = \"fontklein\">".$news_dept[$n]."<br>";
echo "Erstellt: ".$news_created[$n];
if ($news_lastmodified[$n]!=0)
echo" / Geändert: ".$news_lastmodified[$n];
echo "</span><br />";
echo "<span class=\"font\"><b>".$news_title[$n]."</b></span><br>";
echo "<span class=\"untertitel\">".$news_summary[$n]."</span><br>";
echo "<span class = \"fontklein\"><a href =\"".$news_link."\"><img src=\"../grafiken/graupfeil_leer.gif\" border=\"0\"> lesen</a></span><br><br>";
} //end for-schleife
/////////////////////////////////////////////////////////
//Footer - Wiederholung der obigen Start-Tabelle für die Navigation innerhalb der News
echo"<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr> <td rowspan=\"2\" width=\"76%\"></td>";
//wenn die Weiterschaltung benötigt wird
if($news_oeff>$segment_length){
$link = $PHP_SELF."?client=$client&lang=$lang&idcat=$idcat&idside=$idside";
echo"
<td width=\"2%\" align=\"right\" height=\"50%\" valign=\"top\"> </td>
<td width=\"20%\" align=\"center\" class=\"fontklein\" height=\"50%\" valign=\"top\">";
//wenn es ältere News gibt
if($segment_start[$client]<$news_oeff-$segment_length){
$summe_url=$segment_start[$client]+$segment_length;
echo"<a href=\"$link&segment_start_url=".$summe_url."\">
ältere News</a>
</td>
<td width=\"2%\" align=\"right\" height=\"50%\" valign=\"top\">
<a href=\"$link&segment_start_url=".$summe_url."\">
<img src=\"../grafiken/graupfeil.gif\" width=\"13\" height=\"11\" border=\"0\">
</a>
</td>";
}//end if ältere News
else {echo " </td><td height=\"50%\"><img src=\"../grafiken/leer.gif\" height=\"15\"></td>";}
echo"</tr>
<tr>
<td width=\"2%\" align=\"right\" height=\"50%\" valign=\"top\">";
//wenn es neuere News gibt
if($segment_start[$client]>0){
$summe_url=$segment_start[$client] - $segment_length;
if ($segment_start[$client]<$segment_length)
$summe_url=0;
echo "<a href=\"".$link."&segment_start_url=".$summe_url."\">
<img src=\"../grafiken/graupfeil_links.gif\" width=\"13\" height=\"11\" border=\"0\"></a>
</td>
<td width=\"20%\" align=\"center\" class=\"fontklein\" height=\"50%\" valign=\"top\">
<a href=\"".$link."&segment_start_url=".$summe_url."\">neuere News</a>";
}//end if neuere News
else{echo "</td> <td width=\"50%\">";}
echo"</td>
<td width=\"2%\" align=\"right\" height=\"50%\" valign=\"top\"> </td>";
} //end if weiterschaltung
else{
echo"
<td width=\"2%\"> </td><td width=\"20%\"> </td><td width=\"2%\" > </td>
</tr>
<tr>
<td width=\"2%\"> </td><td width=\"20%\"> </td><td width=\"2%\" > </td>";
} //ende else
echo"</tr>
</table>";
} //end if news
Verfasst: Do 7. Nov 2002, 18:06
von detlev
Sorry, ich habe das Ausgabemodul 2 Stunden nachdem ich es hier reingepostet habe, an Ort und Stelle noch um die fehlende Möglichkeit der Kürzung der Untertitel vervollständigt.
Gruß
Detlev