Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..

Gracias.

La Administración de phpBB España.

Algunos dudas con últimos post del foroTema Solucionado

Foros donde podréis dejar vuestras dudas sobre phpBB 3.0.x
Frogman
Invitado

Algunos dudas con últimos post del foro

#1

Mensaje por Frogman »

Hola, lo primero agradecer a toda la comunidad phpBB-ES el gran esfuerzo realizado y la paciencia que tienen para que gente como yo consiga tener un gran foro.

Estoy intentando hacer un sistema de noticias en una página que creé dentro del foro. La url es Pagina creada de ultimos post.

El sistema de ultimos post lo he creado siguiendo la primera opcion de este turorial: http://www.phpbb-es.com/foro/guias-phpb ... 25012.html

Ahora aquí mis dudas. ¿Podría hacer, con esa primera opción, que me mostrara los ultimos post de un foro en concreto? He visto en ese tutorial que en las opciones para página externa si se puede.

Otra duda. ¿Podria hacer que cuando muestre el cuerpo del mensaje limite el numero de caracteres a mostras? Lo digo por si son noticias largas que me muestre por ejemplo los primeros 500 caracteres.

Avatar de Usuario
Megabyte
Elite
Mensajes: 1037
Registrado: 25 Dic 2010, 02:39
Edad: 45

Re: Algunos dudas con últimos post del foro

#2

Mensaje por Megabyte »

en esa guia leete donde dice: Ejemplo 2: Últimos posts de un foro en específico
creo q eso es lo que buscas....

otra opcion es instalar este mod: http://www.phpbb-es.com/foro/descarga-m ... 27713.html y seleccionar el foro q deseas que se muestre.
Contenido Oculto
Este foro requiere que este registrado e identificado para ver el contenido oculto.

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: Algunos dudas con últimos post del foro

#3

Mensaje por Alorse »

Podrías poner el código que tú has usado y así poder decirte como hacerlo?
Claro que se puede, pero es necesario saber que código estas usando para decirte que debes agregar.

Frogman
Invitado

Re: Algunos dudas con últimos post del foro

#4

Mensaje por Frogman »

Siento no haber puesto el código. El código agregado es el siguiente:

En lapáginaagregadaalforo.php esto:

Código: Seleccionar todo

	// bloque últimos posts - mitch - phpBB-Es
	include($phpbb_root_path . 'includes/bbcode.' . $phpEx);

	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');
	}

	$out_where = '';

	if ($size_gen_id > 0)
	{
	$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))
	{
	$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 (editar el 5 si así lo deseas):
	$search_limit = 5;


	$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'];
	$topic_title = censor_text($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('last_topics', 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),
	));
	}

	// Fin bloque últimos posts - mitch - phpBB-Es
En el template de dicha página.html esto:

Código: Seleccionar todo

<div class="forabg">
	<div class="inner"><span class="corners-top"><span></span></span>
		<ul class="topiclist">
			<li class="header">
				<dl class="icon">
					<dt>Últimos Posts</dt>
				</dl>
			</li>
		</ul>
		<ul class="topiclist forums">
			<li class="row">
				<dl>
					<dt>
					<!-- BEGIN last_topics -->
					<a href="{last_topics.POST_LINK}">{LAST_POST_IMG}</a> <a href="{last_topics.POST_LINK}" class="forumtitle">{last_topics.TOPIC_TITLE}</a> por {last_topics.POST_AUTHOR} - {last_topics.POST_DATE}<br />
					<!-- END last_topics -->
					</dt>
				</dl>
			</li>
		</ul>
	<span class="corners-bottom"><span></span></span></div>
</div>

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: Algunos dudas con últimos post del foro

#5

Mensaje por Alorse »

Cambia el contenido del archivo .php por el siguiente:

Código: Seleccionar todo

// bloque últimos posts - mitch - phpBB-Es
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);

// Número de últimos posts a mostrar (editar el 5 si así lo deseas):
$search_limit = 5;

$forum_id = array(12);
$num_char = 500;

    $posts_ary = array(
    'SELECT' => 't.forum_id, t.topic_id, t.topic_title, t.topic_type, t.topic_first_post_id, t.topic_first_poster_name, t.topic_first_poster_colour, t.topic_time, t.topic_poster, p.post_text, p.bbcode_uid, p.bbcode_bitfield',
    'FROM' => array(
        TOPICS_TABLE => 't',
    ),
    'LEFT_JOIN' => array(
        array(
        'FROM' => array(POSTS_TABLE => 'p'),
        'ON' => 't.topic_first_post_id = p.post_id')
    ),
    'WHERE' => $db->sql_in_set('t.forum_id', $forum_id) . '
        AND t.topic_status <> ' . ITEM_MOVED . '
        AND t.topic_approved = 1
        OR t.forum_id = 0', //OR t.forum_id = 0, esta linea es para que muestre tambien los globales ya que el id del foro de estos es 0
    'ORDER_BY' => 't.topic_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'];
    $topic_title = censor_text($topic_title);
    $post_author = get_username_string('full', $posts_row['topic_poster'], $posts_row['topic_first_poster_name'], $posts_row['topic_first_poster_colour']);
    $post_date = $user->format_date($posts_row['topic_time']);
    $post_link = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $posts_row['forum_id'] . '&t=' . $posts_row['topic_id'] . '#p' . $posts_row['topic_first_post_id']);

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

    $bbcode_bitfield = '';
    // Define the global bbcode bitfield, will be used to load bbcodes
    $bbcode_bitfield = $bbcode_bitfield | base64_decode($posts_row['bbcode_bitfield']);

    // Instantiate BBCode if need be
    if ($bbcode_bitfield !== '')
    {
        $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('last_topics', array(
    'TOPIC_TITLE' => censor_text($topic_title),
    'POST_AUTHOR' => $post_author,
    'POST_DATE' => $post_date,
    'POST_LINK' => $post_link,
    'POST_TEXT' => substr(censor_text($post_text), 0, $num_char),
    ));
}

// Fin bloque últimos posts - mitch - phpBB-Es     
Donde:
$forum_id = array(12); tiene el ID o los IDs de los foros que quieres que se muestre el contenido, cambiando el 12 por el ID del foro.
$num_char = 500; Es el número de caracteres a mostrar

Y en el archivo .html cambia:

Código: Seleccionar todo

					<!-- BEGIN last_topics -->
					<a href="{last_topics.POST_LINK}">{LAST_POST_IMG}</a> <a href="{last_topics.POST_LINK}" class="forumtitle">{last_topics.TOPIC_TITLE}</a> por {last_topics.POST_AUTHOR} - {last_topics.POST_DATE}<br />
					<!-- END last_topics -->
Por:

Código: Seleccionar todo

					<!-- BEGIN last_topics -->
					<a href="{last_topics.POST_LINK}">{LAST_POST_IMG}</a> <a href="{last_topics.POST_LINK}" class="forumtitle">{last_topics.TOPIC_TITLE}</a> por {last_topics.POST_AUTHOR} - {last_topics.POST_DATE}<br /><p>{last_topics.POST_TEXT}</p><hr />
					<!-- END last_topics -->
Con eso te debe funcionar tal como lo quieres.

Frogman
Invitado

Re: Algunos dudas con últimos post del foro

#6

Mensaje por Frogman »

Debe de haber algún problema en el código que he tenido que cambiar en el php que me diste, al cambiarlo no me carga la página, ésta se queda en blanco. :?

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: Algunos dudas con últimos post del foro

#7

Mensaje por Alorse »

Que extraño... si quieres puedes adjuntar el archivo php para ver en que falla, porque si hiciste todos los cambios como los indique, no tendría porque haber problema alguno.

Frogman
Invitado

Re: Algunos dudas con últimos post del foro

#8

Mensaje por Frogman »

Adjunto el archivo php. Lo más problable es que halla hecho algo mal, pero no se.

Gracias

Avatar de Usuario
leviatan21
Ex Staff
Mensajes: 8279
Registrado: 26 Mar 2008, 20:06
Género:
Edad: 55

Re: Algunos dudas con últimos post del foro

#9

Mensaje por leviatan21 »

Frogman escribió:Adjunto el archivo php
Te olvidaste...
Normas de phpBB España | Normas de Soporte
No doy soporte por privado : tenga en cuenta que su problema, también puede ser el problema de otro usuario.
Cualquier mensaje privado no solicitado será ignorado :twisted:

"Education is what remains after one has forgotten everything he learned in school" - Albert Einstein

Frogman
Invitado

Re: Algunos dudas con últimos post del foro

#10

Mensaje por Frogman »

Me olvide si :oops:

Adjunto tambien el archivo html del theme
Adjuntos
historia.zip
historia.php e historia.html
(1.83 KiB) Descargado 106 veces

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: Algunos dudas con últimos post del foro

#11

Mensaje por Alorse »

Te sale en blanco o te sale la pagina pero no te lista los temas?
Yo creo que es porque no has puesto el ID del foro del que quieres que se muestren las noticias.

Frogman
Invitado

Re: Algunos dudas con últimos post del foro

#12

Mensaje por Frogman »

La pagina entera se queda en blanco, es decir, no la carga. El id del foro si está puesto $forum_id = array(4);

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 37

Re: Algunos dudas con últimos post del foro  Tema Solucionado

#13

Mensaje por Alorse »

A mi me carga común y corriente... y lo único que hice fue tomar tus archivos y ponerlos en un foro.
Tienes el modo DEBUG habilitado?
Intenta hacer este cambio:

Código: Seleccionar todo

	// Instantiate BBCode if need be
	if ($bbcode_bitfield !== '')
	{
		$bbcode = new bbcode(base64_encode($bbcode_bitfield));
	}
	$bbcode->bbcode_second_pass($post_text, $posts_row['bbcode_uid'], $posts_row['bbcode_bitfield']);
por esto:

Código: Seleccionar todo

	// Instantiate BBCode if need be
	if ($bbcode_bitfield !== '')
	{
		$bbcode = new bbcode(base64_encode($bbcode_bitfield));
		$bbcode->bbcode_second_pass($post_text, $posts_row['bbcode_uid'], $posts_row['bbcode_bitfield']);
	}

Frogman
Invitado

Re: Algunos dudas con últimos post del foro

#14

Mensaje por Frogman »

Ahora si, gracias Alorse. :ok:

Muchas gracias.

Frogman
Invitado

Re: Algunos dudas con últimos post del foro

#15

Mensaje por Frogman »

Hola otra vez. :D

Tabajando con este sistema de implementacion de ultimos post para hacer un sistema de noticias me han sugido nuevas dudas, se que el tema está dado como solucionado,no se si deberia ponerlas aqui o abrir un tema nuevo, pero como son relacionados con lo mismo... pues lo pongo aqui.

Bueno, mis dudas son las siguientes:
Me gustaria que los post se mostraran por orden de publicación del post padre, el problema del sistema que uso ahora es que si un usuario contesta a una noticia ésta se pone en primer lugar automaticamente en el foro (cosa inevitable) y en mi página donde muestro las noticias (eso es lo que me gustaria evitar)

Otra duda es como podría hacer que se muestren 5 noticias completas (Asunto, una imágen, fecha y texto) y luego las 5 siguientes solo asunto y fecha. Eso se aria metiendo otro bloque de noticias que se saltara las 5 primeras. No se, tal vez estoy pidiendo demasiado, yo y mis cabezonerias. :ok:

Gracias.

Cerrado

Volver a “Foros de Soporte 3.0.x”