Página 1 de 1

Últimos mensajes por categorías en nueva página

Publicado: 30 Mar 2012, 15:37
por gustav
URL: http://www.entre88teclas.es/foro
Versión phpBB: 3.0.10
MODs Instalados: Ninguno
Plantilla(s) usada(s): Prosilver (modificada)
Servidor:
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

Estoy intentando hacer una página nueva en el foro con un listado de últimos mensajes ordenados por categorías y por más que he usado el buscador no he encontrado nada así. He intentado adaptar alguno de los códigos de últimos mensajes para páginas externas y no he conseguido nada.

La idea es algo similar a esto: http://www.clubmazda.es/foros/ultimos.php

¿Sabéis si hay algún código de los archivos php+html por ahí?

Re: Últimos mensajes por categorías en nueva página

Publicado: 01 Abr 2012, 06:10
por gustav
Tengo un código con el que trabajar, aunque no es por categoría, pero se pueden seleccionar todos los foros de una categoría, y tengo dos problemas:

1.- Me carga los últimos temas creados del foro seleccionado y no los últimos temas que tengan una respuesta más reciente, que es lo que quiero.
2.- ¿Cómo sería el código de un archivo .html para este .php, para poder darle el aspecto del viewforum.php?

Código: Seleccionar todo

<?php 

// Path to the phpBB 3.0 root directory 
define("PHPBB_PATH", "../forum/"); 

// URL to the phpBB 3.0 installation 
define("PHPBB_LOCATION", "http://www.tupagina.com/forum/"); 

// Time format to output the date/time (for format see PHP manual) 
define("TIME_FORMAT", "d/m"); 

// php extension using
$phpEx = "php";

// No Editing unless you know what your doing
if ( !defined('IN_PHPBB') ) 
{
	define('IN_PHPBB', true);
}


// Get the needed phpbb files, thank you phpbb =]
include($phpbb_root_path  . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);

$user->session_begin();
$auth->acl($user->data);
$user->setup();

?>
<body STYLE="background-color:transparent">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="./theme/common.css" rel="stylesheet" type="text/css" title="A" />

</body>
<?php 

/* create_where_clauses( int[] gen_id, String type )
* This function outputs an SQL WHERE statement for use when grabbing
* posts and topics */

function create_where_clauses($gen_id, $type)
{
global $db, $auth;

$size_gen_id = sizeof($gen_id);

switch($type)
{
case 'forum':
$type = 'forum_id';
break;
case 'topic':
$type = 'topic_id';
break;
default:
trigger_error('No type defined');
}

// Set $out_where to nothing, this will be used of the gen_id
// size is empty, in other words "grab from anywhere" with
// no restrictions
$out_where = '';

if ($size_gen_id > 0)
{
// Get a list of all forums the user has permissions to read
$auth_f_read = array_keys($auth->acl_getf('f_read', true));

if ($type == 'topic_id')
{
$sql = 'SELECT topic_id FROM ' . TOPICS_TABLE . '
WHERE ' . $db->sql_in_set('topic_id', $gen_id) . '
AND ' . $db->sql_in_set('forum_id', $auth_f_read);

$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{
// Create an array with all acceptable topic ids
$topic_id_list[] = $row['topic_id'];
}

unset($gen_id);

$gen_id = $topic_id_list;
$size_gen_id = sizeof($gen_id);
}

$j = 0; 

for ($i = 0; $i < $size_gen_id; $i++)
 {
$id_check = (int) $gen_id[$i]; // If the type is topic, all checks have been made and the query can start to be built if( $type == 'topic_id' ) { $out_where .= ($j == 0) ? 'WHERE ' . $type . ' = ' . $id_check . ' ' : 'OR ' . $type . ' = ' . $id_check . ' '; } // 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) )
{
$out_where .= ($j == 0) ? 'WHERE ' . $type . ' = ' . $id_check . ' ' : 'OR ' . $type . ' = ' . $id_check . ' ';
} 

$j++;
}
}

if ($out_where == '' && $size_gen_id > 0)
{
trigger_error('A list of topics/forums has not been created');
}

return $out_where;
}

// Número de últimos posts a mostrar:
$search_limit = 10;

// ID del foro específico. Si deseas más de un foro, separar por "comas".
$forum_id = array(4);
$forum_id_where = create_where_clauses($forum_id, 'forum');



$topics = 'SELECT * FROM ' . TOPICS_TABLE . '
' . $forum_id_where . '
AND topic_status <> ' . ITEM_MOVED . '
AND topic_approved = 1
ORDER BY topic_id DESC';

$topics_result = $db->sql_query_limit($topics, $search_limit);

while ($topics_row = $db->sql_fetchrow($topics_result))
{
$topic_title = $topics_row['topic_title'];
$topic_title = censor_text($topic_title);
$topic_author = get_username_string('full', $topics_row['topic_poster'], $topics_row['topic_first_poster_name'], $topics_row['topic_first_poster_colour']);
$topic_date = $user->format_date($topics_row['topic_time']);
$topic_last_post = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "p=" . $topics_row['topic_last_post_id'] . "#" . $topics_row['topic_last_post_id']);
$topic_last_author = get_username_string('full', $topics_row['topic_last_poster_id'], $topics_row['topic_last_poster_name'], $topics_row['topic_last_poster_colour']);
$topic_link = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t=" . $topics_row['topic_id']);

echo "<b>!!</b> <a href=\"$topic_link\">$topic_title</a> por $topic_author - $topic_date<br>";

}

?> 
Hay alguien por ahí? :dormido:

Re: Últimos mensajes por categorías en nueva página

Publicado: 02 Abr 2012, 04:29
por Alorse
Si mira este tema por completo veras como adaptar el código php y el HTML para que se vea como una pagina personalizado. Modificar script para mostrar URL amigables en portal como veras, primero tenían el código como tú, todo junto, luego se va separando en diferentes archivos :)

Re: Últimos mensajes por categorías en nueva página

Publicado: 02 Abr 2012, 17:29
por gustav
Muchas gracias Alorse, ya he conseguido que cargue el html con el estilo.

El problema es que aunque esté indicado que cargue los 10 últimos temas, sólo carga uno. Además, carga de los últimos temas creados, no los últimos temas con respuesta.

Necesitaría ayuda para conseguir que:
1.- Cargue los últimos temas con últimos mensajes (igual que al ver el enlace "Buscar mensajes nuevos") y no los últimos temas creados del foro específico señalado en el .php
2.- Que el html cargue los mensajes indicados, en este caso 10, y no sólo 1 tema, como hace actualmente.

El .php es el mismo de arriba, sólo que con este añadido

Código: Seleccionar todo

$template->assign_block_vars('last', array(
        'FORUM_IMG' => $forum_image,
        'TOPIC_TITLE' => censor_text($topic_title),
        'POST_LINK' => $topic_link,
        'POST_AUTHOR' => $topic_author,
    ));

$template->set_filenames(array(
    'body' => 'nombredearchivo.html', //nombre del archivo html
));
Dejo el html por si me puedes echar una mano.

Código: Seleccionar todo

<!-- INCLUDE overall_header.html -->

<h2>LAST</h2>

<div class="panel">
    <div class="inner"><span class="corners-top"><span></span></span>
        <div class="content">
            <p>
                TU CONTENIDO IRÍA AQUÍ. PUEDE SER TEXTO O CÓDIGO
            </p>
        </div>
        <span class="corners-bottom"><span></span></span></div>
</div>
<div class="forabg">
    <div class="inner"><span class="corners-top"><span></span></span>
        <ul class="topiclist">
            <li class="header">
                <dl class="icon"><dt>Ultimos temas</dt></dl>
            </li>
        </ul>
        <div class="panel" style="padding:6px;">
            <!-- BEGIN last -->
            <a href="{last.POST_LINK}" class="forumtitle">{last.TOPIC_TITLE}</a>
            <br  />
            <!-- END last -->
        </div>
        <span class="corners-bottom"><span></span></span>
    </div>
</div>
<!-- IF PAGINATION -->
<div class="pagination">
    <!-- IF PAGE_NUMBER -->
    <!-- IF PAGINATION -->{TOTAL_TOPICS} &bull; <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER}</a> &bull; <span>{PAGINATION}</span><!-- ELSE --> &bull; {PAGE_NUMBER}<!-- ENDIF -->
    <!-- ENDIF -->
</div>
<!-- ENDIF -->
<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->
Gracias!

Re: Últimos mensajes por categorías en nueva página

Publicado: 02 Abr 2012, 17:47
por Alorse
Ahora veo bien tu foro, el copy de phpBB esta incompleto y falta el copyright de la traducción.

Re: Últimos mensajes por categorías en nueva página

Publicado: 02 Abr 2012, 18:35
por gustav
Alorse escribió:Ahora veo bien tu foro, el copy de phpBB esta incompleto y falta el copyright de la traducción.
Perdón, he estado modificando el estilo y utilicé un footer antiguo al que se lo había quitado hace tiempo. La plantilla anterior, cuando abrí el tema si lo tenía. Ya lo he arreglado.

Re: Últimos mensajes por categorías en nueva página

Publicado: 02 Abr 2012, 19:28
por gustav
Alorse, se que no es el sitio, pero no se cómo contactar, me he registrado en phpBBMODs, y no recibo el email de activación :?

Re: Últimos mensajes por categorías en nueva página

Publicado: 02 Abr 2012, 20:19
por Alorse
gustav escribió:Alorse, se que no es el sitio, pero no se cómo contactar, me he registrado en phpBBMODs, y no recibo el email de activación :?
No veo que te hallas registrado, o no al menos con este nick.

Re: Últimos mensajes por categorías en nueva página

Publicado: 02 Abr 2012, 20:58
por gustav
Alorse escribió:
gustav escribió:Alorse, se que no es el sitio, pero no se cómo contactar, me he registrado en phpBBMODs, y no recibo el email de activación :?
No veo que te hallas registrado, o no al menos con este nick.
No es este nick, pero el email es el admin de la página de soporte.

Re: Últimos mensajes por categorías en nueva página

Publicado: 02 Abr 2012, 21:25
por Alorse
gustav escribió:No es este nick, pero el email es el admin de la página de soporte.
La cuenta, ya esta activa, de igual manera mira en la bandeja de spam o algo, porque el sistema funciona bien.

Re: Últimos mensajes por categorías en nueva página

Publicado: 02 Abr 2012, 21:54
por gustav
Gracias!