Página 1 de 1

Welcome on Index colocado en el overall_header

Publicado: 11 Oct 2010, 19:46
por exau
Antes que nada, aclaro que este no es un tema repetido, pues aunque la consulta se parece a ésta: http://www.phpbb-es.com/foro/soporte-mo ... 28445.html fue sobre cómo colocarlo en el portal, sin mencionar que no fue contestada por falta de interpretación del interesado y que el board3 tiene su propio bloque de bienvenida para el usuario...

Quiero colocar el bloque del Welcome on Index en el overall_header pues tengo espacio para hacerlo. Sin embargo, debido a que las modificaciones que se aplican son en el index.php, solo afectan el índice (obvio, valga la redundancia), cuando se cambia de página (viewforum.php, viewtopic.php, search.php, etc.) no se muestran ni el avatar, ni funciona los saludos en base a la rotación de la hora (buenos días, buenas tardes, buenas noches) porque dichos cambios no están montados en otra página. ¿Es posible plantear una modificación que permita que este mod pueda abarcar TODAS las páginas y no solo el índice?

Saludos,

Re: Welcome on Index colocado en el overall_header

Publicado: 11 Oct 2010, 20:14
por leviatan21
Se agradece un enlace directo a la descarga del MOD (tal como indican las normas)

Re: Welcome on Index colocado en el overall_header

Publicado: 11 Oct 2010, 20:22
por exau
leviatan21 escribió:Se agradece un enlace directo a la descarga del MOD (tal como indican las normas)
Lo siento compañero, me enredé en mi propio juego de palabras :lol: :ops :ops

Aquí lo tienes:

http://www.phpbb.com/customise/db/mod/w ... n_index_2/

Te agradezco la atención :ok:

Saludos,

Re: Welcome on Index colocado en el overall_header

Publicado: 12 Oct 2010, 17:17
por leviatan21
Para que sea visible en todo el foro (sin importar la página que se visite) los cambios que ha que realizar en el archivo raíz/index.php hay que aplicarlos en otro, prueba siguiendo estos pasos :

Abrir :
raíz/includes/functions.php

Buscar :

Código: Seleccionar todo

    // The following assigns all _common_ variables that may be used at any point in a template.  
Antes, agregar :

Código: Seleccionar todo

// BEGIN Welcome Mod
//--Welcome_Mod--get the hour number-->
$date = $user->format_date(time(), 'H');

if ($user->data['is_registered'])
{
    $u_user_name = get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour']);
}
else
{
    $u_user_name = $user->lang['WELCOME_GUEST'];
}   

switch (true)
{
        case ($date < 1):
            // if the hour is 11am-12am (18-23)
            $s_welcome = sprintf($user->lang['GOOD_NIGHT'], $u_user_name);;
        break;
      
          case ($date < 4):
            // if the hour is 1-3 am
            $s_welcome = sprintf($user->lang['UP_LATE'], $u_user_name);
        break;
       
        case ($date < 8):
            // if the hour is 4-7 am
            $s_welcome = sprintf($user->lang['UP_EARLY'], $u_user_name);
        break;
       
        case ($date < 12):
            // if the hour is 8-11 am
            $s_welcome = sprintf($user->lang['GOOD_MORNING'], $u_user_name);
        break;
       
        case ($date < 18):
            // if the hour is 12-5pm
            $s_welcome = sprintf($user->lang['GOOD_AFTERNOON'], $u_user_name);
        break;
       
        case ($date < 24):
            // if the hour is 6pm-11pm
            $s_welcome = sprintf($user->lang['GOOD_EVENING'], $u_user_name);;
        break;
} 

// how long a member for
$member_for = '';
if ($user->data['is_registered'] && !$user->data['is_bot'])
{
    $member_length = time() - $user->data['user_regdate'];
    $years = $months = $days = 0;
    $member_for = '';
    if ($member_length)
    {   
        if ($member_length >= 31536000)
        {
            $years = floor($member_length / 31536000);
            $member_length = $member_length - ($years * 31536000);
            $member_for .= $years > 1 ? ($years . '&nbsp;' . $user->lang['WELCOME_YEARS'] . ', ') : ($years . '&nbsp;' . $user->lang['WELCOME_YEAR'] . ', ');
        }
        $months = floor($member_length / 2628000);
        if ($months)
        {
            $months = $months > 1 ? ($months . '&nbsp;' . $user->lang['WELCOME_MONTHS'] . ', ') : ($months . '&nbsp;' . $user->lang['WELCOME_MONTHS'] . ', ');
            $member_length = $member_length - ($months * 2628000);
            $member_for .= $months;
        }
        $days = floor($member_length / 86400);
        if ($days)
        {
            $days = $days > 1 ? ($days . '&nbsp;' . $user->lang['WELCOME_DAYS']) : ($days . '&nbsp;' . $user->lang['WELCOME_DAY']);
            $member_for .= $days;
        }       
    }
}
//END Welcome Mod
  

Código: Seleccionar todo

Buscar :

Código: Seleccionar todo

        'S_USER_LOGGED_IN'        => ($user->data['user_id'] != ANONYMOUS) ? true : false,  
Antes agregar :

Código: Seleccionar todo

    // BEGIN Welcome Mod   
    'S_WELCOME'                   => $s_welcome,
    'S_JOINED_DATE'               => $user->lang['JOINED'] . ':&nbsp;' . $user->format_date($user->data['user_regdate']),
    'USER_AVATAR'               => get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']),
    'MEMBER_FOR'               => (!empty($member_for)) ? $user->lang['MEMBER_FOR'] . '&nbsp;' . $member_for : '',
       // END Welcome Mod 
  

Re: Welcome on Index colocado en el overall_header

Publicado: 12 Oct 2010, 17:33
por exau
Reportando, funciona bien en todas las páginas excepto en search.php y en faq.php; me devuelve este error:

Código: Seleccionar todo

Fatal error: Call to undefined function get_user_avatar() in \includes\functions.php on line 4406
:( :(

Re: Welcome on Index colocado en el overall_header

Publicado: 12 Oct 2010, 18:04
por leviatan21
Prueba haciendo este cambio en el archivo raíz/includes/functions.php
Debajo de :

Código: Seleccionar todo

// BEGIN Welcome Mod  
Agrega :

Código: Seleccionar todo

include($phpbb_root_path . 'includes/functions_display.' . $phpEx); 

Re: Welcome on Index colocado en el overall_header

Publicado: 12 Oct 2010, 18:32
por exau
leviatan21 escribió:Prueba haciendo este cambio en el archivo raíz/includes/functions.php
Debajo de :

Código: Seleccionar todo

// BEGIN Welcome Mod   
Agrega :

Código: Seleccionar todo

include($phpbb_root_path . 'includes/functions_display.' . $phpEx); 


Me devuelve este error en todas las páginas:

Código: Seleccionar todo

Parse error: syntax error, unexpected ';', expecting ')' in \includes\functions.php on line 4406

Welcome on Index colocado en el overall_header  Tema Solucionado

Publicado: 12 Oct 2010, 18:59
por leviatan21
Hice el cambio en mi foro para probar y he tenido que hacer algunos cambios :

Nn el archivo raíz/includes/functions.php el código agregado antes de :

Código: Seleccionar todo

// The following assigns all _common_ variables that may be used at any point in a template.  
lo modifiqué a esto :

Código: Seleccionar todo

// BEGIN Welcome Mod
    if (!function_exists('get_user_avatar'))
    {
        include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
    }
    if (!function_exists('get_username_string'))
    {
        include($phpbb_root_path . 'includes/functions_content.' . $phpEx);
    }

    //--Welcome_Mod--get the hour number-->
    $date = $user->format_date(time(), 'H');

    if ($user->data['is_registered'])
    {
        $u_user_name = get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour']);
    }
    else
    {
        $u_user_name = $user->lang['WELCOME_GUEST'];
    }   

    switch (true)
    {
        case ($date < 1):
            // if the hour is 11am-12am (18-23)
            $s_welcome = sprintf($user->lang['GOOD_NIGHT'], $u_user_name);
        break;
        case ($date < 4):
            // if the hour is 1-3 am
            $s_welcome = sprintf($user->lang['UP_LATE'], $u_user_name);
        break;
        case ($date < 8):
            // if the hour is 4-7 am
            $s_welcome = sprintf($user->lang['UP_EARLY'], $u_user_name);
        break;
        case ($date < 12):
            // if the hour is 8-11 am
            $s_welcome = sprintf($user->lang['GOOD_MORNING'], $u_user_name);
        break;
        case ($date < 18):
            $s_welcome = sprintf($user->lang['GOOD_AFTERNOON'], $u_user_name);
        break;
        case ($date < 24):
            // if the hour is 6pm-11pm
            $s_welcome = sprintf($user->lang['GOOD_EVENING'], $u_user_name);
        break;
    }

    // how long a member for
    $member_for = '';
    if ($user->data['is_registered'] && !$user->data['is_bot'])
    {
        $member_length = time() - $user->data['user_regdate'];
        $years = $months = $days = 0;
        $member_for = '';
        if ($member_length)
        {
            if ($member_length >= 31536000)
            {
                $years = floor($member_length / 31536000);
                $member_length = $member_length - ($years * 31536000);
                $member_for .= $years > 1 ? ($years . '&nbsp;' . $user->lang['WELCOME_YEARS'] . ', ') : ($years . '&nbsp;' . $user->lang['WELCOME_YEAR'] . ', ');
            }
            $months = floor($member_length / 2628000);
            if ($months)
            {
                $months = $months > 1 ? ($months . '&nbsp;' . $user->lang['WELCOME_MONTHS'] . ', ') : ($months . '&nbsp;' . $user->lang['WELCOME_MONTHS'] . ', ');
                $member_length = $member_length - ($months * 2628000);
                $member_for .= $months;
            }
            $days = floor($member_length / 86400);
            if ($days)
            {
                $days = $days > 1 ? ($days . '&nbsp;' . $user->lang['WELCOME_DAYS']) : ($days . '&nbsp;' . $user->lang['WELCOME_DAY']);
                $member_for .= $days;
            }
        }
    }

//END Welcome Mod
 

Welcome on Index colocado en el overall_header

Publicado: 12 Oct 2010, 21:29
por exau
Más que un maestro... eres un dios :bravo: :bravo:

¡Se te agradece un millón! :ok: marco el tema como solucionado :mrgreen:

Saludos,