Přihlásit se

modul posledni prispevky z fora

06. říj 2015 22:04 #123808
modul posledni prispevky z fora od Tydou
Uživatel
Ahoj, mozna se snazim o neco co uz predemnou nekdo napsal, prolezl jsem forum, ale nic co by se mi hodilo jsem nenasel, jediny co se tak nejak resilo je JFusion, ale ja nepotrebuju propojovat ucty forum/web, pripadne pokud umi zobrazit jen prispevky tak se rad priucim jak na to. Po prechodu na Joomlu z klasicky psanych stranek se snazim rozbehnout okno s poslednimi prispevky z phpbb fora, ktery bezi v jedny db jako joomla. Snazil jsem se pouzit to co uz predemnou napsal predchozi spravce ale moc to nefunguje, prechodem na novejsi php uz to hazelo chyby ale slo to a pak jsem to vypnul uplne.

Vytvoril jsem si svuj modul do kteryho bych to chtel zakomponovat, nainstaloval ho ale pravdepodobne se bude jste muset upravit xml soubor a u zbytku souboru jen sladit funkce

mod_forum.xml
Code:
<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1.0" client="site" method="upgrade"> <name>Forum</name> <author>Tydou</author> <version>1.0.0</version> <description>Forum news topic</description> <files> <filename>mod_forum.xml</filename> <filename module="mod_forum">mod_forum.php</filename> <filename>index.html</filename> <filename>helper.php</filename> <filename>tmpl/default.php</filename> <filename>tmpl/index.html</filename> </files> <config> </config> </extension>

helper.php
Code:
<?php class ModForumHelper { function TADY NEVIM CO() { return; } function getlastmessages($numofmessages = 8) { // How Many Topics you want to display? $topicnumber = $numofmessages; // Change this to your phpBB path $urlPath = "forum"; // Database Configuration (Where your phpBB config.php file is located) include $urlPath.'/config.php'; $link = mysql_connect($dbhost, $dbuser, $dbpasswd) or die("Could not connect"); mysql_select_db($dbname) or die("Could not select database"); // Get 5 Latest Posts. $qry = mysql_query("SELECT * FROM `phpbb_posts` ORDER BY `post_id` DESC LIMIT 8"); while($row=mysql_fetch_array($qry)) { // Get Author Name. $author1 = mysql_query("SELECT * FROM `phpbb_users` WHERE `user_id` = '".$row['poster_id']."'"); $author2 = mysql_fetch_array($author1); $author = $author2['username']; // Get the Topic Name. $topic1 = mysql_query("SELECT * FROM `phpbb_topics` WHERE `topic_id` = '".$row['topic_id']."'"); $topic2 = mysql_fetch_array($topic1); $topic = $topic2['topic_title']; printf("<a href=\"".$urlPath."/viewforum.php?f=%s\" target=\"_BLANK\">%s</a> <b>></b> <a href=\"".$urlPath."/viewtopic.php?f=%s&t=%s&p=%s#%s\" target=\"_BLANK\">%s</a> <b>by</b> <a href=\"".$urlPath."/profile.php?mode=viewprofile&u=%s\" TARGET=\"_blank\">%s</a><br />", $row['forum_id'], $forum, $row['forum_id'], $row['topic_id'], $row['post_id'], $row['post_id'], $topic, $row['poster_id'], $author); } } }

default.php
Code:
<?php defined('_JEXEC') or die; ?> <? $forum = new foruminfo(); $forum->getlastmessages(8); ?>

mod_forum.php
Code:
<?php defined('_JEXEC') or die; // Include the syndicate functions only once require_once __FILE__ . '/helper.php'; $forum = new foruminfo(); $forum->getlastmessages(8); ?>

Díky za jakoukoliv radu a pomoc ;)

06. říj 2015 22:36 - 06. říj 2015 22:39 #123809
Odpověď od Ernst
Joomla Expert
Pardon, já odpovídal na nejnovější články, nevšiml jsem si, že se jedná o fórum

06. říj 2015 22:57 #123812
Odpověď od Cony
Moderátor
1/ nepoužívejte zkrácené <? ale plné <?php, ušetříte si do budoucna problémy.
2/ TADY NEVIM CO - tak pak nic :)
3/ ve funkci je připojení k databázi. To je zbytečné, již k databázi připojen jste, stačí použít funkce Joomly (JDatabase)
4/ nepotřebujete new foruminfo - máte ModForumHelper, tedy
Code:
$topics = ModForumHelper::getlastmessages();
a v default.php už jen cyklus
Code:
foreach ($posts as $post) ....
5/ Pokud nechcete být fajnšmekr a přidávat modulu parametry, v XML nic moc měnit nemusíte (spíš nic než moc)

06. říj 2015 23:21 #123814
Odpověď od Tydou
Uživatel
Díky za radu, neco z toho chapu, ale ve finale to asi do kupy nedam, slo by to trochu podrobneji rozepsat?

To pripojeni k databazi je mysleno toto?
Code:
// Database Configuration (Where your phpBB config.php file is located) include $urlPath.'/config.php'; $link = mysql_connect($dbhost, $dbuser, $dbpasswd) or die("Could not connect"); mysql_select_db($dbname) or die("Could not select database");

Ted kdyz to zkusim pustit tak to hodi jen bilou stranku po refreshi.

07. říj 2015 09:46 - 07. říj 2015 09:48 #123823
Odpověď od Cony
Moderátor
Bílá stránka znamená chybu a vyplé hlášení chyb. Zapněte si v globálním nastavení hlášení chyb na maximum.

Připojení k Databázi je opravdu to co jste psal. V podstatě ten kód co máte je jen jeden jednoduchý dotaz na databázi.
např. takto

helper.php
Code:
<?php class ModForumHelper { public static function getLastPosts($count = 8) { $db = JFactory::getDBO(); $query = $db->getQuery(true) ->select('p.*.u.username,t.topic_title') ->from('phpbb_posts AS p') ->join('LEFT','phpbb_users AS u ON u.user_id=p.poster_id') ->join('LEFT','phpbb_topics AS t ON t.topic_id=p.topic_id') ->order('post_id DESC') ->setLimit($count); $db->setQuery($query); return $db->loadObjectList(); } }
a pak
Code:
$posts = ModForumHelper::getLastPosts();
a
Code:
<?php foreach ($posts as $post) { ?> <a href="/forum/viewtopic.php?f=<?php echo $post->forum_id; ?>&t=<?php echo $post->topic_id; ?>&p=<?php echo $post->post_id; ?>#<?php echo $post->forum_id; ?>"><?php echo $post->topic_title; ?></a> <strong>napsal:</strong> <a href="/forum/profile.php?mode=viewprofile&u=<?php echo $post->poster_id; ?>"><?php echo $post->username; ?></a> <?php }
PS. píšu z hlavy, asi v tom budou nějaké chyby :whistle:

07. říj 2015 10:44 #123825
Odpověď od Houbák
Zkušený uživatel
Jenom bych doplnil Conyho. Pokud budete chtít používat třídu JDatabase z Joomly, musíte mít u databázových tabulek stejný prefix jako mají databázové tabulky v Joomle.

07. říj 2015 12:48 #123828
Odpověď od Tydou
Uživatel
Tak uz jsem to rozbehnul
nejdriv jsem zkusil jeste zmenit DIR místo FILE a uz to zaclo vypisovat prispevky ale se spoustou chyb, opravil jsem mysql na mysqli, tim jsem odstranil dalsi chybu
zustala tam chyba
Strict Standards: Non-static method ModForumHelper::getlastmessages() should not be called statically in /

a

Notice: Undefined variable: forum in /

kdyz vypnu chybove hlaseni tak to zmizi a funguje, ale chtel bych to poladit uplne bez chyb

07. říj 2015 13:03 #123830
Odpověď od Cony
Moderátor

houbak napsal: Jenom bych doplnil Conyho. Pokud budete chtít používat třídu JDatabase z Joomly, musíte mít u databázových tabulek stejný prefix jako mají databázové tabulky v Joomle.

Ne :) nemusí, stačí nepoužívat v dotazech prefix #__ ale natvdo zapsat prefix tabulek, jako zde např. phpbb_

07. říj 2015 13:06 #123831
Odpověď od Cony
Moderátor

Tydou napsal: Strict Standards: Non-static method ModForumHelper::getlastmessages() should not be called statically in /

funkci getlastmessages deklarujte jako public static function.

Tydou napsal: Notice: Undefined variable: forum in /

Někde tam používáte proměnou $forum, která neexistuje (není před použitím deklarována).

07. říj 2015 14:34 #123832
Odpověď od Houbák
Zkušený uživatel

Cony napsal:

houbak napsal: Jenom bych doplnil Conyho. Pokud budete chtít používat třídu JDatabase z Joomly, musíte mít u databázových tabulek stejný prefix jako mají databázové tabulky v Joomle.

Ne :) nemusí, stačí nepoužívat v dotazech prefix #__ ale natvdo zapsat prefix tabulek, jako zde např. phpbb_

Cony, omlouvám se, neuvědomil jsem si, že v mysql dotazu není použit "joomlácký" prefix.

Powered by Fórum