。中文论坛供稿外部页的非认证用户(PHPBB3 Forum feed on external pag

2019-08-16 18:37发布

我想一个。中文论坛论坛动态集成到外部头版。

为此,我正在使用从phpbbwiki一个例子: 这里是代码

我的问题是,如果用户在论坛认证的媒体链接这只是工作,但我想用户看到的不是一个PHPBB默认值(空白字符)页面打开的guest用户的话题。

在这种情况下,我使用AJAX的JSON返回话题,但这不应该真正的问题我的问题在这里。

这将是很好的知道这是什么PHPBB能够提供的范围和从哪里开始寻找,如果这是一个比较复杂的问题中实现的。

如果这是一些你一个简单的问题,我会寻求帮助表示感谢。

谢谢!

更新

有关的职位检索的SQL语句未创建,因为用户似乎并不具有读取权限。 失败的条件是(funnction:create_where_clauses):

// If the type is forum, do the check to make sure the user has read permissions
else if( $type == 'forum_id' && $auth->acl_get('f_read', $id_check) )

其中id_check是当前forum_id。

下面是用户数据对象的一部分:

  ["user_id"]  => string(1) "1"
  ["user_type"]=> string(1) "2"
  ["group_id"] => string(1) "1"

该用户是Guests组,其类型为默认不容忽视。 I'have尝试设置USER_TYPE 0 = NORMAL - 无济于事。

作为对。中文论坛正常的访客,我可以读取所有开放的论坛,我不知道为什么这个通用的guest用户不能访问论坛。

更新和sollution

我要感谢你再次给我带来了正轨答案。 我会不断地searchted在PHPBBs用户管理的深处时,我原来的错误只是一个愚蠢的复制/粘贴问题sollution ...

$forum_id = array(2, 5);
$forum_id_where = create_where_clauses($forum_id, 'forum');

$topic_id = array(20, 50);
$topic_id_where = create_where_clauses($topic_id, 'topic');

这两条线从教程地方正在尝试从“全能”论坛和主题数据时采取的地方,仍然。 顺便说一下这些论坛标识的地方开放给注册用户和关闭,以非认证用户。 当lifiting上述内容限制脚本再次执行,因为它应该是。

所以,再一次 - 额外的感谢送给安迪。

Answer 1:

该空白页是因为你没有一个external_body.html在您的文件style/prosilver/templates目录。

一个非常基本的external_body.html会是这个样子。 很显然,你必须这样集成到你的主页的主题。

<!-- BEGIN announcements -->
Title: {announcements.TOPIC_TITLE}<br />
Post author: {announcements.POST_AUTHOR}<br />
Post date: {announcements.POST_DATE}<br />
Last post text: {announcements.POST_TEXT}<br />
Post link: {announcements.POST_LINK}
<!-- END announcements -->

然后,使用由phpBB.com MOD团队battye提供的文件,并把它在你的论坛的根,可以显示最近的帖子。

external_page.php

<?php
/*
* Description: example file for displaying latest posts and topics
* by battye (for phpBB.com MOD Team)
* September 29, 2009
* Modified for StackOverflow Question: http://stackoverflow.com/questions/14723578/phpbb3-forum-feed-on-external-page-for-non-authenticated-users
*/

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');

$search_limit = 5;

// ----- Change between HERE -----
$posts_ary = array(
        'SELECT'    => 'p.*, t.*, u.username, u.user_colour',

        'FROM'      => array(
            POSTS_TABLE     => 'p',
        ),

        'LEFT_JOIN' => array(
            array(
                'FROM'  => array(USERS_TABLE => 'u'),
                'ON'    => 'u.user_id = p.poster_id'
            ),
            array(
                'FROM'  => array(TOPICS_TABLE => 't'),
                'ON'    => 'p.topic_id = t.topic_id'
            ),
        ),

        'WHERE'     => $db->sql_in_set('t.forum_id', array_keys($auth->acl_getf('f_read', true))) . '
                        AND t.topic_status <> ' . ITEM_MOVED . '
                         AND t.topic_approved = 1',

        'ORDER_BY'  => 'p.post_id DESC',
    );

    $posts = $db->sql_build_query('SELECT', $posts_ary);

    $posts_result = $db->sql_query_limit($posts, $search_limit);

      while( $posts_row = $db->sql_fetchrow($posts_result) )
      {
         $topic_title       = $posts_row['topic_title'];
         $post_author       = get_username_string('full', $posts_row['poster_id'], $posts_row['username'], $posts_row['user_colour']);
         $post_date          = $user->format_date($posts_row['post_time']);
         $post_link       = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "p=" . $posts_row['post_id'] . "#p" . $posts_row['post_id']);

         $post_text = nl2br($posts_row['post_text']);

         $bbcode = new bbcode(base64_encode($bbcode_bitfield));         
         $bbcode->bbcode_second_pass($post_text, $posts_row['bbcode_uid'], $posts_row['bbcode_bitfield']);

         $post_text = smiley_text($post_text);

         $template->assign_block_vars('announcements', array(
         'TOPIC_TITLE'       => censor_text($topic_title),
         'POST_AUTHOR'       => $post_author,
         'POST_DATE'       => $post_date,
         'POST_LINK'       => $post_link,
         'POST_TEXT'         => censor_text($post_text),
         ));
      }
// --- and HERE ---

page_header('External page');

    $template->set_filenames(array(
        'body' => 'external_body.html'
    ));

    page_footer();
?>

如果你不希望这样到你的论坛的根呢,你需要修改此行中使用适当的路径指向您的论坛根目录:

$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';

这两条线,它指示了改变的代码的块是什么获取显示的心脏。 以上,我已经张贴例4从您提供的链接。 从其他实施例的替换码的整个块将正常工作。

最后,您可能需要清除从ACP缓存,当你做模板更改。



文章来源: PHPBB3 Forum feed on external page for non-authenticated users
标签: phpbb3