Seite 3 von 3

Verfasst: 30.03.2007 00:34
von gn#36
Hier nochmals alle relevanten Änderungen auf einen Blick:
Achtung wichtig: Zunächst alle zu ändernden Dateien sichern!
gn#36 hat geschrieben: Öffne page_header.php
Suche

Code: Alles auswählen

if ( !defined('IN_PHPBB') )
{
   die("Hacking attempt");
}

define('HEADER_INC', TRUE);
Danach einfügen

Code: Alles auswählen

if(!defined('SHOW_ONLINE'))
{
define('SHOW_ONLINE', true);
} 
gn#36 hat geschrieben:Änderung:
Als erstes verschieben wir den Start der Funktion ein wenig nach vorne:
finde

Code: Alles auswählen

if (defined('SHOW_ONLINE'))
{
direkt dahinter kommt

Code: Alles auswählen

function show_online_box_everywhere($forum_id=0,$display_forum=false)
{
	if(!$display_forum)
	{
		unset($forum_id);
	}
global $lang, $images,$template,$theme,$userdata,$board_config,$db;
global $logged_visible_online,$logged_hidden_online,$guests_online,$online_userlist,$l_online_users; 
gn#36 hat geschrieben: Suche weiter unten

Code: Alles auswählen

}

//
// Obtain number of new private messages
// if user is logged in
//
DAVOR einfügenÄnderung:

Code: Alles auswählen

if(!$forum_id)
   {
//
// If you don't use these stats on your index you may want to consider
// removing them
//
$total_posts = get_db_stat('postcount');
$total_users = get_db_stat('usercount');
$newest_userdata = get_db_stat('newestuser');
$newest_user = $newest_userdata['username'];
$newest_uid = $newest_userdata['user_id'];

if( $total_posts == 0 )
{
   $l_total_post_s = $lang['Posted_articles_zero_total'];
}
else if( $total_posts == 1 )
{
   $l_total_post_s = $lang['Posted_article_total'];
}
else
{
   $l_total_post_s = $lang['Posted_articles_total'];
}

if( $total_users == 0 )
{
   $l_total_user_s = $lang['Registered_users_zero_total'];
}
else if( $total_users == 1 )
{
   $l_total_user_s = $lang['Registered_user_total'];
}
else
{
   $l_total_user_s = $lang['Registered_users_total'];
}

$template->assign_vars(array(
      'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),
      'TOTAL_USERS' => sprintf($l_total_user_s, $total_users),
      'NEWEST_USER' => sprintf($lang['Newest_user'], '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$newest_uid") . '">', $newest_user, '</a>'),

      'FORUM_IMG' => $images['forum'],
      'FORUM_NEW_IMG' => $images['forum_new'],
      'FORUM_LOCKED_IMG' => $images['forum_locked'],

      'L_FORUM' => $lang['Forum'],
      'L_TOPICS' => $lang['Topics'],
      'L_REPLIES' => $lang['Replies'],
      'L_VIEWS' => $lang['Views'],
      'L_POSTS' => $lang['Posts'],
      'L_LASTPOST' => $lang['Last_Post'],
      'L_NO_NEW_POSTS' => $lang['No_new_posts'],
      'L_NEW_POSTS' => $lang['New_posts'],
      'L_NO_NEW_POSTS_LOCKED' => $lang['No_new_posts_locked'],
      'L_NEW_POSTS_LOCKED' => $lang['New_posts_locked'],
      'L_ONLINE_EXPLAIN' => $lang['Online_explain'],

      'L_MODERATOR' => $lang['Moderators'],
      'L_FORUM_LOCKED' => $lang['Forum_is_locked'],
      'L_MARK_FORUMS_READ' => $lang['Mark_all_forums'],

      'U_MARK_READ' => append_sid("index.$phpEx?mark=forums"))
   );
}
}
show_online_box_everywhere();
gn#36 hat geschrieben:EDIT: Zur besseren Übersicht: Das zugehörige andere Thema findet sich hier


finde DAVOR einfügen

Code: Alles auswählen

if(isset($forum_id)&& defined('SHOW_ONLINE') && $forum_id)
{
	$logged_visible_online = 0;
	$logged_hidden_online = 0;
	$guests_online = 0;
	$online_userlist = '';
	$l_online_users = '';
	show_online_box_everywhere($forum_id,true);
	$template->assign_vars(array(
		'TOTAL_USERS_ONLINE' => $l_online_users,
		'LOGGED_IN_USER_LIST' => $online_userlist,
		));
}
So, wie man sieht etwas komplizierter, ich hoffe ich habe jetzt keine Änderungen, die ich vorgenommen hatte vergessen. Wenn doch wirst du das vermutlich merken...
Ich hoffe ich habe das jetzt auf die schnelle korrekt zusammengefasst. Nach dieser Änderung kann die Box "Wer ist online" im Page_header platziert werden (nirgendwo anders außer weiterhin im Index).

Verfasst: 03.04.2007 22:06
von Shauku
Nachdem ich die genannten Modifikationen in der page_header.php erledigt habe, kommt folgendes:

---

Fatal error: Call to undefined function show_online_everywhere() in .../.../includes/page_header.php on line 442

---

Auszug page_header.php:

---
  • 441 * }
    442 * show_online_everywhere();
    443 *
---
Ich hoffe ich habe das jetzt auf die schnelle korrekt zusammengefasst. Nach dieser Änderung kann die Box "Wer ist online" im Page_header platziert werden (nirgendwo anders außer weiterhin im Index).
Was willst du damit sagen?

Verfasst: 03.04.2007 23:25
von Miriam
Du musst es schon alles umsetzen und nicht nur die Hälfte. Die Funktion heisst nicht

Code: Alles auswählen

show_online_everywhere()
, sondern

Code: Alles auswählen

show_online_box_everywhere()
Warum der Coder sie nicht

Code: Alles auswählen

show_online_box_everywhere_you_want_to_have_an_online_box_available_for_users_or_guests_depending_on_your_own_humble_opinion_on_needing_such_a_wonderful_box()
genannt hat, weiss ich nicht. :roll:

Verfasst: 03.04.2007 23:31
von gn#36
Der von Miriam gepostete Fehler ist wohl korrekt, ich habe die Modifikation oben jetzt entsprechend korrigiert.

Mit der Anmerkung ist gemeint, dass die Box in der overall_header.tpl Datei zu erscheinen hat und nirgendwo sonst funktionieren wird, sofern man sich in einem Forum oder Thema befindet ganz einfach weil die hierzu gehörigen Templatevariablen doppelt verwendet werden (einmal für die Gesamtanzeige "Wer ist online" und einmal für die Anzeige wer das jeweilige Forum betrachtet).

Verfasst: 04.04.2007 18:02
von Shauku
gn#36 hat geschrieben:Der von Miriam gepostete Fehler ist wohl korrekt, ich habe die Modifikation oben jetzt entsprechend korrigiert.

Mit der Anmerkung ist gemeint, dass die Box in der overall_header.tpl Datei zu erscheinen hat und nirgendwo sonst funktionieren wird, sofern man sich in einem Forum oder Thema befindet ganz einfach weil die hierzu gehörigen Templatevariablen doppelt verwendet werden (einmal für die Gesamtanzeige "Wer ist online" und einmal für die Anzeige wer das jeweilige Forum betrachtet).
Die Doppelbelegung der Variablen ist mir auch schon Aufgefallen. Deswegen hab ich übrigends auch ein Post verfasst: User Online auch in Viewforum und Viewtopic anzeigen

Leider bringt mir die header Lösung nicht so viel wie erhofft, bzw. nicht das gewünschte.

Verfasst: 05.04.2007 01:38
von gn#36
Dann solltest du einfach die Variablen umbenennen. Da die Anzeige ursprünglich nur in der overall_header.tpl gebraucht wurde habe ich keine Notwendigkeit gesehen das zu tun. Du musst im Prinzip das hier:

Code: Alles auswählen

$template->assign_vars(array(
      'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),
      'TOTAL_USERS' => sprintf($l_total_user_s, $total_users),
      'NEWEST_USER' => sprintf($lang['Newest_user'], '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$newest_uid") . '">', $newest_user, '</a>'),

      'FORUM_IMG' => $images['forum'],
      'FORUM_NEW_IMG' => $images['forum_new'],
      'FORUM_LOCKED_IMG' => $images['forum_locked'],

      'L_FORUM' => $lang['Forum'],
      'L_TOPICS' => $lang['Topics'],
      'L_REPLIES' => $lang['Replies'],
      'L_VIEWS' => $lang['Views'],
      'L_POSTS' => $lang['Posts'],
      'L_LASTPOST' => $lang['Last_Post'],
      'L_NO_NEW_POSTS' => $lang['No_new_posts'],
      'L_NEW_POSTS' => $lang['New_posts'],
      'L_NO_NEW_POSTS_LOCKED' => $lang['No_new_posts_locked'],
      'L_NEW_POSTS_LOCKED' => $lang['New_posts_locked'],
      'L_ONLINE_EXPLAIN' => $lang['Online_explain'],

      'L_MODERATOR' => $lang['Moderators'],
      'L_FORUM_LOCKED' => $lang['Forum_is_locked'],
      'L_MARK_FORUMS_READ' => $lang['Mark_all_forums'],

      'U_MARK_READ' => append_sid("index.$phpEx?mark=forums"))
   ); 
Außerhalb der Funktion lauffähig machen, oder beim ersten Durchlauf an andere Variablen zuweisen (z.b. U_X_MARK_READ so dass keine Konflikte entstehen) als beim zweiten (hier nimmst du dann die Standardwerte) In deiner Datei verwendest du dann deine geänderten Variablen und schon kannst du das verwenden wo du willst.