MyBB Community Forums

Full Version: Mostrar Temas en portal por x Foro
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Holaa, Queria saber si me podian ayudar bueno solo si es posible es que quiero que en la Caja de Ultimos Temas del Portal pueda ser mostrado los temas de X Foro..

Saludos y espero que me puedan ayudar Smile
En el portal.php, abrelo y busca:
WHERE 1=1 $unviewwhere AND t.visible='1' AND t.closed NOT LIKE 'moved|%'

Cambialo por:
WHERE 1=1 $unviewwhere AND t.fid IN (1,2,3,4,5) AND t.visible='1' AND t.closed NOT LIKE 'moved|%'

Como veras, el "1,2,3,4,5" seran los foros permitidos.

Esto se puede con un plugin, pero si usas Patches seria mejor.
(2012-07-09, 09:50 PM)Omar G. Wrote: [ -> ]En el portal.php, abrelo y busca:
WHERE 1=1 $unviewwhere AND t.visible='1' AND t.closed NOT LIKE 'moved|%'

Cambialo por:
WHERE 1=1 $unviewwhere AND t.fid IN (1,2,3,4,5) AND t.visible='1' AND t.closed NOT LIKE 'moved|%'

Como veras, el "1,2,3,4,5" seran los foros permitidos.

Esto se puede con un plugin, pero si usas Patches seria mejor.

Oye ha funcionado perfecto Omar. Thanks...
Otra pregunta man para no crear otro tema ya que es acerca del mismo Bloque.

Es posible que en ese bloque de Últimos Temas muestre el Foro donde fue Creado..??
Eso seria mas complicado, busca:
while($thread = $db->fetch_array($query))
{

Cambia por:
while($thread = $db->fetch_array($query))
{
$forum = $forum_cache[$thread['fid']];

Ahora podras usar $forum en la plantilla.

Algo asi como {$forum['name']}, {$forum['description']}, etc..
(2012-07-10, 12:21 AM)Omar G. Wrote: [ -> ]Eso seria mas complicado, busca:
while($thread = $db->fetch_array($query))
{

Cambia por:
while($thread = $db->fetch_array($query))
{
$forum = $forum_cache[$thread['fid']];

Ahora podras usar $forum en la plantilla.

Algo asi como {$forum['name']}, {$forum['description']}, etc..

Funciono de 10 Omar, Muchisimas Gracias Smile
Grande aporte Omar G.
Omar G. Como hago para hacer eso en ProPortal?? intente hacerlo pero no pude
quiero mostrar el nombre del foro en el bloque de anuncios (block_announcements.php)

<?php
/***************************************************************
 * ProPortal
 * Copyright © 2010 ProMyBB, All Rights Reserved
 *
 * Website: http://www.promybb.com/
 * License: http://creativecommons.org/licenses/by-nc-sa/3.0/
 ***************************************************************/
 
if (!defined("IN_PORTAL")) {
	die("<div style=\"border:1px solid #CC0000; padding:3px; margin:0; font-family:Tahoma; width:250px; font-size:12px;\"><strong>Error:</strong> This file cannot be viewed directly!</div>");
}
 
// Get latest news announcements
// First validate announcement fids:
$announcementsfids = explode(',', $proportal->settings['announcementsfid']);
if(is_array($announcementsfids))
{
	foreach($announcementsfids as $fid)
	{
		$fid_array[] = intval($fid);
	}
	$announcementsfids = implode(',', $fid_array);
}
// And get them!
$query = $db->simple_select("forums", "*", "fid IN (".$announcementsfids.")");
while($forumrow = $db->fetch_array($query))
{
    $forum[$forumrow['fid']] = $forumrow;
}

// Let's add pagination
$annnum = $db->fetch_field($db->simple_select('threads', 'COUNT(*) AS annnum', "fid IN (".$proportal->settings['announcementsfid'].") AND visible='1' AND closed NOT LIKE 'moved|%'"), 'annnum');
$pagenum = intval($mybb->input['page']);
$totalpage = ceil($annnum / $proportal->settings['numannouncements']);
if($pagenum < 1 || !$pagenum || $pagenum > $totalpage){ $pagenum = 1; }
$multipage = multipage($annnum, $proportal->settings['numannouncements'], $pagenum, $mybb->settings['bburl'].'/portal.php');

$pids = '';
$tids = '';
$comma = '';
$query = $db->query("
	SELECT p.pid, p.message, p.tid
	FROM ".TABLE_PREFIX."posts p
	LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid)
	WHERE t.fid IN (".$announcementsfids.") AND t.visible='1' AND t.closed NOT LIKE 'moved|%' AND t.firstpost=p.pid
	ORDER BY t.dateline DESC 
	LIMIT ".(($pagenum-1)*$proportal->settings['numannouncements']).", ".$proportal->settings['numannouncements']
);
while($getid = $db->fetch_array($query))
{
	$pids .= ",'{$getid['pid']}'";
	$tids .= ",'{$getid['tid']}'";
	$posts[$getid['tid']] = $getid;
}
$pids = "pid IN(0{$pids})";
// Now lets fetch all of the attachments for these posts
$query = $db->simple_select("attachments", "*", $pids);
while($attachment = $db->fetch_array($query))
{
	$attachcache[$attachment['pid']][$attachment['aid']] = $attachment;
}

if(is_array($forum))
{
	foreach($forum as $fid => $forumrow)
	{
		$forumpermissions[$fid] = forum_permissions($fid);
	}
}

$icon_cache = $cache->read("posticons");

$announcements = '';
$query = $db->query("
	SELECT t.*, t.username AS threadusername, u.username, u.avatar, u.avatardimensions
	FROM ".TABLE_PREFIX."threads t
	LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid)
	WHERE t.fid IN (".$announcementsfids.") AND t.tid IN (0{$tids}) AND t.visible='1' AND t.closed NOT LIKE 'moved|%'
	ORDER BY t.dateline DESC
	LIMIT 0, ".$proportal->settings['numannouncements']
);
while($announcement = $db->fetch_array($query))
{
	$announcement['message'] = $posts[$announcement['tid']]['message'];
	$announcement['pid'] = $posts[$announcement['tid']]['pid'];
	$announcement['threadlink'] = get_thread_link($announcement['tid']);
	
	if($announcement['uid'] == 0)
	{
		$profilelink = htmlspecialchars_uni($announcement['threadusername']);
	}
	else
	{
		$profilelink = build_profile_link($announcement['username'], $announcement['uid']);
	}
	
	if(!$announcement['username'])
	{
		$announcement['username'] = $announcement['threadusername'];
	}
	$announcement['subject'] = htmlspecialchars_uni($parser->parse_badwords($announcement['subject']));
	if($announcement['icon'] > 0 && $icon_cache[$announcement['icon']])
	{
		$icon = $icon_cache[$announcement['icon']];
		$icon = "<img src=\"{$icon['path']}\" alt=\"{$icon['name']}\" />";
	}
	else
	{
		$icon = "&nbsp;";
	}
	if($announcement['avatar'] != '')
	{
		$avatar_dimensions = explode("|", $announcement['avatardimensions']);
		if($avatar_dimensions[0] && $avatar_dimensions[1])
		{
			list($max_width, $max_height) = explode("x", my_strtolower("35x35"));
			if($avatar_dimensions[0] > $max_width || $avatar_dimensions[1] > $max_height)
			{
				require_once MYBB_ROOT."inc/functions_image.php";
				$scaled_dimensions = scale_image($avatar_dimensions[0], $avatar_dimensions[1], $max_width, $max_height);
				$ann_avatar_width_height = "width=\"{$scaled_dimensions['width']}\" height=\"{$scaled_dimensions['height']}\"";
			}
			else
			{
				$ann_avatar_width_height = "width=\"{$avatar_dimensions[0]}\" height=\"{$avatar_dimensions[1]}\"";	
			}
		}
		if (!stristr($announcement['avatar'], 'http://'))
		{
			$announcement['avatar'] = $mybb->settings['bburl'] . '/' . $announcement['avatar'];
		}		
		$avatar = "<img src=\"{$announcement['avatar']}\" alt=\"\" {$ann_avatar_width_height} />";
	}
	else
	{
		$avatar = '';
	}
	$anndate = my_date($mybb->settings['dateformat'], $announcement['dateline']);
	$anntime = my_date($mybb->settings['timeformat'], $announcement['dateline']);

	if($announcement['replies'])
	{
		$numcomments = "{$announcement['replies']}";
	}
	else
	{
		$numcomments = "{$lang->no_replies}";
		$lastcomment = '';
	}
	
	$views = "<strong>{$announcement['views']}</strong> {$lang->latest_threads_views}";
	
	$plugins->run_hooks("pro_portal_announcement");

	$parser_options = array(
		"allow_html" => $forum[$announcement['fid']]['allowhtml'],
		"allow_mycode" => $forum[$announcement['fid']]['allowmycode'],
		"allow_smilies" => $forum[$announcement['fid']]['allowsmilies'],
		"allow_imgcode" => $forum[$announcement['fid']]['allowimgcode'],
		"filter_badwords" => 1
	);
	if($announcement['smilieoff'] == 1)
	{
		$parser_options['allow_smilies'] = 0;
	}

	$message = $parser->parse_message($announcement['message'], $parser_options);
	// Cut the message and place a read more link if the related option is enabled
	if($proportal->settings['annmessagelength'] > "0")
	{
		$message = substr($message, 0, $proportal->settings['annmessagelength']);
		$message = $message.". <a href=\"".$mybb->settings['bburl']."/".$announcement['threadlink']."\">".$lang->messagemore."</a>";
		$message = trim(preg_replace('<<br />>', '', $message));  
	}
	
	if(is_array($attachcache[$announcement['pid']]))
	{ // This post has 1 or more attachments
		$validationcount = 0;
		$id = $announcement['pid'];
		foreach($attachcache[$id] as $aid => $attachment)
		{
			if($attachment['visible'])
			{ // There is an attachment thats visible!
				$attachment['filename'] = htmlspecialchars_uni($attachment['filename']);
				$attachment['filesize'] = get_friendly_size($attachment['filesize']);
				$ext = get_extension($attachment['filename']);
				if($ext == "jpeg" || $ext == "gif" || $ext == "bmp" || $ext == "png" || $ext == "jpg")
				{
					$isimage = true;
				}
				else
				{
					$isimage = false;
				}
				$attachment['icon'] = get_attachment_icon($ext);
				// Support for [attachment=id] code
				if(stripos($message, "[attachment=".$attachment['aid']."]") !== false)
				{
					if($attachment['thumbnail'] != "SMALL" && $attachment['thumbnail'] != '')
					{ // We have a thumbnail to show (and its not the "SMALL" enough image
						eval("\$attbit = \"".$templates->get("portal_miniatura_thumbnails_thumbnail")."\";");
					}
					elseif($attachment['thumbnail'] == "SMALL" && $forumpermissions[$announcement['fid']]['candlattachments'] == 1)
					{
						// Image is small enough to show - no thumbnail
						eval("\$attbit = \"".$templates->get("postbit_attachments_images_image")."\";");
					}
					else
					{
						// Show standard link to attachment
						eval("\$attbit = \"".$templates->get("postbit_attachments_attachment")."\";");
					}
					$message = preg_replace("#\[attachment=".$attachment['aid']."]#si", $attbit, $message);
				}
				else
				{
					if($attachment['thumbnail'] != "SMALL" && $attachment['thumbnail'] != '')
					{ // We have a thumbnail to show
						eval("\$post['thumblist'] .= \"".$templates->get("portal_miniatura_thumbnails_thumbnail")."\";");
						if($tcount == 5)
						{
							$thumblist .= "<br />";
							$tcount = 0;
						}
						++$tcount;
					}
					elseif($attachment['thumbnail'] == "SMALL" && $forumpermissions[$announcement['fid']]['candlattachments'] == 1)
					{
						// Image is small enough to show - no thumbnail
						eval("\$post['imagelist'] .= \"".$templates->get("postbit_attachments_images_image")."\";");
					}
					else
					{
						eval("\$post['attachmentlist'] .= \"".$templates->get("postbit_attachments_attachment")."\";");
					}
				}
			}
			else
			{
				$validationcount++;
			}
		}
		if($post['thumblist'])
		{
			eval("\$post['attachedthumbs'] = \"".$templates->get("portal_miniatura_thumbnails")."\";");
		}
		if($post['imagelist'])
		{
			eval("\$post['attachedimages'] = \"".$templates->get("postbit_attachments_images")."\";");
		}
		if($post['attachmentlist'] || $post['thumblist'] || $post['imagelist'])
		{
			eval("\$post['attachments'] = \"".$templates->get("portal_adjunto")."\";");
		}
	}

	eval("\$announcements .= \"".$templates->get("portal_anuncios")."\";");
	unset($post);
}
if(!$announcements){ $announcements = "<table cellspacing=\"{$theme['borderwidth']}\" cellpadding=\"{$theme['tablespace']}\" class=\"tborder\">
<tr>
<td class=\"thead\"><strong>{$lang->no_announcement}</strong></td>
</tr>
<tr>
<td class=\"trow2\" valign=\"middle\">{$lang->no_announcement_desc}</td>
</tr>
</table>"; }
$multipage = str_replace('<div class="pagination">', '<div class="pagination" align="center">', $multipage);
echo $announcements.$multipage;
?>
Busca:
while($announcement = $db->fetch_array($query))
{

Cambia por:
global $forum_cache;
$forum_cache or cache_forums();
while($announcement = $db->fetch_array($query))
{
$forum = $forum_cache[$announcement['fid']]; 

Y usa $forum en tu plantilla (portal_anuncios).
gracias, me funciono perfecto Smile