Menu in Javascript

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
phillip
Mitglied
Beiträge: 933
Registriert: 20.03.2005 12:00

Menu in Javascript

Beitrag von phillip »

Hallo
Ich habe ein kleines Problem mit einem Menu: Hier

Und zwar mein ich dieses Menu oben links.
Was ich erreichen will, ist dass dieses rote rechteck je nach dem was angeklickt wird, verschoben wird.

Und da dieses Menu per overall_header reingeholt wird, ist dies nicht so einfach.

Ich habe irgendiwe an JavaScript gedacht oder so.

Was hättet ihr für eine Idee?
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Im Moment kommt auf der Seite nur diese Fehlermeldung:
Fatal error: Call to a member function lang() on a non-object in /home/httpd/vhosts/phillip.ch/httpdocs/orion/includes/class_calendar_api.php on line 63
:wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
phillip
Mitglied
Beiträge: 933
Registriert: 20.03.2005 12:00

Beitrag von phillip »

ja habs behoben ;-)
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Selbst wenn es mit JavaScript gehen würde, würde ich es nicht so lösen, da es ja dann nur für die Benutzer funktionieren würde, die JavaScript aktiviert haben.

Ich würde das ganze so angehen: Du definierst in jeder Datei, die in dem Menü verlinkt wird, vor der Einbindung der page_header.php eine Konstante, z.B. MENU:

Code: Alles auswählen

define('MENU', 'portal');
In der page_header.php packst du das Menü in ein Array:

Code: Alles auswählen

$menu = array(
  'portal' => array("portal.$phpEx", $lang['Portal']),
  'index' => array("index.$phpEx", $lang['Index']),
  // und so weiter...
);
Danach gehst du das Menü-Array per foreach durch und vergleichst dabei die Keys mit dem Wert, der in der Konstante gespeichert ist. Wenn die Werte übereinstimmen, muss der aktuelle Eintrag einen Rand bekommen. Die ganzen Daten schickst du per

Code: Alles auswählen

$template->assign_block_vars('menu', array(
  // ...
);
ans Template und gibst sie dort wie ein gewöhnlicher Block aus. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
phillip
Mitglied
Beiträge: 933
Registriert: 20.03.2005 12:00

Beitrag von phillip »

ja an sowas hab ich auch gedacht, wusste nur nicht genau wie...
Kannst du mir vielleicht noch bei der foreach helfen?

Code: Alles auswählen

  foreach($menu as defined('MENU'))
?
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

http://www.php.net/manual/de/control-st ... oreach.php
Schau dir mal das zweite Beispiel an. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
phillip
Mitglied
Beiträge: 933
Registriert: 20.03.2005 12:00

Beitrag von phillip »

ok, ich habs jetzt ein bisschen vereinfacht... deins war mir zu kompliziert ^^

Code: Alles auswählen

$menu = array( 
  'portal', 
  'index',
  'chat',
  'album',
  'games',
  'mitgliederliste',
  'profilbilder'
);

foreach ($menu as $menuname)
{
	if ($menuname = defined('MENU'))
	{
	$ramen = 'fstLevelActive';
	}
	else
	{
	$ramen = 'fstLevel';
	}
}


$template->assign_block_vars('menu', array( 
  'RAMEN' => $ramen)
);

im overall_header:

Code: Alles auswählen

<div class="corner_top"></div>
      <h3>Community</h3>
     
<!-- BEGIN menu -->

<div class="bg_top" id="reactions">

<div class="{menu.RAMEN}"><a href="events.php">Events</a></div>

<div class="{menu.RAMEN}"><a href="index.php">Forum</a></div>
<!-- BEGIN switch_user_logged_in -->

<div class="{menu.RAMEN}"><a href="javascript:void(0);" onClick="window.open('chat/flashchat.php','2_ChatBox','scrollbars=no,width=800,height=550')" onMouseover="ddrivetip('Chat','white', 30)";
onMouseout="hideddrivetip()">Chat</a></div>

<!-- END switch_user_logged_in -->


<div class="{menu.RAMEN}"><a href="album.php">Album</a></div>

<div class="{menu.RAMEN}"><a href="activity.php?mode=cat&cat_id=0">Games</a></div>

<div class="{menu.RAMEN}"><a href="search_member.php">Mitgliederliste</a></div>

<div class="{menu.RAMEN}"><a href="avatarlist.php">Profilbilder</a></div>


</div>
<!-- END menu -->		
      
<div class="corner_bottom"></div>


Aber leider werden jetzt alle umramt, obwohl ich nur in der events.php

Code: Alles auswählen

define('MENU', 'events');
ist...
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17476
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Hi,

vielleicht klappt es ja so:

Code: Alles auswählen

if ($menuname = MENU) 
?
phillip
Mitglied
Beiträge: 933
Registriert: 20.03.2005 12:00

Beitrag von phillip »

Dr.Death hat geschrieben:

Code: Alles auswählen

if ($menuname = MENU) 
nein, leider auch nicht...
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Lies dir mal KB:template_syntax und dort insbesondere den Abschnitt über Schleifen durch.
KB:knigge
Antworten

Zurück zu „Coding & Technik“