Výpis novinek z fóra na jiné stránce
Výpis novinek z fóra na jiné stránce
Zdravím,
potřeboval bych kód na výpis novinek z fóra phpBB3 které budu vypisovat v iframu na jiné stránce. Stejně jak to mám třeba zde: http://www.n73.eu/
Kód pro výpis novinek pro phpBB2 můžu dodat, neuměl by ho někdo prosím upravit nebo udělat nový ?
děkuji
potřeboval bych kód na výpis novinek z fóra phpBB3 které budu vypisovat v iframu na jiné stránce. Stejně jak to mám třeba zde: http://www.n73.eu/
Kód pro výpis novinek pro phpBB2 můžu dodat, neuměl by ho někdo prosím upravit nebo udělat nový ?
děkuji
Re: Výpis novinek z fóra na jiné stránce
Je to rychle napsané, ale funguje, jediné co budeš muset dodělat jsou styly, stačí tam ale přidat ty co máš v tom svém iframu, zbytek HTML je téměř stejný. Ulož to do soubor newest_posts.php, který nahraješ do rootu fóra, pak už jen můžeš na něj odkázat iframem.
Kód: Vybrat vše
<?php
/**
* newest_posts - raw dump of newest posts from forum
*
* @copyright (c) 2008 phpBB.cz
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
// Number of posts and grabbing permissions
// Počet příspěvků pro zobrazení a oprávnění
$topic_limit = request_var('topic_limit', 5);
$forums = array_unique(array_keys($auth->acl_getf('f_read', true)));
// Select the last topics to which we have permissions
// Vybrat poslední témata ke kterým máme oprávnění
$sql = 'SELECT p.post_id, p.topic_id, p.forum_id, p.post_subject, p.post_time, u.username
FROM ' . POSTS_TABLE . ' p , ' . USERS_TABLE . ' u
WHERE post_approved = 1
AND ' . $db->sql_in_set('forum_id', $forums) . '
AND u.user_id = p.poster_id
ORDER BY post_time DESC
LIMIT 0,' . $topic_limit;
$result = $db->sql_query($sql);
// Proper header since output not buffered
// Poslat hlavičky pro správné kódování, protože výpis obsahu je postupný
header('Content-Type: text/html; charset=utf-8');
// Now let's output the content
// A teď vypsat obsah
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Poslední příspěvky z fóra</title></head><body><div id="post_content"><strong>Novinky z fora:</strong><br/><ul>';
while ($row = $db->sql_fetchrow($result))
{
$url = generate_board_url() . "/viewtopic.{$phpEx}?f={$row['forum_id']}&t={$row['topic_id']}&p={$row['post_id']}#p{$row['post_id']}";
echo '<li><a target="_top" href="' . $url . '">' . $row['post_subject'] . '</a> od ' . $row['username'] . ' v ' . $user->format_date($row['post_time']) . '</li>';
}
echo '</ul></div></body></html>';
?>Re: Výpis novinek z fóra na jiné stránce
Díky moc, máš to u mě. Pánbůh ti to oplatí na dětech! 
Akorád mi tam nefunguje položka "Od" - jméno odesílatele
Akorád mi tam nefunguje položka "Od" - jméno odesílatele
Re: Výpis novinek z fóra na jiné stránce
Omlouvám se, že až nyní, ale teď je ten skript opravený v tom předchozím příspěvku, zobrazuje se i autor.
Re: Výpis novinek z fóra na jiné stránce
Po několikadenním googlování a marné snaze narvat "NV recent topics" na portal místo na index (koliduje s něčím jiným co tam už na portalu je a dělá bílou stránku) se zabývám myšlenkou jak dostat výše uvedený ameeckův kód na portál.
Potřebuju zde: -link (3-kový portál)
vytvořit něco podobného jako zde: -link (2-kový portál)
S tím že do původních portálových "latest news" (3-kový portál) budu tahat (nastavení v ACP) jen adminoznámenípříspěvky z určité části/sekce fóra. Recent topics který už na tom portále je je skutečný recent topics tj. zobrazuje opravdu poslední ZALOŽENÉ topicy. A já potřebuji spíše něco jako je (doufám) popsáno v tomto kódu tj. to co je na fóru viz. druhý link v tabulce vlevo označeno jako "Nové příspěvky".
Zjednodušeně proklikávací odkaz s názvem topicu (nejlépe na poslední příspěvek v tom topicu) + výpis od koho + datum toho posledního příspěvku do toho tématu.
Teď jde o to jak to dostat na portal. Volat přímo z templatu a iframovat to v nově vytvořeném template bloku na portálu?
Nebo spíš doplnit ten kód o ty záhadné "set template array", includovat newest_posts.php do portal.php a v samotném nově vytvořeném bloku template portálu volat hodnoty "set template array". Myslím, že tento druhý způsob by více odpovídal filozofii phpbb. Bohužel jsem pololaik (chcete li pololama) a nevím jak doupravit výše popsaný kód. Pokud někdo poradíte či mírně nakopnete správným směrem předem dík.
edit: Teď jsem si všimnul, že tento kód pravděpodobně generuje titulek (předmět?) posledního příspěvku a ne název topicu kde je poslední příspěvek. Hmmmmm....
Potřebuju zde: -link (3-kový portál)
vytvořit něco podobného jako zde: -link (2-kový portál)
S tím že do původních portálových "latest news" (3-kový portál) budu tahat (nastavení v ACP) jen adminoznámenípříspěvky z určité části/sekce fóra. Recent topics který už na tom portále je je skutečný recent topics tj. zobrazuje opravdu poslední ZALOŽENÉ topicy. A já potřebuji spíše něco jako je (doufám) popsáno v tomto kódu tj. to co je na fóru viz. druhý link v tabulce vlevo označeno jako "Nové příspěvky".
Zjednodušeně proklikávací odkaz s názvem topicu (nejlépe na poslední příspěvek v tom topicu) + výpis od koho + datum toho posledního příspěvku do toho tématu.
Teď jde o to jak to dostat na portal. Volat přímo z templatu a iframovat to v nově vytvořeném template bloku na portálu?
Nebo spíš doplnit ten kód o ty záhadné "set template array", includovat newest_posts.php do portal.php a v samotném nově vytvořeném bloku template portálu volat hodnoty "set template array". Myslím, že tento druhý způsob by více odpovídal filozofii phpbb. Bohužel jsem pololaik (chcete li pololama) a nevím jak doupravit výše popsaný kód. Pokud někdo poradíte či mírně nakopnete správným směrem předem dík.
edit: Teď jsem si všimnul, že tento kód pravděpodobně generuje titulek (předmět?) posledního příspěvku a ne název topicu kde je poslední příspěvek. Hmmmmm....
Naposledy upravil(a) adminsao dne čtv 20. bře 2008 23:27:11, celkem upraveno 1 x.
Re: Výpis novinek z fóra na jiné stránce
Už jsem chtěl jásat a zas nic..........
Re: Výpis novinek z fóra na jiné stránce
No ale bude ten kód pro 2 fungovat i na 3?ameeck píše:Pročti si v tom instalačním souboru Installation notes, je tam toho dost k nastavení
Spíš mě šlo o to ten 3kový kód (uvedený jako první nahoře) vložit "include_once........" do portal.php. A v ten původní kód upravit. Předpokládám, že pro mé účely bych mohl vypustit hlavičky pro správné kódování, a od DOCTYPE po UTF-8, z tabulky načíst i název topicu ve kterém je poslední příspěvek (jenže ehm jak ho přiřadit k tomu správnému poslednímu příspěvku tak aby se zobrazoval název topicu ve kterém je poslední příspěvek a ne předmět posledního příspěvku), a na konci kódu to doplnit o template - assign vars array..........
které bych potom volal k zobrazení v template portálu.
Bylo by to tak správně? Jak to správně provést a něco ne..... .
Re: Výpis novinek z fóra na jiné stránce
Pomíchali se nám tu dvě témata, už jsem je rozdělil
Toho dvojkového kódu si nevšímej, ten tu není relevantní a nebude fungovat tady 
Přímo v kódu by se dalo použít toto:
Ten výpis poslední témat bude dostupný pod polem last_topics, nějak si to tam už seřadíš do templatu, takhle mi to mohlo teoreticky vypadat:
Přímo v kódu by se dalo použít toto:
Kód: Vybrat vše
// Number of posts and grabbing permissions
// Počet příspěvků pro zobrazení a oprávnění
$topic_limit = request_var('topic_limit', 5);
$forums = array_unique(array_keys($auth->acl_getf('f_read', true)));
// Select the last topics to which we have permissions
// Vybrat poslední témata ke kterým máme oprávnění
$sql = 'SELECT p.post_id, p.topic_id, p.forum_id, p.post_subject, p.post_time, u.username
FROM ' . POSTS_TABLE . ' p , ' . USERS_TABLE . ' u
WHERE post_approved = 1
AND ' . $db->sql_in_set('forum_id', $forums) . '
AND u.user_id = p.poster_id
ORDER BY post_time DESC
LIMIT 0,' . $topic_limit;
$result = $db->sql_query($sql);
// Now let's output the content
// A teď vypsat obsah
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('last_topics', array(
'LAST_TOPIC_NAME' => $row['post_subject'],
'LAST_TOPIC_URL' => generate_board_url() . "/viewtopic.{$phpEx}?f={$row['forum_id']}&t={$row['topic_id']}&p={$row['post_id']}#p{$row['post_id']}",
'LAST_TOPIC_NAME' => $row['username'],
'LAST_TOPIC_TIME' => $user->format_date($row['post_time']),
));
}
$db->sql_freeresult($result);
Kód: Vybrat vše
<ul>
<!-- BEGIN last_topics -->
<li>
<a href="{last_topics.LAST_TOPIC_URL}">{last_topics.LAST_TOPIC_NAME}</a> od {last_topics.LAST_TOPIC_NAME} v {last_topics.LAST_TOPIC_TIME}
</li>
<!-- END last_topics -->
</ul>Re: Výpis novinek z fóra na jiné stránce
Dík, dík, dík a ještě jednou dík.
Zdá se, že je to na dobré cestě. -viz. tady
Jenom bych chtěl upozornit pokud si někdo budete kopírovat ten kód (nad tímto příspěvkem) pozor na dvakrát stejné last_topic_name v poli a v kódu do templatu. Jedno z nich přejmenovat v obou kouscích kódu! (při ponechání logicky vypisuje v template/výstupu "username" i na místě "post_subject").
K úplné dokonalosti tomu chybí:
-odstranit duplicitu: Pokud jsou v některém tématu tři po sobě jdoucí nejnovější příspěvky tak se ve výpisu zobrazí všechny tři a možná by stačil jen ten poslední nejnovější z toho tématu.
-místo "post_subject" tam dostat "topic title" toho topicu v němž se nachází nový příspěvek. To jsem bohužel neúspěšně zkoušel. Snažil jsem se inspirovat jedním blokem co už na portálu je a do selectu jsem přidal "topic_title", do from . TOPICS_TABLE . , a v poli místo "post_subject" jsem dal "topic_title" - výsledkem je:
FILE: includes/db/mysql.php
LINE: 158 ............................ $this->sql_error($query);
CALL: dbal_mysql->sql_error()
FILE: portal.php
LINE: 265 ........................... $result = $db->sql_query($sql);
CALL: dbal_mysql->sql_query()
a píše to něco o špatné SQL syntaxi, ale proč v tom kódu jiného bloku portálu to funguje? Asi to nebude tak jednoduché jak si myslím.
Zdá se, že je to na dobré cestě. -viz. tady
Jenom bych chtěl upozornit pokud si někdo budete kopírovat ten kód (nad tímto příspěvkem) pozor na dvakrát stejné last_topic_name v poli a v kódu do templatu. Jedno z nich přejmenovat v obou kouscích kódu! (při ponechání logicky vypisuje v template/výstupu "username" i na místě "post_subject").
K úplné dokonalosti tomu chybí:
-odstranit duplicitu: Pokud jsou v některém tématu tři po sobě jdoucí nejnovější příspěvky tak se ve výpisu zobrazí všechny tři a možná by stačil jen ten poslední nejnovější z toho tématu.
-místo "post_subject" tam dostat "topic title" toho topicu v němž se nachází nový příspěvek. To jsem bohužel neúspěšně zkoušel. Snažil jsem se inspirovat jedním blokem co už na portálu je a do selectu jsem přidal "topic_title", do from . TOPICS_TABLE . , a v poli místo "post_subject" jsem dal "topic_title" - výsledkem je:
FILE: includes/db/mysql.php
LINE: 158 ............................ $this->sql_error($query);
CALL: dbal_mysql->sql_error()
FILE: portal.php
LINE: 265 ........................... $result = $db->sql_query($sql);
CALL: dbal_mysql->sql_query()
a píše to něco o špatné SQL syntaxi, ale proč v tom kódu jiného bloku portálu to funguje? Asi to nebude tak jednoduché jak si myslím.
Re: Výpis novinek z fóra na jiné stránce
Jestli mohu malou prosbu ... zobrazování posledních příspěvků nebo témat na stránce portálu řeším pomocí RSS, ale na Vaší stránce jsem si všimnul, že používáte části kódu phpBB pro zobrazení např. dění na fóru (kdo je online, boti atd.). V kódu phpBB3 se moc nevyznám ... prozradíte postup?
Předem dík.
Předem dík.
Re: Výpis novinek z fóra na jiné stránce
Zdar pls nevíš jak to udělat aby se mi zobrazovali příspěvky jen z určitého fora, prostě do kodu přidat něco aby se tam zadalo id fora a vypisovalo se to z něj, díkyameeck píše:Je to rychle napsané, ale funguje, jediné co budeš muset dodělat jsou styly, stačí tam ale přidat ty co máš v tom svém iframu, zbytek HTML je téměř stejný. Ulož to do soubor newest_posts.php, který nahraješ do rootu fóra, pak už jen můžeš na něj odkázat iframem.Kód: Vybrat vše
<?php /** * newest_posts - raw dump of newest posts from forum * * @copyright (c) 2008 phpBB.cz * @license http://opensource.org/licenses/gpl-license.php GNU Public License */ define('IN_PHPBB', true); $phpbb_root_path = './'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.' . $phpEx); // Start session management $user->session_begin(); $auth->acl($user->data); $user->setup(); // Number of posts and grabbing permissions // Počet příspěvků pro zobrazení a oprávnění $topic_limit = request_var('topic_limit', 5); $forums = array_unique(array_keys($auth->acl_getf('f_read', true))); // Select the last topics to which we have permissions // Vybrat poslední témata ke kterým máme oprávnění $sql = 'SELECT p.post_id, p.topic_id, p.forum_id, p.post_subject, p.post_time, u.username FROM ' . POSTS_TABLE . ' p , ' . USERS_TABLE . ' u WHERE post_approved = 1 AND ' . $db->sql_in_set('forum_id', $forums) . ' AND u.user_id = p.poster_id ORDER BY post_time DESC LIMIT 0,' . $topic_limit; $result = $db->sql_query($sql); // Proper header since output not buffered // Poslat hlavičky pro správné kódování, protože výpis obsahu je postupný header('Content-Type: text/html; charset=utf-8'); // Now let's output the content // A teď vypsat obsah echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Poslední příspěvky z fóra</title></head><body><div id="post_content"><strong>Novinky z fora:</strong><br/><ul>'; while ($row = $db->sql_fetchrow($result)) { $url = generate_board_url() . "/viewtopic.{$phpEx}?f={$row['forum_id']}&t={$row['topic_id']}&p={$row['post_id']}#p{$row['post_id']}"; echo '<li><a target="_top" href="' . $url . '">' . $row['post_subject'] . '</a> od ' . $row['username'] . ' v ' . $user->format_date($row['post_time']) . '</li>'; } echo '</ul></div></body></html>'; ?>
Re: Výpis novinek z fóra na jiné stránce
Ten dotaz v tom skriptu uprav aby vypadal takto:
Pak akorát nahraď X ID zvoleného fóra - AND p.forum_id = X
Kód: Vybrat vše
$sql = 'SELECT p.post_id, p.topic_id, p.forum_id, p.post_subject, p.post_time, u.username
FROM ' . POSTS_TABLE . ' p , ' . USERS_TABLE . ' u
WHERE post_approved = 1
AND ' . $db->sql_in_set('forum_id', $forums) . '
AND u.user_id = p.poster_id
AND p.forum_id = X
ORDER BY post_time DESC
LIMIT 0,' . $topic_limit;
$result = $db->sql_query($sql); Re: Výpis novinek z fóra na jiné stránce
JJ moc díky, taky sem se v tom šťoural ale nic sem nevykouzlil
Re: Výpis novinek z fóra na jiné stránce
Čau, hele sry že otravuju, ale šlo by to ještě trochu poupravit, potřebuju tam vypsat i to co v tom příspěvku je, ale nevim jakou tabulku.díky
-
Kamahl
- Příspěvky: 1713
- Registrován: ned 25. bře 2007 1:00:00
- Bydliště: Bratislava
- Kontaktovat uživatele:
Re: Výpis novinek z fóra na jiné stránce
je to v tabulke posts - post_text