Page 1 of 1
(gelöst) Forum made simple
Posted: Thu May 01, 2008 7:43 pm
by Helmi
Ich habe auf einer Webseite mit CMSMS 1.2.4 Forum made simple installiert, weil ich denke, daß das dort ausreicht, wird nicht so ein großes Forum werden vermutlich. Es funktioniert auch. Nun würde ich gern auf der Startseite (Index) nicht nur die Boards gern anzeigen, sondern darunter auch einen Link auf den letzten Eintrag oder eine Meldung, was der letzte Eintrag war. Geht das? Bei der Forumsmodulhilfe steht leider nichts von weiteren Parametern in der Richtung. Aber vielleicht kann man das trotzdem einrichten? Weiß das jemand?
Re: Forum made simple
Posted: Fri May 02, 2008 12:03 pm
by Helmi
Beim Blog scheint das auch nicht zu gehen, nur bei News.
Hab jetzt die Idee, eine Seite anzulegen, wo man jeweils die letzte Nachricht aus Forum, Blog und News (heißt bei mir Artikel und sind keine News) sehen kann. Aber ich weiß nicht, ob das überhaupt geht und wenn ja, wie.
Re: Forum made simple
Posted: Fri May 02, 2008 5:56 pm
by NaN
Mit einem Benutzerdefinierten Tag dürfte das auf jeden Fall funktionieren.
Weiß nicht wie fit Du mit PHP bist.
Mit dem folgenden Beispiel kannst Du Dir z.B. die Zusammenfassung des letzten News-Eintrags ausgeben lassen.
global $gCms;
$db =& $gCms->GetDb();
$query ="SELECT * FROM ". cms_db_prefix() . "module_news ORDER BY news_date DESC LIMIT 1";
$dbresult = $db->Execute($query);
if($dbresult && $row = $dbresult->FetchRow())
{
$news_summary = $row['summary'];
}
echo $news_summary;
Ähnliches dürfte auch für die Blogs und Forumsbeiträge gehen.
Kenne da jetzt die Tabellennamen nicht.
Aber das Prinizip ist ähnlich.
Um da allerdings einen Link zu dem jeweiligen Eintrag zu erstellen, dürfte es etwas komplizierter werden.
Die Links werden ja vom jeweiligen Modul selbst dynamisch erzeugt.
Ich glaube da wäre es einfacher, die Module Blog und Forum zu modifizieren.
Man müsste nur in der Datei action.default.php des jeweiligen Moduls eine Abfrage einfügen.
Wie gesagt, ich weiß nicht wieviel man Dir da zumuten kann.
Re: Forum made simple
Posted: Sat May 03, 2008 8:07 am
by Helmi
leider hab ich nicht so gründliche Kenntnisse. Von php und auch html hab ich nur soviel Ahnung, wieviel ich jeweils brauchte an Kenntnissen für irgendwelche Projekte. Für html hab ich mir gerade aus der Bücherei ein Buch ausgeliehen, für php hab ich das noch nicht gefunden, und leider ist das html-Buch wie viele andere Bücher aus der Bücherei ein bißchen alt.. nicht auf dem neuesten Stand.
Re: Forum made simple
Posted: Sat May 03, 2008 8:12 am
by Helmi
wenn ich bei den News statt summary nur den Titel ausgeben will, muß ich dann summary durch title ersetzen?
Re: Forum made simple
Posted: Sat May 03, 2008 9:57 am
by cyberman
Eine andere Alternative wäre, so wie beim News-Modul auch die Foren-Einträge als Feed ausgeben zu lassen und dann über einen RSS-Reader anzeigen zu lassen ...
Re: Forum made simple
Posted: Sat May 03, 2008 4:01 pm
by NaN
Oder man nehme meine Modifikation
Habs jetzt erstmal nur fürs Forum.
Dort wird jetzt - ähnlich wie hier im Forum - hinter jedem Board angezeigt wann, von wem und in welchem Topic der jeweils letzte Post war.
Und ist auch gleich mit diesem Topic verlinkt.
War leichter als ich dachte.
Also in der Datei
modules/Forum/action.default.php muss lediglich folgendes hinzugefügt werden (rot markiert):
CheckForumPermission('default'))
return $this->FrontEndDisplayMessage($id, $params, $returnid, $this->Lang('forum_access'));
$this->CurrentPath = $this->GetCurrentPath();
$this->ModulePath = $this->GetModulePath();
// added by NaN to show username of last post in forums list
$feusers = $this->GetModuleInstance('FrontEndUsers');
$arr_url = array();
if(isset($params['lang'])) $arr_url['lang'] = $params['lang'];
$arr_url['property_feu'] = (isset($params['property_feu'])) ? $params['property_feu'] : '';
$arr_url['prev_link'] = 'default';
$sql = "SELECT f.*, COUNT(t.id) as topic_count FROM ".
cms_db_prefix()."module_forum_forums f LEFT JOIN ".cms_db_prefix()."module_forum_topics t ON f.id = t.forum_id
GROUP BY f.id
ORDER BY position, f.name";
$dbresult =& $db->Execute($sql);
$items=array();
while($dbresult && $row = $dbresult->FetchRow())
{
$onerow = new stdClass;
$onerow->id = $row['id'];
$onerow->name = (empty($row['name'])) ? '?' : cms_htmlentities($row['name']);
$onerow->description = cms_htmlentities($row['description']);
$onerow->topic_count = $row['topic_count'];
$arr_localurl = array('action'=>'forum', 'fid'=>$onerow->id);
$prettyurl = $this->CurrentPath.'/forum/forum/'.$row['id'].'/1/'.$returnid;
$onerow->name_link = $this->CreateLink($id, 'forum', $returnid, $onerow->name, array_merge($arr_url,$arr_localurl), '', false, false, '', false, $prettyurl);
// Added by NaN to show last post of current forum in forumslist
$query = "SELECT topic_id,subject,user_id,posted FROM ".cms_db_prefix()."module_forum_posts AS posts
LEFT JOIN ".cms_db_prefix()."module_forum_topics AS topics
ON topics.id=posts.topic_id
LEFT JOIN ".cms_db_prefix()."module_forum_forums AS forums
ON forums.id=topics.id WHERE forum_id=". $row['id'] ."
ORDER BY posted DESC LIMIT 1";
$dbresult2 =& $db->Execute($query);
if($dbresult2 && $row2 = $dbresult2->FetchRow())
{
$arr_url['tid'] = $row2['topic_id'];
$onerow->subject = $row2['subject'];
$onerow->username = $this->lang('guest_user_name');
if($feusers)
{
$username = $feusers->GetUserName($row2['user_id']);
if($username!='')
$onerow->username = $username;
}
$onerow->subject_link = $this->CreateLink($id, 'topic', $returnid, $onerow->subject, array_merge($arr_url,$arr_localurl), '', false, false, '', false, $prettyurl);
$onerow->post_date = $this->FormatDate($row2['posted']);
}
// ---
$items[] = $onerow;
}
$this->smarty->assign('itemcount', count($items));
$this->smarty->assign_by_ref('items', $items);
$this->smarty->assign('last_post_label', $this->Lang('topic_last_post_label'));
$this->smarty->assign('forum_name_label', $this->Lang('forum_name_label'));
$this->smarty->assign('forum_topic_count_label', $this->Lang('forum_topic_count_label'));
$this->smarty->assign('forum_icon', 'ModulePath.'/images/forum.png" alt="'.$this->Lang('forum').'" title="'.$this->Lang('forum').'" width="22" height="22" />');
echo $this->ProcessTemplate('index.tpl');
?>
Anschließend muss man nur noch inder Datei
modules/Forum/templates/index.tpl die Spalte für den letzten Post eintragen:
{if $itemcount > 0}
{$forum_name_label}
{$forum_topic_count_label}
{$last_post_label}
{foreach from=$items item=entry}
{cycle values="forum_alternate1,forum_alternate2" assign="alt_bgcolor"}
{$forum_icon}
{$entry->name_link}
{$entry->description}
{$entry->topic_count}
{$entry->post_date}
by {$entry->username}
in {$entry->subject_link}
{/foreach}
{/if}
Ich hoffe, das ist das was Du wolltest.
Werde das auch gleich mal als Feature-Request fürs Froum-Modul posten.
Re: Forum made simple
Posted: Sat May 03, 2008 6:42 pm
by Helmi
Danke schon mal, konnte es aber noch nicht ausprobieren, weil ich noch ein wwwrun-Problem habe. Ich hab es erst später realisiert, daß man Module nicht über xml hochladen sollte. Nun ist Forum made simple bei mir eigentilch auf wwwrun-Besitzer. Ich bin bei all-inkl.com, da kann man zum Glück über den kasserver die Besitzerrechte ändern, und das hab ich auch für das Forum getan. Leider ändert es nur die Besitzerrechte für die Verzeichnisse, die Dateien sind immer noch wwwrun, und wenn ich die bearbeiten und speichern will, heißt es: Permission denied. Muß mich mal beim Provider erkundigen, ob es eine Möglichkeit gibt, auch die Dateien auf ftp-Besitzer zu setzen.
Re: Forum made simple
Posted: Sat May 03, 2008 6:48 pm
by NaN
Da gibts eine Option für.
Im Web FTP.
Oder im KASserver.
Bei Rekursiv oder so einfach ein Häkchen setzen.
Re: Forum made simple
Posted: Sat May 03, 2008 7:29 pm
by Helmi
so eine einfache Lösung. Danke. Jetzt hat es geklappt, es zeigt im Forum auf der Indexseite jetzt die letzten Einträge an. Ist wirklich ein Gewinn, weil man sonst ja auf den ersten Blick gar nicht sehen kann, wo sich was getan hat.