форум vBSupport.ru > vBulletin > Вопрос — Ответ
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
cavesru
Простоузер
Default лента на форуме
0

Народ, подскажите как сделать на vb4.2 ленту по аналогии фейсбука или вконтакте?
Чтобы туда попадали все первые сообщения в темах определенных разделов.
Спасибо!
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
Hobot
Эксперт
 
Hobot's Avatar
Default
0

@cavesru, верните лучше воблу 3.8.
Я с вашего форума ушёл нафиг после перехода не четвёрку.
 
 
cavesru
Простоузер
Default
0

Quote:
верните лучше воблу 3.8.
назад дороги нет =(

Народ, кто поможет... решил сам этот функционал реализовать.. пока дикая бетта версия
Не могу понять, как заставить do_parse парсить аттачменты?

Code:
<?php

// ####################### SET PHP ENVIRONMENT ###########################

error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################

define('THIS_SCRIPT', 'stream');
define('CSRF_PROTECTION', true);  
// change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array();

// get special data templates from the datastore
$specialtemplates = array();

// pre-cache templates used by all actions
$globaltemplates = array('STREAM',
);

// pre-cache templates used by specific actions
$actiontemplates = array();

// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
// chdir ('/path/to/your/forums');
require_once('./global.php');
require_once(DIR . '/includes/class_postbit.php');

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

$navbits = construct_navbits(array('' => 'Test Page'));
$navbar = render_navbar_template($navbits);

// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle = 'My Page Title';

$vbulletin->input->clean_array_gpc('r', array(
    'perpage'    => TYPE_UINT,
    'pagenumber' => TYPE_UINT,
)); 

$cel_users = $db->query_first("
    SELECT COUNT(thread.threadid) AS thread_count
    FROM " . TABLE_PREFIX . "thread AS thread     
    WHERE thread.forumid = 24 
"); 

sanitize_pageresults($cel_users['thread_count'], $pagenumber, $perpage, 100, 20);

if ($vbulletin->GPC['pagenumber'] < 1)
{
    $vbulletin->GPC['pagenumber'] = 1;
}
else if ($vbulletin->GPC['pagenumber'] > ceil(($cel_users['thread_count'] + 1) / $perpage))
{
    $vbulletin->GPC['pagenumber'] = ceil(($cel_users['thread_count'] + 1) / $perpage);
}
$limitlower = ($vbulletin->GPC['pagenumber'] - 1) * $perpage;
$limitupper = ($vbulletin->GPC['pagenumber']) * $perpage;  

$result = $db->query_read("
    SELECT thread.title, post.postid, post.pagetext 
    FROM " . TABLE_PREFIX . "thread AS thread, " . TABLE_PREFIX . "post AS post 
    WHERE post.threadid = thread.threadid AND post.parentid = 0 AND thread.forumid = 15
    ORDER BY thread.dateline DESC
    LIMIT $limitlower, $perpage
");

while ($row = mysql_fetch_assoc($result)) 
{ 
	$parser = new vB_BbCodeParser($vbulletin, fetch_tag_list());
    $row_result[]['title'] = $row['title'];
    $row_result[]['postid'] = $row ['postid'];
    $row_result[]['pagetext'] = $parser->do_parse($row['pagetext'],false, true, true, true, true, false); 
}

$pagenav = construct_page_nav(
    $vbulletin->GPC['pagenumber'],
    $perpage,
    $cel_users['thread_count'],
    'stream.php?' . $vbulletin->session->vars['sessionurl'], // the pagenav-link
    '', // to pass a second portion or the pagenav-link, gets directly appended to above
    '', // to pass an anchor
    '', // SEO-Link for thread, forum, member... pages - make the pagenav-links seo'ed if you use the paginator on one of those
    '', // Array to pass linkinfo for SEO-Link-Method
    ''  // Array to pass additional Info for SEO-Link-Method
); 

// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######
vB_Template::preRegister('custom_result',array('row_result' => $row_result));
$templater = vB_Template::create('STREAM');
    $templater->register_page_templates();
    $templater->register('navbar', $navbar);
    $templater->register('pagetitle', $pagetitle);
    $templater->register('row_result',$row_result);
// Need to add for pagenav
    $templater->register('pagenav', $pagenav);
    $templater->register('pagenumber', $pagenumber);
    $templater->register('perpage', $perpage);
    $templater->register('output', $output);
print_output($templater->render());  

?>
 
 
kerk
k0t
 
kerk's Avatar
Default
2

вот эту строку
PHP Code:
$parser = new vB_BbCodeParser($vbulletinfetch_tag_list()); 
перенесите выше цикла
зачем инициализировать класс каждый раз, за каждый проход цикла?
 
 
cavesru
Простоузер
Default
0

запустил ленту на форуме в бетта режиме
с аттачами беда :(
http://caves.ru/stream.php

cavesru добавил 04-30-2016 в 12:42 PM
Помогите допилить мод.
Аттатчи заработали.Практически все сделал по фунционал. Осталось шаблон подредактировать и готово :-)

Рабочая версия тут:
http://caves.ru/stream.php

Шаблон STREAM
Quote:
{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
<head>
<title>{vb:raw vboptions.bbtitle} - {vb:raw pagetitle}</title>
{vb:raw headinclude}
{vb:raw headinclude_bottom}
</head>
<body>

{vb:raw header}

{vb:raw navbar}

<div id="pagetitle">
<h1>{vb:raw pagetitle}</h1>
</div>

<br />

<vb:if condition="$pagenav">
<div id="pagination_top">
{vb:raw pagenav}
</div>
</vb:if>

<br /><br />

<vb:each from="row_result" key="rowid" value="rowinfo">
<div class="blockhead">
<ul>
<li><a href="{vb:raw $vboptions.vbforum_url}{vb:if "$vboptions['vbforum_url']", '/', ''}threads/{vb:var rowinfo.threadid}" rel="nofollow">{vb:var rowinfo.title}</a></li>
<li><a href="{vb:raw $vboptions.vbforum_url}{vb:if "$vboptions['vbforum_url']", '/', ''}members/{vb:var rowinfo.userid}">{vb:var rowinfo.username}</a></li>
<li>{vb:var rowinfo.dateline}</li>
</ul>
</div>
<div>{vb:raw rowinfo.pagetext}</div>
<div><a href="{vb:raw $vboptions.vbforum_url}{vb:if "$vboptions['vbforum_url']", '/', ''}threads/{vb:var rowinfo.threadid}" rel="nofollow"><b>подробнее</b></a></div>
</vb:each>

<br /><br />

<vb:if condition="$pagenav">
<div id="pagination_top">
{vb:raw pagenav}
</div>
</vb:if>

{vb:raw footer}
</body>
</html>
файл stream.php

Quote:
<?php

// ####################### SET PHP ENVIRONMENT ###########################

error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################

define('THIS_SCRIPT', 'stream');
define('CSRF_PROTECTION', true);

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array();

// get special data templates from the datastore
$specialtemplates = array();

// pre-cache templates used by all actions
$globaltemplates = array('STREAM',);

// pre-cache templates used by specific actions
$actiontemplates = array();

// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
// chdir ('/path/to/your/forums');
require_once('./global.php');
require_once(DIR . '/includes/functions_bigthree.php');
require_once(DIR . '/includes/class_postbit.php');
require_once(DIR . '/includes/class_bootstrap_framework.php');
require_once(DIR . '/vb/types.php');

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

$navbits = construct_navbits(array('' => 'Лента'));
$navbar = render_navbar_template($navbits);

$pagetitle = 'Лента тем';

$vbulletin->input->clean_array_gpc('r', array(
'perpage' => TYPE_UINT,
'pagenumber' => TYPE_UINT,
));

vB_Bootstrap_Framework::init();

$cel_users = $db->query_first("
SELECT COUNT(thread.threadid) AS thread_count
FROM " . TABLE_PREFIX . "thread AS thread
WHERE thread.visible = 1 AND thread.forumid in (18,12,13,26,16,15) AND thread.dateline > UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE, INTERVAL 24 MONTH))
");

sanitize_pageresults($cel_users['thread_count'], $pagenumber, $perpage, 100, 20);

if ($vbulletin->GPC['pagenumber'] < 1)
{
$vbulletin->GPC['pagenumber'] = 1;
}
else if ($vbulletin->GPC['pagenumber'] > ceil(($cel_users['thread_count'] + 1) / $perpage))
{
$vbulletin->GPC['pagenumber'] = ceil(($cel_users['thread_count'] + 1) / $perpage);
}
$limitlower = ($vbulletin->GPC['pagenumber'] - 1) * $perpage;
$limitupper = ($vbulletin->GPC['pagenumber']) * $perpage;

$result = $db->query_read("
SELECT post.*
FROM " . TABLE_PREFIX . "thread AS thread, " . TABLE_PREFIX . "post AS post
WHERE post.threadid = thread.threadid AND post.parentid = 0 AND thread.visible = 1 AND thread.forumid in (18,12,13,26,16,15) AND thread.dateline > UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE, INTERVAL 24 MONTH))
ORDER
BY thread.dateline DESC
LIMIT $limitlower, $perpage
");

while ($row = mysql_fetch_assoc($result))
{
if ($row['attach'])
{
$contenttypeid = vB_Types::instance()->getContentTypeID('vBForum_Post');

$sql = "SELECT fd.thumbnail_dateline, fd.filesize, IF(fd.thumbnail_filesize > 0, 1, 0) AS hasthumbnail, fd.thumbnail_filesize,
a.dateline, a.state, a.attachmentid, a.counter, a.contentid AS postid, a.filename, type.contenttypes
FROM " . TABLE_PREFIX . "attachment AS a
INNER JOIN " . TABLE_PREFIX . "filedata AS fd ON (a.filedataid = fd.filedataid)
LEFT JOIN " . TABLE_PREFIX . "attachmenttype AS type ON (fd.extension = type.extension)
WHERE a.contentid = " . $row['postid'] . "
AND a.contenttypeid = " . $contenttypeid . "
ORDER BY a.displayorder";

$attachments = $db->query_read_slave($sql);

while ($attachment = $db->fetch_array($attachments))
{
$content = @unserialize($attachment['contenttypes']);
$attachment['newwindow'] = $content["$contenttypeid"]['n'];
$row['attachments']["$attachment[attachmentid]"] = $attachment;
}
}

$vbulletin -> options['attachthumbs'] = 0;
$vbulletin -> options['viewattachedimages'] = 3;

$postbit_factory = new vB_Postbit_Factory();
$postbit_factory -> registry =& $vbulletin;
// $postbit_factory -> forum =& $foruminfo;
// $postbit_factory -> thread =& $threadinfo;
$postbit_factory -> cache = array();
$postbit_factory -> bbcode_parser = new vB_BbCodeParser($vbulletin, fetch_tag_list());

$postbit_obj =& $postbit_factory -> fetch_postbit('post');
// $postbit_obj -> highlight =& $replacewords;

$postbit = $postbit_obj -> construct_postbit($row);

$row_result[] = array (
'threadid' => $row['threadid'],
'title' => $row['title'],
'userid' => $row['userid'],
'username' => $row['username'],
'postid' => $row['postid'],
'dateline' => date('d.m.Y, H:i', $row['dateline']),
'pagetext' => $row['message']
);
}

$pagenav = construct_page_nav(
$vbulletin->GPC['pagenumber'],
$perpage,
$cel_users['thread_count'],
'stream.php?' . $vbulletin->session->vars['sessionurl'], // the pagenav-link
'', // to pass a second portion or the pagenav-link, gets directly appended to above
'', // to pass an anchor
'', // SEO-Link for thread, forum, member... pages - make the pagenav-links seo'ed if you use the paginator on one of those
'', // Array to pass linkinfo for SEO-Link-Method
'' // Array to pass additional Info for SEO-Link-Method
);

// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######
vB_Template:reRegister('custom_result',array('row_result' => $row_result));
$templater = vB_Template::create('STREAM');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
$templater->register('row_result',$row_result);
// Need to add for pagenav
$templater->register('pagenav', $pagenav);
$templater->register('pagenumber', $pagenumber);
$templater->register('perpage', $perpage);
$templater->register('output', $output);
print_output($templater->render());

?>

Last edited by cavesru : 04-30-2016 at 01:42 PM. Reason: Добавлено сообщение
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 02:15 AM.


Powered by vBulletin® Version 3.6.12
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...