Advertisement:

users online in the header

Aloittaja Stef001, elokuu 03, 2008, 11:12:43 AP

« edellinen - seuraava »

Stef001

Hallo,

Ik heb de users online in de header gezet in de index.template van mijn template.
Ik gebruik trouwens het classic theme.
Nu is dit te zien op de home pagina, maar als ik naar een board ga is dit verdwenen.
Heeft iemand een oplossing?

Ik gebruik SMF 2.0 Beta 3.1 Public, classic theme.
SMF 2.0.2 | SimplePortal 2.3.5

Angelotus

Waar in je index.template.php heb je dit gezet???

Stef001

#2
Net na het logo.

Heb ik onderstaande code geplaatst:
// Begin leden online in kop
   if ($context['show_who'])
      echo '
         <a href="', $scripturl, '?action=who">';

   echo '
         <span class="middletext">';

   // Assuming there ARE users online... each user in users_online has an id, username, name, group, href, and link.
   if (!empty($context['users_online']))
   {
      echo '
            ', sprintf($txt['users_active'], $modSettings['lastActive']), ':<br />', implode(', ', $context['list_users_online']);

      // Showing membergroups?
      if (!empty($settings['show_group_key']) && !empty($context['membergroups']))
         echo '
            <br />[' . implode(']&nbsp;&nbsp;[', $context['membergroups']) . ']';
   }
// Einde leden online in kop
SMF 2.0.2 | SimplePortal 2.3.5

Angelotus

Ok, verwijder die code.

In plaats daarvan plaats je in index.template.php van jouw thema:

Zoek helemaal onder aan:
?>

en plaats daar deze code voor:
// Who is online
function template_whosOnline($output_method = 'echo')
{
   global $user_info, $txt, $sourcedir, $settings, $modSettings;

   require_once($sourcedir . '/Subs-MembersOnline.php');
   $membersOnlineOptions = array(
      'show_hidden' => allowedTo('moderate_forum'),
      'sort' => 'log_time',
      'reverse_sort' => true,
   );
   $return = getMembersOnlineStats($membersOnlineOptions);

   // Add some redundancy for backwards compatibility reasons.
   if ($output_method != 'echo')
      return $return + array(
         'users' => $return['users_online'],
         'guests' => $return['num_guests'],
         'hidden' => $return['num_users_hidden'],
         'buddies' => $return['num_buddies'],
         'num_users' => $return['num_users_online'],
         'total_users' => $return['num_users_online'] + $return['num_guests'] + $return['num_spiders'],
      );

   echo '
      ', $return['num_guests'], ' ', $return['num_guests'] == 1 ? $txt['guest'] : $txt['guests'], ', ', $return['num_users_online'], ' ', $return['num_users_online'] == 1 ? $txt['user'] : $txt['users'];

   $bracketList = array();
   if (!empty($user_info['buddies']))
      $bracketList[] = $return['num_buddies'] . ' ' . ($return['num_buddies'] == 1 ? $txt['buddy'] : $txt['buddies']);
   if (!empty($return['num_spiders']))
      $bracketList[] = $return['num_spiders'] . ' ' . ($return['num_spiders'] == 1 ? $txt['spider'] : $txt['spiders']);
   if (!empty($return['num_users_hidden']))
      $bracketList[] = $return['num_users_hidden'] . ' ' . $txt['hidden'];

   if (!empty($bracketList))
      echo ' (' . implode(', ', $bracketList) . ')';

   echo '<br />
         ', implode(', ', $return['list_users_online']);

   // Showing membergroups?
   if (!empty($settings['show_group_key']) && !empty($return['membergroups']))
      echo '<br />
         [' . implode(']&nbsp;&nbsp;[', $return['membergroups']) . ']';
}


Vervolgens plaats je onderstaande code waar je wilt in je template_main_above (bijvoorbeeld onder je logo)

template_whosOnline();

Stef001

Perfect, dit werkt.
Bedankt.

Stef.
SMF 2.0.2 | SimplePortal 2.3.5

Angelotus


Jan.S.


Angelotus

In principe zou dit ook voor 1.1.6 moeten werken.

Jan.S.


krijg fout meldingen in mijn thema
zal morgen eens kijken met default

maar alvast bedank voor het antwoord

Jan.S.

#9
Heb het zojuist even geprobeerd maar helaas

Waanneer ik   template_whosOnline(); net boven

// Show a random news item? (or you could pick one from news_lines...)
of net onder
// Show right to left and the character set for ease of translating.

in de default index.template.php zet krijg ik de volgende fouten te zien
zelfde fouten zie ik ook in het andere thema

Warning: template_whosonline() [function.template-whosonline]: Unable to access /data/members/paid/j/a/januutebk.nl/htdocs/www/forum/Sources/Subs-MembersOnline.php in /data/members/paid/j/a/januutebk.nl/htdocs/www/forum/Themes/default/BoardIndex.template.php (eval?) on line 640

Warning: template_whosonline(/data/members/paid/j/a/januutebk.nl/htdocs/www/forum/Sources/Subs-MembersOnline.php) [function.template-whosonline]: failed to open stream: Success in /data/members/paid/j/a/januutebk.nl/htdocs/www/forum/Themes/default/BoardIndex.template.php (eval?) on line 640

Fatal error: template_whosonline() [function.require]: Failed opening required '/data/members/paid/j/a/januutebk.nl/htdocs/www/forum/Sources/Subs-MembersOnline.php' (include_path='.:/data/apache/php/mmp_lib:/data/session') in /data/members/paid/j/a/januutebk.nl/htdocs/www/forum/Sources/Load.php(1726) : eval()'d code on line 640


op line 640 sraat het volgende
require_once($sourcedir . '/Subs-MembersOnline.php');

Maar ik zie in sources (smf versie 1.1.6) geen Subs-MembersOnline.php staan
wel Subs-Members.php


Angelotus


Jan.S.

Bij mij weten wel

heb de default index.template met en zonder code bijgevoegd
template_whosOnline(); heb ingevoegd op line 307
de code begint op line 634

Angelotus

Deze code is voor SMF 2.0 beta 3. De code voor 1.1.6 weet ik niet, maar is wel te achterhalen uit je SSI.php. Kort door de bocht gezegd moet je die kopieren, functienaam wijzigen en de functie oproepen zoals ik in het voorbeeldje hierboven ook heb gedaan voor 2.0

Jan.S.

#13
Thanks
Heb de code voor 1.1.6. zojuist even opgezocht in de SSI.php
heb de functienaam gewijzigd en het werkt




Heb de onderstaande code in mijn default theme index.template.php
boven ?> ingevoegd

// Who is online in header For SMF1.1.6
function template_whosOnline($output_method = 'echo')
{
global $scripturl, $db_prefix, $user_info, $txt;

// Load the users online right now.
$result = db_query("
SELECT
lo.ID_MEMBER, lo.logTime, mem.realName, mem.memberName, mem.showOnline,
mg.onlineColor, mg.ID_GROUP
FROM {$db_prefix}log_online AS lo
LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = lo.ID_MEMBER)
LEFT JOIN {$db_prefix}membergroups AS mg ON (mg.ID_GROUP = IF(mem.ID_GROUP = 0, mem.ID_POST_GROUP, mem.ID_GROUP))", __FILE__, __LINE__);

$return['users'] = array();
$return['guests'] = 0;
$return['hidden'] = 0;
$return['buddies'] = 0;
$show_buddies = !empty($user_info['buddies']);

while ($row = mysql_fetch_assoc($result))
{
if (!isset($row['realName']))
$return['guests']++;
elseif (!empty($row['showOnline']) || allowedTo('moderate_forum'))
{
// Some basic color coding...
if (!empty($row['onlineColor']))
$link = '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '" style="color: ' . $row['onlineColor'] . ';">' . $row['realName'] . '</a>';
else
$link = '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '">' . $row['realName'] . '</a>';

// Bold any buddies.
if ($show_buddies && in_array($row['ID_MEMBER'], $user_info['buddies']))
{
$return['buddies']++;
$link = '<b>' . $link . '</b>';
}

$return['users'][$row['logTime'] . $row['memberName']] = array(
'id' => $row['ID_MEMBER'],
'username' => $row['memberName'],
'name' => $row['realName'],
'group' => $row['ID_GROUP'],
'href' => $scripturl . '?action=profile;u=' . $row['ID_MEMBER'],
'link' => $link,
'hidden' => empty($row['showOnline']),
'is_last' => false,
);
}
else
$return['hidden']++;
}
mysql_free_result($result);

if (!empty($return['users']))
{
krsort($return['users']);
$userlist = array_keys($return['users']);
$return['users'][$userlist[count($userlist) - 1]]['is_last'] = true;
}
$return['num_users'] = count($return['users']) + $return['hidden'];
$return['total_users'] = $return['num_users'] + $return['guests'];

if ($output_method != 'echo')
return $return;

echo '
', $return['guests'], ' ', $return['guests'] == 1 ? $txt['guest'] : $txt['guests'], ', ', $return['num_users'], ' ', $return['num_users'] == 1 ? $txt['user'] : $txt['users'];

// Hidden users, or buddies?
if ($return['hidden'] > 0 || $show_buddies)
echo '
(' . ($show_buddies ? ($return['buddies'] . ' ' . ($return['buddies'] == 1 ? $txt['buddy'] : $txt['buddies'])) : '') . ($show_buddies && $return['hidden'] ? ', ' : '') . (!$return['hidden'] ? '' : $return['hidden'] . ' ' . $txt['hidden']) . ')';

echo '<br />';
foreach ($return['users'] as $user)
echo $user['hidden'] ? '<i>' . $user['link'] . '</i>' : $user['link'], $user['is_last'] ? '' : ', ';
}

// Just like whosOnline except it also logs the online presence.
function ssi_logOnline($output_method = 'echo')
{
writeLog();

if ($output_method != 'echo')
return ssi_whosOnline($output_method);
else
ssi_whosOnline($output_method);
}



En aanroepfunctie  heb ik in de template_main_above
Net onder totale tijd online gezet

zoek

echo ' </span>';
}
// Otherwise they're a guest - this time ask them to either register or login - lazy bums...


en vervang met dit
echo ' </span>';
template_whosOnline();
}
// Otherwise they're a guest - this time ask them to either register or login - lazy bums...






Advertisement: