Seleccionar idioma:
Realizar Donación - Mods Premium - Portfolio



Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.
* [Tutorial] Bloque últimos temas por sección
  Leído 1248 veces
* Viendo el foro
 0 Usuarios y 1 Visitante están viendo este foro.


*
Ago 22 2013


Bueno amigos, aquí les dejo un tutorial para poder mostrar los últimos temas separados por secciones, si quieren ver un ejemplo, en mi foro www.chile-pro.com tengo estos bloques y son muy útiles. Solo funciona para el portal ADK, yo lo uso, por que es muy completo y personalizable.

Manos a la obra:

1. Deberán agregar un bloque php
*


2. Para el titulo, le colocan el nombre de la sección, por ejemplo "comunicados" y agregamos el siguiente código:

Código: [Seleccionar]
<?php
if (!defined('SMF'))
die('Hacking attempt...');

comunicados();

?>


*


3. Luego abren el archivo Subs-adkblocks.php que se encuentra en la carpeta sources, se van hasta el final y antes de ?> colocan esto:

Código: [Seleccionar]
/*seccion comunicados.php*/
function comunicados()
{
global $context, $settings, $scripturl, $txt, $db_prefix, $user_info;
global $modSettings, $smcFunc, $adkportal, $boardurl;

//SSI FUNCTION
$exclude_boards = null;
$include_boards = array(7,12,13);
$num_recent = $adkportal['ultimos_mensajes'];
$output_method = 'array';

if ($exclude_boards === null && !empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > 0)
$exclude_boards = array($modSettings['recycle_board']);
else
$exclude_boards = empty($exclude_boards) ? array() : (is_array($exclude_boards) ? $exclude_boards : array($exclude_boards));

// Only some boards?.
if (is_array($include_boards) || (int) $include_boards === $include_boards)
{
$include_boards = is_array($include_boards) ? $include_boards : array($include_boards);
}
elseif ($include_boards != null)
{
$output_method = $include_boards;
$include_boards = array();
}

$stable_icons = array('xx', 'thumbup', 'thumbdown', 'exclamation', 'question', 'lamp', 'smiley', 'angry', 'cheesy', 'grin', 'sad', 'wink', 'moved', 'recycled', 'wireless');
$icon_sources = array();
foreach ($stable_icons as $icon)
$icon_sources[$icon] = 'images_url';

// Find all the posts in distinct topics.  Newer ones will have higher IDs.
$request = $smcFunc['db_query']('substring', '
SELECT
m.poster_time, ms.subject, m.id_topic, m.id_member, m.id_msg, b.id_board, b.name AS board_name, t.num_replies, t.num_views,
mem.avatar,
mg.online_color,
IFNULL(a.id_attach, 0) AS id_attach, a.filename, a.attachment_type,
IFNULL(mem.real_name, m.poster_name) AS poster_name, ' . ($user_info['is_guest'] ? '1 AS is_read, 0 AS new_from' : '
IFNULL(lt.id_msg, IFNULL(lmr.id_msg, 0)) >= m.id_msg_modified AS is_read,
IFNULL(lt.id_msg, IFNULL(lmr.id_msg, -1)) + 1 AS new_from') . ', SUBSTRING(m.body, 1, 384) AS body, m.smileys_enabled, m.icon
FROM {db_prefix}topics AS t
INNER JOIN {db_prefix}messages AS m ON (m.id_msg = t.id_last_msg)
INNER JOIN {db_prefix}boards AS b ON (b.id_board = t.id_board)
INNER JOIN {db_prefix}messages AS ms ON (ms.id_msg = t.id_first_msg)
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = m.id_member)' . (!$user_info['is_guest'] ? '
LEFT JOIN {db_prefix}log_topics AS lt ON (lt.id_topic = t.id_topic AND lt.id_member = {int:current_member})
LEFT JOIN {db_prefix}log_mark_read AS lmr ON (lmr.id_board = b.id_board AND lmr.id_member = {int:current_member})' : '') . '
LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = mem.id_member)
LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = IF(mem.id_group = 0, mem.id_post_group, mem.id_group))
WHERE t.id_last_msg >= {int:min_message_id}
' . (empty($exclude_boards) ? '' : '
AND b.id_board NOT IN ({array_int:exclude_boards})') . '
' . (empty($include_boards) ? '' : '
AND b.id_board IN ({array_int:include_boards})') . '
AND {query_wanna_see_board}' . ($modSettings['postmod_active'] ? '
AND t.approved = {int:is_approved}
AND m.approved = {int:is_approved}' : '') . '
ORDER BY t.id_last_msg DESC
LIMIT ' . $num_recent,
array(
'current_member' => $user_info['id'],
'include_boards' => empty($include_boards) ? '' : $include_boards,
'exclude_boards' => empty($exclude_boards) ? '' : $exclude_boards,
'min_message_id' => $modSettings['maxMsgID'] - 200 * min($num_recent, 200),
'is_approved' => 1,
)
);
$posts = array();
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$row['body'] = strip_tags(strtr(parse_bbc($row['body'], $row['smileys_enabled'], $row['id_msg']), array('<br />' => '&#10;')));
if ($smcFunc['strlen']($row['body']) > 128)
$row['body'] = $smcFunc['substr']($row['body'], 0, 128) . '...';

// Censor the subject.
censorText($row['subject']);
censorText($row['body']);

if (empty($modSettings['messageIconChecks_disable']) && !isset($icon_sources[$row['icon']]))
$icon_sources[$row['icon']] = file_exists($settings['theme_dir'] . '/images/post/' . $row['icon'] . '.gif') ? 'images_url' : 'default_images_url';

// Build the array.
$posts[] = array(
'board' => array(
'id' => $row['id_board'],
'name' => $row['board_name'],
'href' => $scripturl . '?board=' . $row['id_board'] . '.0',
'link' => '<a href="' . $scripturl . '?board=' . $row['id_board'] . '.0">' . $row['board_name'] . '</a>'
),
'avatar' => $row['avatar'] == '' ? ($row['id_attach'] > 0 ? '<img width="30" height="30" src="' . (empty($row['attachment_type']) ? $scripturl . '?action=dlattach;attach=' . $row['id_attach'] . ';type=avatar' : $modSettings['custom_avatar_url'] . '/' . $row['filename']) . '" alt="" border="0" />' : '') : (stristr($row['avatar'], 'http://') ? '<img width="30" height="30" src="' . $row['avatar'] . '" alt="" border="0" />' : '<img width="30" height="30" src="' . $modSettings['avatar_url'] . '/' . $smcFunc['htmlspecialchars']($row['avatar']) . '" alt="" border="0" />'),
'topic' => $row['id_topic'],
'poster' => array(
'id' => $row['id_member'],
'name' => $row['poster_name'],
'href' => empty($row['id_member']) ? '' : $scripturl . '?action=profile;u=' . $row['id_member'],
'link' => empty($row['id_member']) ? ('<b>'.$row['poster_name'].'</b>') : '<a style="color: '.$row['online_color'].'; font-weight: bold;" href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['poster_name'] . '</a>'
),
'online_color' => $row['online_color'],
'subject' => $row['subject'],
'replies' => $row['num_replies'],
'views' => $row['num_views'],
'short_subject' => shorten_subject($row['subject'], 25),
'preview' => $row['body'],
'time' => timeformat($row['poster_time']),
'timestamp' => forum_time(true, $row['poster_time']),
'href' => $scripturl . '?topic=' . $row['id_topic'] . '.msg' . $row['id_msg'] . ';topicseen#new',
'link' => '<a href="' . $scripturl . '?topic=' . $row['id_topic'] . '.msg' . $row['id_msg'] . '#new" rel="nofollow">' . $row['subject'] . '</a>',
// Retained for compatibility - is technically incorrect!
'new' => !empty($row['is_read']),
'is_new' => empty($row['is_read']),
'new_from' => $row['new_from'],
'icon' => '<img src="' . $settings[$icon_sources[$row['icon']]] . '/post/' . $row['icon'] . '.gif" align="middle" alt="' . $row['icon'] . '" border="0" />',
);
}
$smcFunc['db_free_result']($request);



foreach($posts AS $Output)
{
$ID_TOPIC = $Output['topic'];
$subject = $Output['subject'];
$posterTime = $Output['time'];


$id_member = $Output['poster']['id'];
$href_last = $Output['href'];

if($id_member == 0)
{
$MEMBER_STARTED = $Output['poster']['link'];
$avatar = '<img src="'.$boardurl.'/adkportal/images/noavatar.jpg" class="adk_avatar" alt="" />';
}
else
{
$MEMBER_STARTED = $Output['poster']['link'];
if(!empty($Output['avatar']))
$avatar = $Output['avatar'];
else
$avatar = '<img src="'.$boardurl.'/adkportal/images/noavatar.jpg" class="adk_avatars" alt="" />';

}

echo'
<table style="width: 100%;">
<tr>
<td width="30">
<div class="adkav">'.$avatar.'</div>
</td>
<td>
<a href="'.$href_last.'?topic='.$ID_TOPIC.'.0" title="'.$subject.'"><div class="titleblo">'.$subject.'</div></a>
', !$Output['is_new'] ? '' : '<a href="' . $scripturl . '?topic=' . $Output['topic'] . '.msg' . $Output['new_from'] . ';topicseen#new" rel="nofollow"><img src="' . $settings['lang_images_url'] . '/new.gif" alt="' . $txt['new'] . '" /></a>', '
<div style="float: right;">

</div>

<span class="autorblo">'.$txt[''] .' '.$MEMBER_STARTED.'
- '.$posterTime.'</span>

</td>
</tr>
</table>';
echo'
<div class="adk_height_1"></div>';
}
}

Importante:
1. deben coincidir ambos nombres, el del bloque:

<?php
if (!defined('SMF'))
   die('Hacking attempt...');
   
   comunicados();
      
?>

y el de la plantilla:

/*seccion comunicados.php*/
function comunicados()
{
   global $context, $settings, $scripturl, $txt, $db_prefix, $user_info;

2. los foros que quieran mostrar deben seleccionarlos modificando lo siguiente:

$include_boards = array(7,12,13);

Los numero dentro de los paréntesis, son las id de los foros, dese ahí tomara los foros desde donde mostrara los últimos mensajes.

Para crear otros bloques, deben seguir el mismo procedimiento :D. les dejo una imagen para que vean como queda:




Extras:

1. Si lo quieres sin avatar, deben borrar este código:

Código: [Seleccionar]
<td width="30">
<div class="adkav">'.$avatar.'</div>
</td>

2. Sin fecha, borrar:

Código: [Seleccionar]
- '.$posterTime.'
Eso es todo, espero les sirva  8)

Adkportal V1.1
2.2
http://www.chile-pro.com

Mensajes: 243

Ver Perfil 

En línea

*
Ago 22 2013


muy bueno,algo asi es lo que buscaba +10

un par de preguntas
cuantos mensajes salen en el bloke?

y la otra es sobre los foros que quiero mostrar,yo quiero que salgan de todos los foros,entonces que hago,como lo tengo que hacer? ,o tengo que poner las id de todos los foros?

muchisimas gracias


AdkPortal 2.1.1
2.0.6
#1

Mensajes: 95

Ver Perfil  lailusionycia 

En línea

*
Ago 22 2013


Entre 5 y 7 temas muestra el bloque,
para que los muestre todos debe quedar así:

Código: [Seleccionar]
$include_boards = null;
$exclude_boards = null; 

Adkportal V1.1
2.2
http://www.chile-pro.com
#2

Mensajes: 243

Ver Perfil 

En línea

*
Ago 23 2013


,muchisimas gracias rap
lo e probado,pero salia error,la pagina en blanco con error,como habia gente en la web,lo e cambiado enseguida por el original


AdkPortal 2.1.1
2.0.6
#3

Mensajes: 95

Ver Perfil  lailusionycia 

En línea

*
Ago 24 2013


Al tratar de mostrar todos los temas???

en que momento te dio el error??

Adkportal V1.1
2.2
http://www.chile-pro.com
#4

Mensajes: 243

Ver Perfil 

En línea




Otros temas de su interes




Usuario:
Contraseña:
Sesión: