Página 1 de 1

barra lateral ultimos posts en mensajes

Publicado: 10 Oct 2014, 20:31
por pacorro
URL: http://audioforo.com
Versión phpBB: 3.0.11
MODs Instalados: Ninguno
Plantilla(s) usada(s): metro
Servidor: de pago
Actualización desde otra versión: No
Conversión desde otro sistema de foros: No

Hola. He creado una barra lateral que se ve al abrir el foro. Pero cuando entras a un tema la barra ya no se ve, solo es visible en el índice.
Lo que quisiera es que la barra se viera siempre, en cualquier hilo.
A ver si me podéis decir cómo, porfa.
Gracias de antemano

Re: barra lateral ultimos posts en mensajes

Publicado: 10 Oct 2014, 20:56
por angelismo
Simplemente pon el codigo de la barra en el archivo overall_header.html de tu estilo

Re: barra lateral ultimos posts en mensajes

Publicado: 10 Oct 2014, 21:23
por pacorro
ya lo tengo puesto allí y no me funciona. Quizá hay una orden que impide que se vea en los hilos. Sale el espacio pero no el contenido

Según la info de la plantilla, en el overall header he de decirle que quiero sidebar. También se lo he dicho en viewtopic body y en viewforum body. Luego está el archivo sidebar donde está la info de la barra. Te pongo el código del archivo "sidebar"

Código: Seleccionar todo

<div id="sidebar">

	<!-- Sidebar block beginning -->
	<div class="sidebar-block">

		<!-- Sidebar header beginning -->		
		

		<!-- Sidebar content beginning -->	
		<div class="sidebar-block-content">
			<p>
<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>
</p>
		</div>
		<!-- Sidebar content end -->

	</div>
	<!-- Sidebar block end -->

</div>

Re: barra lateral ultimos posts en mensajes

Publicado: 10 Oct 2014, 21:26
por pacorro
Y si ya puestos me dijérais cómo hacer que salga solamente una vez cada hilo sería la hostia.
O sea, ahora me salen los últimos posts, pero si esos han sido hechos en un mismo hilo entonces sale ese hilo tropecientas veces. Me gustaría que en realidad salieran los últimos hilos con nuevos mensajes, pero solamente una vez cada hilo.
Gracias

Re: barra lateral ultimos posts en mensajes

Publicado: 11 Oct 2014, 12:20
por pacorro
la barra de últimos posts que uso es la de Mitch, sacada de este foro.

Pego aquí la info que tengo sobre la barra en index.php

En httpdocs/ phpbb 3-1 / index.php, Buscar:

Código: Seleccionar todo

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');

display_forums('', $config['load_moderators']); 


Agregar después:

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 = 10;


    $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 

Re: barra lateral ultimos posts en mensajes

Publicado: 11 Oct 2014, 16:52
por pacorro
Acabo de cambiar la barra de Mitch por la de Alorse
http://www.phpbb-es.com/foro/soporte-ph ... e&iaddlist


Salen los últimos hilos en vez de los últimos post, y es CASI lo que busco.
El problema es que los ordena por fecha de apertura del hilo, y es poco práctico. Quisiera que los ordenara por fecha de último post en dicho hilo.

¿me echáis un cable, porfa?

Pego el código:

En el index.php va esto...

Código: Seleccionar todo

function last_topics_on_index($limit = 10) {

    global $db, $template, $user, $auth;
    global $phpbb_root_path, $phpEx;

    $topics_ary = array(
        'SELECT' => 'f.*, t.*, u.username, u.user_colour',
        'FROM' => array(
            TOPICS_TABLE => 't',
        ),
        'LEFT_JOIN' => array(
            array(
                'FROM' => array(USERS_TABLE => 'u'),
                'ON' => 'u.user_id = t.topic_poster'
            ),
            array(
                'FROM' => array(FORUMS_TABLE => 'f'),
                'ON' => 't.forum_id = f.forum_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
        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',
    );

    $topics = $db->sql_build_query('SELECT', $topics_ary);

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

    while ($topics_row = $db->sql_fetchrow($topics_result)) {
        $forum_id = $topics_row['forum_id'];
        $topic_title = $topics_row['topic_title'];
        $topic_title = censor_text($topic_title);
        // add-on - number of replies on topic title
        $topic_replies = $topics_row['topic_replies'];
        $topic_replies = $topic_replies == 1 ? "(".$topics_row['topic_replies']." respuesta)" : "(".$topics_row['topic_replies']." respuestas)";
        $topic_replies = $topic_replies == '(0 respuestas)' ? '' : $topic_replies;
        $topic_author = get_username_string('full', $topics_row['topic_last_poster_id'], $topics_row['topic_first_poster_name'], $topics_row['topic_first_poster_colour']);
        $topic_date = $user->format_date($topics_row['topic_time']);
        $topic_link = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $topics_row['forum_id'] . '&t=' . $topics_row['topic_id']);

        $template->assign_block_vars('last_topics', array(
            'TOPIC_TITLE' => censor_text($topic_title),
            'TOPIC_AUTHOR' => $topic_author,
            'TOPIC_DATE' => $topic_date,
            'TOPIC_LINK' => $topic_link,
            'TOPIC_REPLIES' => $topic_replies,
        ));
    }
}

last_topics_on_index(10);// donde 10 es el número de mensajes a mostrar 


En el en el archivo sidebar del template va esto otro:

Código: Seleccionar todo

<!-- // inicio ultimos mensajes by Alorse -->
    <!-- IF not S_IS_BOT -->
    <div class="panel bg3">
        <div class="inner">
            <span class="corners-top"><span></span></span>
            <h3>&Uacute;ltimos mensajes</h3>
            <div class="content">
                <p>
                    <!-- BEGIN last_topics -->
                    <strong>{L_POST_SUBJECT}:</strong> <a href="{last_topics.TOPIC_LINK}">{last_topics.TOPIC_TITLE}</a> {last_topics.TOPIC_REPLIES}<br />
                    <strong>{L_AUTHOR}:</strong> {last_topics.TOPIC_AUTHOR}<br />
                    <strong>{L_FILEDATE}:</strong> {last_topics.TOPIC_DATE}<br /><br />
                    <!-- END last_post -->
                </p>
            </div>
            <span class="corners-bottom"><span></span></span>
        </div>
    </div>
    <!-- ENDIF -->
    <!-- // fin ultimos mensajes by Alorse -->

Me podríais decir qué cambiar para que salga como quiero?
Saludos

Re: barra lateral ultimos posts en mensajes

Publicado: 11 Oct 2014, 20:12
por pacorro
ofrezco pagar una hora de curro al que me lo solucione.
Una barra lateral, que salgan los últimos post pero solamente una vez cada uno, con el número de respuestas al lado.
A ver si así, que llevo 3 meses con esto. Entiendo que vuestro tiempo os cuesta, así que si hace falta lo compenso con pasta.

Re: barra lateral ultimos posts en mensajes  Tema Solucionado

Publicado: 14 Oct 2014, 22:44
por Alorse
 ! 
Mensaje del Equipo por: Alorse
parroco me ha contactado por email solicitando ayuda directa, el tema ya fue solucionado.
Para resumir un poco lo hecho, lo primero es que para que aparezca en todo lugar el foro el código PHP no puede ser colocado en el index.php, sino en un archivo aparte y luego globalizarlo o ponerlo directamente en el includes/functions.php
Por otro lado ya no es recomendable usar el plugin que Mitch compartió hace unos años, esta desactualizado e incluye métodos como el create_where_clauses() que no son necesarios y solo ocupa espacio en los archivos.
Para logar que no se repitieran los temas en la barra fue necesario modificar la consulta SQL y así excluir los repetidos.