Fork me on GitHub






Savoir qui est en ligne sur un module spécifique...
Régulier
Inscrit: 06/05/2003 15:21
De environs de PARIS
Messages: 201
Hello les xoopsiens

Voilà j'aimerais modifier le bloc qui est en ligne ? afin qu'il m'affiche, non pas combien de membres sont connectés sur le module courant, mais combien de membres sont connectés sur le module de chat khat...
Je pense qu'il faut bidouiller ce fichier là qui contient la variable affichée dans le template - html/modules/system/blocks/system_blocks.php

Voilà voilà, si quelqu'un a déjà fait quelque chose dans le genre, ça serait cool de m'aiguiller...
Merci d'avance & @+

Posté le : 20/02/2006 16:14

Edité par ebrain sur 21/02/2006 11:15:16
Partager Twitter Partagez cette article sur GG+
Re: Savoir qui est en ligne sur un module spécifique...
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
C'est bien ce fichier qu'il faut modifier (system_blocks.php) et aussi le template correspondant (system_block_online.html).

avant le return $block; de la fonction b_system_online_show, tu peux insérer le code suivant qui te permettra de connaitre le nombre de visisteurs (connectés ou non) par modules

$block['online_module'] = "";
$module_handler =& xoops_gethandler('module');
$installed_mods =& $module_handler->getObjects();
foreach ( 
$installed_mods as $module ) {
    if (
$module->getVar('dirname') != 'system') {
        
$online_module $online_handler->getCount(new Criteria('online_module'$module->getVar('mid') ));
        
$name_module strip_tags$myts->makeTboxData4Show($module->getVar('name''E')) );
        if (
$online_module != 0) {
            if ( 
strlen$name_module ) > 14 ) {
                
$block['online_module'] .= substr$name_module 14) . ". -> " $online_module "<br>";
            } else {
                
$block['online_module'] .= $name_module  " -> " $online_module "<br>";
            }
        }
    }
}



et pour finir dans le template system_block_online.htmln tu ajoutes

<{$block.online_module}>



Pour voir le rendu dernier block à gauche : http://www.madbead.net/xoops/modules/news/



Edit : j'ai mal répondu à la question, pô grave, mais il suffit de cliquer sur le lien "plus"

Posté le : 20/02/2006 23:02
Partager Twitter Partagez cette article sur GG+
Re: Savoir qui est en ligne sur un module spécifique...
Régulier
Inscrit: 06/05/2003 15:21
De environs de PARIS
Messages: 201
Il y a sans doute un problème dans ton code mais je ne sais pas où : quand j'upload mon fichier system_blocks il ne me reste plus qu'une page blanche en guise de page d'accueil... Aucune erreur d'aucune sorte, juste une page blanche.

Voici la fameuse fonction une fois modifiée :
function b_system_online_show()
{
    global 
$xoopsUser$xoopsModule;
    
$online_handler =& xoops_gethandler('online');
    
mt_srand((double)microtime()*1000000);
    
// set gc probabillity to 10% for now..
    
if (mt_rand(1100) < 11) {
        
$online_handler->gc(300);
    }
    if (
is_object($xoopsUser)) {
        
$uid $xoopsUser->getVar('uid');
        
$uname $xoopsUser->getVar('uname');
    } else {
        
$uid 0;
        
$uname '';
    }
    if (
is_object($xoopsModule)) {
        
$online_handler->write($uid$unametime(), $xoopsModule->getVar('mid'), $_SERVER['REMOTE_ADDR']);
    } else {
        
$online_handler->write($uid$unametime(), 0$_SERVER['REMOTE_ADDR']);
    }
    
$onlines =& $online_handler->getAll();
    if (
false != $onlines) {
        
$total count($onlines);
        
$block = array();
        
$guests 0;
        
$members '';
        for (
$i 0$i $total$i++) {
            if (
$onlines[$i]['online_uid'] > 0) {
                
$members .= ' <a href="'.XOOPS_URL.'/userinfo.php?uid='.$onlines[$i]['online_uid'].'">'.$onlines[$i]['online_uname'].'</a>,';
            } else {
                
$guests++;
            }
        }
        
$block['online_total'] = sprintf(_ONLINEPHRASE$total);
        if (
is_object($xoopsModule)) {
            
$mytotal $online_handler->getCount(new Criteria('online_module'$xoopsModule->getVar('mid')));
            
$block['online_total'] .= ' ('.sprintf(_ONLINEPHRASEX$mytotal$xoopsModule->getVar('name')).')';
        }
        
$block['lang_members'] = _MEMBERS;
        
$block['lang_guests'] = _GUESTS;
        
$block['online_names'] = $members;
        
$block['online_members'] = $total $guests;
        
$block['online_guests'] = $guests;
        
$block['lang_more'] = _MORE;
    
$block['online_module'] = "";
    
$module_handler =& xoops_gethandler('module');
    
$installed_mods =& $module_handler->getObjects();
    foreach ( 
$installed_mods as $module ) {
        if (
$module->getVar('dirname') != 'system') {
            
$online_module $online_handler->getCount(new Criteria('online_module'$module->getVar('mid') ));
            
$name_module strip_tags$myts->makeTboxData4Show($module->getVar('name''E')) );
            if (
$online_module != 0) {
                if ( 
strlen$name_module ) > 14 ) {
                    
$block['online_module'] .= substr$name_module 14) . ". -> " $online_module "<br>";
                } else {
                    
$block['online_module'] .= $name_module  " > " $online_module "<br>";
                }
            }
        }
    }
        return 
$block;
    } else {
        return 
false;
    }
}


Merci de ton aide,
@+

Posté le : 21/02/2006 09:02
Partager Twitter Partagez cette article sur GG+
Re: Savoir qui est en ligne sur un module spécifique...
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
deux solutions

1er solution : ajouter en début de fonction
$myts =& MyTextSanitizer::getInstance();


OU

2ème solution : remplacer la ligne
$name_module strip_tags$myts->makeTboxData4Show($module->getVar('name''E')) );


par

$name_module strip_tags$module->getVar('name''E') );

Posté le : 21/02/2006 10:44
Partager Twitter Partagez cette article sur GG+
Re: Savoir qui est en ligne sur un module spécifique...
Régulier
Inscrit: 06/05/2003 15:21
De environs de PARIS
Messages: 201
Yaisse !

Merci beaucoup DuGris, ça fonctionne impec !!
Merci encore & @+

<edit> Euh c'est pas très précis (je viens de m'en rendre compte) mais je pense que ça fonctionne </edit>

Posté le : 21/02/2006 10:56
Partager Twitter Partagez cette article sur GG+
Re: Savoir qui est en ligne sur un module spécifique...
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
Pour la précision, en fait toutes les "fonctions" system de xoops n'apparaissent pas (profil, MP, notification, ...), car le nom du module affiché est system

Pour y remédier :

$myts =& MyTextSanitizer::getInstance();
    
$block['online_module'] = "";
    
$module_handler =& xoops_gethandler('module');
    
$installed_mods =& $module_handler->getObjects();
    foreach ( 
$installed_mods as $module ) {
        
$online_module $online_handler->getCount(new Criteria('online_module'$module->getVar('mid') ));
        
$name_module strip_tags$myts->makeTboxData4Show($module->getVar('name''E')) );
        if (
$online_module != 0) {
            if ( 
strlen$name_module ) > 14 ) {
                
$block['online_module'] .= substr$name_module 14) . ". -> " $online_module "<br>";
            } else {
                
$block['online_module'] .= $name_module  " > " $online_module "<br>";
            }
        }
    }

Posté le : 21/02/2006 14:02
Partager Twitter Partagez cette article sur GG+
Re: Savoir qui est en ligne sur un module spécifique...
Xoops accro
Inscrit: 25/02/2004 00:20
De Région parisienne
Messages: 2526
Edit : En fait, cette modification n'apporte aucun changement dans l'affichage.

Car seul les modules sont affichés et que les fonctions system ne sont pas des modules et donc ne sont pas prises en compte

Posté le : 21/02/2006 14:10
Partager Twitter Partagez cette article sur GG+
Re: Savoir qui est en ligne sur un module spécifique...
Newbie
Inscrit: 08/03/2008 18:13
Messages: 1
Bonjour,

Je reviens sur cette nouvelle fonction qui fonctionne très bien sur mon site, mais maintenant je voulais savoir comment faire pour savoir "QUI" est sur chaque module (en cliquant sur le chiffre par ex)?

Merci d'avance

Posté le : 17/03/2008 13:30
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

60 Personne(s) en ligne (48 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 60 | Plus ...