• 3
  • 16 RepliesReplies
  • 12343 ReadTimes Read
  • 42 PointsPoints

Topic: Contabilizar posts de subforos en global de su foro

Usuario: GeraltLK
Rango: Nuevo Usuario
Mensajes: 9
Points: 17
Mi web: http://www.clanguardias.com/foro/
Perfil: View Profile
Pais:
es
DESCRIPCIÓN DEL PROBLEMA A SOLUCIONAR

Primeramente comentar que estos cambios los he hecho sobre mi foro en su versión SMF 2.0.3 :)

Tras actualizar mi foro, observé que en determinados foros en los que a su vez había varios niveles de subforos por debajo de él, los posts escritos en estos últimos no aparecían en el total de dicho foro. Lo ilustro con una imagen de mi foro:
Show content


En ambos foros, existen distintos niveles de subforos como por ejemplo esto:

Foro dedicado a X tema
----Subforo 1 (subforo del anterior Foro)
---------Subforo A (subforo de subforo 1)
--------------Subforo a (subforo de subforo A)

El problema es que aunque en las opciones de administración hayamos marcado lo de "Contar mensajes hijos en totales de padre"
Administración > Manejar Foros y Categorías > Configuración > Contar mensajes hijos en totales de padres.


Seguía sin aparecer el total de posts de toda esa sección del foro.
Por defecto, SMF solo contabiliza los posts escritos en el foro principal y en el primer nivel de Subforo de este, es decir, los mensajes escritos en

Foro dedicado a X tema
----Subforo 1 (subforo del anterior Foro)

---------Subforo A (subforo de subforo 1)
--------------Subforo a (subforo de subforo A)

Pero los mensajes escritos en los otros dos niveles inferiores de subforo no.
Del mismo modo, cuando escribes un posts en dichos niveles inferiores de subforos, ese mensaje tampoco aparecía en el indice general como "último post escrito". Aparece que hay nuevo mensaje, pero no indicaba que ese era el último post (por eso puse una flechita en rojo arriba indicando el último post)

Tras todo esto pasa a explicar como solucionar esto, ya que era necesario explicar lo anterior porque será distinto para cada caso  :)



HACER QUE SE CONTABILICEN TODOS LOS MENSAJES

Es relativamente sencillo:
Y aquí viene el por qué de la explicación de antes. Debemos saber cuantos niveles de subforos tenemos en nuestro foro. En mi caso como puse antes tengo 3 niveles de subforos
----Subforo 1 (subforo del anterior Foro)[/b]
---------Subforo A (subforo de subforo 1)
--------------Subforo a (subforo de subforo A)

Por tanto en mi caso sería así

Vamos al archivo:
Sources/Subs-BoardIndex.php

Buscamos:
Code: [Select]
AND b.child_level BETWEEN ' . $boardIndexOptions['base_level'] . ' AND ' . ($boardIndexOptions['base_level'] + 1)),
Reemplazamos:
Code: [Select]
AND b.child_level BETWEEN ' . $boardIndexOptions['base_level'] . ' AND ' . ($boardIndexOptions['base_level'] + 3)),

Si tuvierais 2 niveles sólamente pues reemplazais por
AND b.child_level BETWEEN ' . $boardIndexOptions['base_level'] . ' AND ' . ($boardIndexOptions['base_level'] + 2)),

Tan sólo varía ese numerito en rojo. Si fueran 4 niveles, pues un 4, etc. Por defecto SMF como digo sólo lee el nº de posts del primer nivel de subforo



Con esto ya conseguiríamos que se muestren todos los mensajes de una sección en el indice general del foro.

NOTA: El total de posts del foro que se muestra en el área de información ese es siempre correcto. Esto no interfiere para nada, se refiere solo al nº total de posts de cada sección si esta tiene muchos niveles de subforos.





HACER QUE SE MUESTRE EN EL ÍNDICE GENERAL EL ÚLTIMO POST PUBLICADO, SI ESTE LO HA SIDO EN UN SUBFORO DE BAJO NIVEL

Del mismo modo que antes, cualquier post publicado en dichos niveles inferiores de subforo, no aparecerá nunca como "último post escrito" en el índice general de esa sección.

Para solucionar esto vamos al archivo:
Sources/Subs-BoardIndex.php

Buscamos
Code: [Select]
if (isset($parent_map[$row_board['id_parent']]) && !$row_board['is_redirect'])
{
$parent_map[$row_board['id_parent']][0]['posts'] += $row_board['num_posts'];
$parent_map[$row_board['id_parent']][0]['topics'] += $row_board['num_topics'];
$parent_map[$row_board['id_parent']][1]['posts'] += $row_board['num_posts'];
$parent_map[$row_board['id_parent']][1]['topics'] += $row_board['num_topics'];

Reemplazamos por:
Code: [Select]
if (isset($parent_map[$row_board['id_parent']]) && !$row_board['is_redirect'])
{
$parent_map[$row_board['id_parent']][0]['posts'] += $row_board['num_posts'];
$parent_map[$row_board['id_parent']][0]['topics'] += $row_board['num_topics'];
$parent_map[$row_board['id_parent']][1]['posts'] += $row_board['num_posts'];
$parent_map[$row_board['id_parent']][1]['topics'] += $row_board['num_topics'];

/** added by FH in order to also show last posts of grand children at board index **/
if($parent_map[$row_board['id_parent']][0]['last_post']['timestamp'] < forum_time(true, $row_board['poster_time'])) {
censorText($row_board['subject']);
$row_board['short_subject'] = shorten_subject($row_board['subject'], 24);
$this_last_post = array(
'id' => $row_board['id_msg'],
'time' => $row_board['poster_time'] > 0 ? timeformat($row_board['poster_time']) : $txt['not_applicable'],
'timestamp' => forum_time(true, $row_board['poster_time']),
'subject' => $row_board['short_subject'],
'member' => array(
'id' => $row_board['id_member'],
'username' => $row_board['poster_name'] != '' ? $row_board['poster_name'] : $txt['not_applicable'],
'name' => $row_board['real_name'],
'href' => $row_board['poster_name'] != '' && !empty($row_board['id_member']) ? $scripturl . '?action=profile;u=' . $row_board['id_member'] : '',
'link' => $row_board['poster_name'] != '' ? (!empty($row_board['id_member']) ? '<a href="' . $scripturl . '?action=profile;u=' . $row_board['id_member'] . '">' . $row_board['real_name'] . '</a>' : $row_board['real_name']) : $txt['not_applicable'],
),
'start' => 'msg' . $row_board['new_from'],
'topic' => $row_board['id_topic']
);

// Provide the href and link.
if ($row_board['subject'] != '')
{
$this_last_post['href'] = $scripturl . '?topic=' . $row_board['id_topic'] . '.msg' . ($user_info['is_guest'] ? $row_board['id_msg'] : $row_board['new_from']) . (empty($row_board['is_read']) ? ';boardseen' : '') . '#new';
$this_last_post['link'] = '<a href="' . $this_last_post['href'] . '" title="' . $row_board['subject'] . '">' . $row_board['short_subject'] . '</a>';
}
else
{
$this_last_post['href'] = '';
$this_last_post['link'] = $txt['not_applicable'];
}
$parent_map[$row_board['id_parent']][0]['last_post'] = $this_last_post;
}
/** end **/

Y listo, ya nos mostrará dichos mensajes.



Pero mejor muestro con imágenes como queda todo tras estos 2 cambios:

ANTES





DESPUÉS



Fijaos que además de contabilizar ya correctamente todos los posts de cada Foro (arriba 7500 y algo y abajo ya los 30.000 y pico), ahora también muestra los últimos mensajes escritos incluso en los subforos de nivel más bajo.



Cualquier duda pregunten  :)
You do not have permission to give points
point 42 Points

Users who gave points in this topic » Lean (10 Pts) » 4kstore (20 Pts) » langel (3 Pts) » dhayzon (3 Pts) » bestlink (3 Pts) » googlebot (3 Pts) 

Usuario: Lean
Rango: Fundador
Mensajes: 6782
Points: 236
Perfil: View Profile
Pais:
ar
Re:Contabilizar posts de subforos en global de su foro
Reply #1 January 19, 2013 - 12:08 12:08
Excelente tutorial. +10

Usuario: 4kstore
Rango: Moderador Global
Mensajes: 4916
Points: 8111
Mi web: http://www.smfsimple.com
Perfil: View Profile
Pais:
ar
Re:Contabilizar posts de subforos en global de su foro
Reply #2 January 19, 2013 - 02:22 14:22
Espectacular aporte, todo muy bien explicado.
Muchas gracias por compartir!
Saludos

Usuario: leiitoh8998
Rango: Nuevo Usuario
Mensajes: 12
Points: 7
Mi web: http://www.bajaunapeli.com/index.php?action=forum
Perfil: View Profile
Pais:
es
Re:Contabilizar posts de subforos en global de su foro
Reply #3 February 04, 2013 - 03:01 15:01
Acabo de probar esta modificación en mi foro 2.0.4 sin éxito, sigue sin mostrarme el numero de temas o mensajes y mucho menos el ultimo hilo... apesar de realizar los cambios que explicas en el post...

Alguien a probado en 2.0.4?


Saludos.





Usuario: dhayzon
Rango: Nuevo Usuario
Mensajes: 38
Points: 19
Mi web: http://dhayzon.com/
Perfil: View Profile
Pais:
pk
Re:Contabilizar posts de subforos en global de su foro
Reply #4 February 06, 2013 - 12:13 12:13
simplemente expectacular y justo lo que estaba buscando  y si no lo encontraba lo iba a realizar  gracias hay te dejo 3 puntos son los  q tengo por  ahora
sunca entro a smfsimple por lo pesado q era y dificil de navegar  pero ahora esta mas light jejej

edito// devuelveme mis puntos no funciona jejeje  naaaa mentira  pero sigue sin funcionarme vere q ago

Usuario: 4kstore
Rango: Moderador Global
Mensajes: 4916
Points: 8111
Mi web: http://www.smfsimple.com
Perfil: View Profile
Pais:
ar
Re:Contabilizar posts de subforos en global de su foro
Reply #5 February 06, 2013 - 12:39 12:39
simplemente expectacular y justo lo que estaba buscando  y si no lo encontraba lo iba a realizar  gracias hay te dejo 3 puntos son los  q tengo por  ahora
sunca entro a smfsimple por lo pesado q era y dificil de navegar  pero ahora esta mas light jejej

edito// devuelveme mis puntos no funciona jejeje  naaaa mentira  pero sigue sin funcionarme vere q ago

Marcaste esto: El problema es que aunque en las opciones de administración hayamos marcado lo de "Contar mensajes hijos en totales de padre"
Administración > Manejar Foros y Categorías > Configuración > Contar mensajes hijos en totales de padres.

Usuario: dhayzon
Rango: Nuevo Usuario
Mensajes: 38
Points: 19
Mi web: http://dhayzon.com/
Perfil: View Profile
Pais:
pk
Re:Contabilizar posts de subforos en global de su foro
Reply #6 February 06, 2013 - 03:07 15:07
Marcaste esto: El problema es que aunque en las opciones de administración hayamos marcado lo de "Contar mensajes hijos en totales de padre"
Administración > Manejar Foros y Categorías > Configuración > Contar mensajes hijos en totales de padres.

grande 4kstore...

solucionado me falto marcar esa opción gracias   aqui una cap para los interesados


Usuario: Lean
Rango: Fundador
Mensajes: 6782
Points: 236
Perfil: View Profile
Pais:
ar
Re:Contabilizar posts de subforos en global de su foro
Reply #7 February 06, 2013 - 03:21 15:21
Buena actitud de dejar la cap! Seguramente ayudaras a otros con eso!
SAludos

Usuario: 4kstore
Rango: Moderador Global
Mensajes: 4916
Points: 8111
Mi web: http://www.smfsimple.com
Perfil: View Profile
Pais:
ar
Re:Contabilizar posts de subforos en global de su foro
Reply #8 February 06, 2013 - 03:32 15:32
Genial dhayzon, de igual manera todos los créditos para el autor del topic que se armo un terrible tutorial!

Usuario: GeraltLK
Rango: Nuevo Usuario
Mensajes: 9
Points: 17
Mi web: http://www.clanguardias.com/foro/
Perfil: View Profile
Pais:
es
Re:Contabilizar posts de subforos en global de su foro
Reply #9 February 07, 2013 - 05:47 05:47
No puedo modificar el primer post, sino marcaba en rojo esa parte de "marcar la casilla de Contar mensajes hijos en totales de padre" para que fuera más vistosa  :)

Saludos

Usuario: bestlink
Rango: Nuevo Usuario
Mensajes: 252
Points: 13
Mi web: http://mega-foro.com
Perfil: View Profile
Pais:
es
Re:Contabilizar posts de subforos en global de su foro
Reply #10 February 19, 2013 - 05:25 17:25
Porfavor que alguien me diga donde y como entro aqui " Sources/Subs-BoardIndex.php " porque yo no lo encuentro!

Gracias!

no avatar
Usuario: Papacho
Rango: User Supremo
Mensajes: 477
Points: 534
Mi web: http://wers.com.ar/
Perfil: View Profile
Pais:
ar
Re:Contabilizar posts de subforos en global de su foro
Reply #11 February 19, 2013 - 05:46 17:46
Esta en los archivos del foro, entra en tu ftp e ingresa a la carpeta sources. Ahi dentro esta el archivo Subs-BoardIndex.php

Usuario: bestlink
Rango: Nuevo Usuario
Mensajes: 252
Points: 13
Mi web: http://mega-foro.com
Perfil: View Profile
Pais:
es
Re:Contabilizar posts de subforos en global de su foro
Reply #12 February 20, 2013 - 01:14 01:14
Esta en los archivos del foro, entra en tu ftp e ingresa a la carpeta sources. Ahi dentro esta el archivo Subs-BoardIndex.php

Gracias! como accedo a mi archivos de ftp? donde se encuentran? no lo veo.

Muchas gracias!

no avatar
Usuario: Papacho
Rango: User Supremo
Mensajes: 477
Points: 534
Mi web: http://wers.com.ar/
Perfil: View Profile
Pais:
ar
Re:Contabilizar posts de subforos en global de su foro
Reply #13 February 20, 2013 - 09:53 09:53
Donde subiste los archivos del foro, dentro de esos archivos se encuetra la carpeta sources.

Usuario: bestlink
Rango: Nuevo Usuario
Mensajes: 252
Points: 13
Mi web: http://mega-foro.com
Perfil: View Profile
Pais:
es
Re:Contabilizar posts de subforos en global de su foro
Reply #14 February 21, 2013 - 06:24 18:24
Donde subiste los archivos del foro, dentro de esos archivos se encuetra la carpeta sources.

Muchisimas gracias, ya lo tengo hecho!

Un saludo!

 

TAGS



top

Smfsimple.com es un sitio destinado a brindar un servicio de soporte y herramientas para foros realizados con el sistema de foros gratuito simplemachines.org. Contamos con un selecto equipo de desarrolladores y conocedores del sistema, sus foros estaran en buenas manos.
This site is not affiliated with or endorsed by Simple Machines