Im Administrationsmodul der News kann man den Kategorien Unterkategorien zuordnen und so wunderschön einen Endlosbaum schaffen.
Es ist jedoch nicht möglich alle Beiträge einer Hauptkategorie (höheren Kategorie) gleichzeitig mit allen Beiträgen der dazugehörigen Unterkategorien anzeigen zu lassen. Hier ein kleiner Hack, der das bewerkstelligt.
class/class.newsstory.php:
in der class NewsStory 2 Funktionen zufügen
function getsubtopics($topic) { global $db; $psql=array(); $sql = "SELECT topic_id FROM ".$db->prefix("topics")." WHERE topic_id=$topic or topic_pid=$topic"; $res = $db->query($sql); $rows = $db->num_rows($res); while ( $myrow = $db->fetch_array($res) ) { list($key, $val) = each($myrow); if ($val != $topic) { $subtopics = NewsStory::getsubtopics($val); $psql=array_merge($psql, $subtopics); } else { $psql[] = "$val"; } } return $psql; }
function makesubtopicsql($topic) { $allsubtopics=NewsStory::getsubtopics($topic); $ret="topicid=".implode(" OR topicid=$id",$allsubtopics); return $ret; }
in der getAllPublished() eine zeile Ändern: diese: $sql .= " AND topicid=".intval($topic)." AND (ihome=1 OR ihome=0)"; in diese: $sql .= " AND (".NewsStory::makesubtopicsql($topic).") AND (ihome=1 OR ihome=0)";
in der function CountByTopic auch: diese: $sql .= " WHERE topicid=".intval($topicid); in diese: $sql .= " WHERE topicid=".NewsStory::makesubtopicsql($topicid);
bei mir "scheint" es zu laufen, da ich aber nur ein kleines testsystem mom habe weiß ich nicht ob ich wichtige dinge übersehen haben . welchen zweck hat zb die getbytopics() function. hab nirgends einen aufruf gefunden.
Dabei ist mir in der topics.php auch ein Bug aufgefallen. Als subkategorie wird nur die erste ebene angezeigt.