Fork me on GitHub




(1) 2 »


Utilisateurs en ligne et thème
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
Salut les pro du smarty,

Après avoir lu et relu l'article de thecat (que j'ai bien connu) sur les smarty, je ne maitrise toujours pas...

Mon but :
ne plus afficher le bloc "qui est en ligne" mais intégrer l'information dans le thème, comme le fait celui de frxoops.org, en bas de thème.


J'ai bien regardé les templates, et le fichier html et j'ai :
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(1, 100) < 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, $uname, time(), $xoopsModule->getVar('mid'), $_SERVER['REMOTE_ADDR']); } else { $online_handler->write($uid, $uname, time(), 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'] . '" title="' . $onlines[$i]['online_uname'] . '">' . $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; return $block; } else { return false; } }


et le bloc initiale est le suivant :
<{$block.online_total}> <br /><br /> <{$block.lang_members}>: <{$block.online_members}> <br /> <{$block.lang_guests}>: <{$block.online_guests}> <br /><br /> <{$block.online_names}> <a href="javascript:openWithSelfMain('<{$xoops_url}>/misc.php?action=showpopups&type=online','Online',420,350);" title="<{$block.lang_more}>"> <{$block.lang_more}> </a>


Alors j'ai essayé d'intégrer un peu tout dans mon thème mais rien ne fonctionne, (genre :
En ligne : <{$total}> visiteurs en ligne
)
je ne maiiiiiiiitrise passsssss...

Une aide pédagogique me serait fort utile svp !


Posté le : 04/01/2013 10:07

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: Utilisateurs en ligne et thème
Xoops accro
Inscrit: 27/07/2005 16:10
De France
Messages: 2970
Bonjour alain
Colle ca dans ton thème
<{block id=7}>


Il te faudra ensuite modifier le template du bloc numéro 7 ( utilisateur en ligne)

Posté le : 04/01/2013 12:08
Partager Twitter Partagez cette article sur GG+
Re: Utilisateurs en ligne et thème
Xoops accro
Inscrit: 27/07/2005 16:10
De France
Messages: 2970
Tiens bonus

En ligne : <{$block.online_total}> dont <{$block.lang_members}>: <{$block.online_members}> <{$block.lang_guests}>: <{$block.online_guests}> <br /><br /> <{$block.online_names}> <a href="javascript:openWithSelfMain('<{$xoops_url}>/misc.php?action=showpopups&amp;type=online','Online',420,350);" title="<{$block.lang_more}>">     <{$block.lang_more}> </a>


A insérer dans modules/system/templates/blocks/system_block_online.html

Posté le : 04/01/2013 12:23
Partager Twitter Partagez cette article sur GG+
Re: Utilisateurs en ligne et thème
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
ok, merci tatane,
j'ai compris la méthode avec le <{block id=7}>
Cela marche parfaitement,et il me suffit de modifier le fichier system_block_online.html.

Mais maintenant,
si je veux plutôt insérer du code directement dans mon thème,
quelles variables dois-je mettre ?

C'est vraiment la 1ère méthode qu'il faut utiliser ?

PS : je travaille et adapte l'excellent thème "XD-floral",
un magnifique thème, comme beaucoup d'autres, sur ton site.

Posté le : 04/01/2013 12:39

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: Utilisateurs en ligne et thème
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
Sinon,
J'ai fait aussi une copie du bloc, 7 -> 155
j'ai inséré <{block id=155}> dans mon thème et évidemment, sans surprise, ça fonctionne, mais je voudrais l'adapter sans toucher au bloc d'origine.

Les blocs (7 et 155) pointent vers le même template ou bien le système a crée une copie du template d'origine ?

Mon idée serait de ne pas modifier le bloc d'origine...

Posté le : 04/01/2013 12:49

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: Utilisateurs en ligne et thème
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
Alain, quand Xoops appel un bloc, il charge en mémoire une fonction présente dans un fichier présent dans le répertoire bloc du module (ici ./modules/system/blocs/)
Pour savoir quel fichier consulter il te suffit de consulter le fichier xoops_version.php (regarde au niveau de la déclaration des blocs), tu as le fichier et la fonction appelée.
Si tu veux directement appelé les variables dans le thème sans passé par le bloc, il faut donc les déclarer dans Xoops (elles n'existent dans Xoops que quand on appel la fonction du bloc), reprendre la fonction qui déclare les variables dans le bloc et les déclarer dans le header.php.

Posté le : 04/01/2013 13:11
Partager Twitter Partagez cette article sur GG+
Re: Utilisateurs en ligne et thème
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
ok, compris en partie.
Pour utiliser les variables dans le thème, je dois déclarer les variables contenus dans le bloc,
donc je vais faire plus simple.

Comme indiqué ci-dessus, si je fais une copie du bloc "en ligne" (id = 155), j'intègre <{block id=155}> dans mon thème,
mais pour modifier l'aspect, sans toucher au fichier par défaut, Comment faire ?

Tu vas me répondre "utilise les surchages" ?

Posté le : 04/01/2013 13:33

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: Utilisateurs en ligne et thème
Xoops accro
Inscrit: 27/07/2005 16:10
De France
Messages: 2970
Citation :
alain01 a écrit :

Tu vas me répondre "utilise les surchages" ?


Et oui

Posté le : 04/01/2013 13:41
Partager Twitter Partagez cette article sur GG+
Re: Utilisateurs en ligne et thème
Supporter Xoops
Inscrit: 09/01/2005 13:37
De Breizh
Messages: 16972
@Alain

De mémoire quand tu clones un bloc, le code html est direct dans la base de données - donc la personnalisation doit se faire via phpmyadmin par exemple

Posté le : 04/01/2013 15:21

La connaissance s'accroît quand on la partage ...
Partager Twitter Partagez cette article sur GG+
Re: Utilisateurs en ligne et thème
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
Je vous propose ici mon adaptation.

Méthode :
- Dans mon thème, dans le fichier theme.html, j'ai inséré au bon endroit la balise <{bloc id=7}>. (le bloc 7 étant le bloc "qui est en ligne")
- Ensuite, j'ai utilisé la surcharge des templates (Administration / panneau de configuration / template / choix de mon thème, module / systeme / blocks / system_bloc_online)
- puis j'ai adapté le fichier

Cela donne cela :
Open in new window


Il m'a fallu 4 images :

Visiteur Open in new window


+ Visiteurs Open in new window


Membre Open in new window


+ Membres Open in new window


et le code est le suivant :
<{$block.online_total}> (<a href="javascript:openWithSelfMain('<{$xoops_url}>/misc.php?action=showpopups&type=online','Online',1020,350);" title="Detail">Details</a>)<br /><br /> <{$block.online_guests}> <{if $block.online_guests >1}> visiteurs <img src="<{$xoops_url}>/_autre/images/48-visiteurs.png" border="0" alt="Visiteurs" align="absbottom" /> <{else}> visiteur <img src="<{$xoops_url}>/_autre/images/48-visiteur.png" border="0" alt="Visiteur" align="absbottom" /> <{/if}> <{if $block.online_members >0}> , <{$block.online_members}> <{if $block.online_members >1}> membres <img src="<{$xoops_url}>/_autre/images/48-membres.png" border="0" alt="Membres" align="absbottom" /><br /><br /> Membres : <{$block.online_names}> <{else}> membre <img src="<{$xoops_url}>/_autre/images/48-membre.png" border="0" alt="Membre" align="absbottom" /><br /><br /> Membre : <{$block.online_names}><br /> <{/if}> <{/if}> 


Si vous le souhaitez, je peux expliquer le code...

Posté le : 04/01/2013 21:18

Open in new window
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



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

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