modul posledni prispevky z fora

Tydou
06. říj 2015 22:04 #123808
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
<?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
<?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
<?php

defined('_JEXEC') or die; ?>

<?
		$forum = new foruminfo();
		$forum->getlastmessages(8);
					?>

mod_forum.php
<?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 ;)

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

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

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
06. říj 2015 22:57 #123812
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
$topics = ModForumHelper::getlastmessages();
a v default.php už jen cyklus
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)

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Tydou
06. říj 2015 23:21 #123814
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?
// 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.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
07. říj 2015 09:46 - 07. říj 2015 09:48 #123823
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
<?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
$posts = ModForumHelper::getLastPosts();
a
<?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:

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Houbák
07. říj 2015 10:44 #123825
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.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Tydou
07. říj 2015 12:48 #123828
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

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

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

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_

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

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

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).

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Houbák
07. říj 2015 14:34 #123832

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.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.