Seite 1 von 2

Skript nicht auf allen Seiten laufen lassen?

Verfasst: 06.09.2004 15:56
von star1
Hi,

noch ein kleines Problem heute ;-) !

Ich hab in der Overall_Header.tpl ein kleines Javascript eingefügt, das mir ein Banner einfliegen lässt (<div>-Layer), wenn man nicht eingeloggt ist. Dieses soll zur Registrierung ermutigen ( "href="profile.php?mode=register") und startet nach 5 Sekunden.

Dummerweise startet dieses ja nun auf jeder Seite. Ich würde gerne abfangen, ob mode=register ist und dann dieses Skript umgehen.

Also noch mal Klartext: wie kann ich verhindern, dass das Skript auf der Registrierungsseite nicht, aber auf allen anderen Seiten den Gästen angezeigt wird?

(Unterscheidung Gast - Mitglied hab ich realisiert <!-- BEGIN ... --> !)

Danke, Sebastian

Verfasst: 08.09.2004 13:28
von Acid

Code: Alles auswählen

if( $mode != 'register' )
{
     dein script
}

Verfasst: 25.10.2004 10:08
von star1
Konnte es jetzt endlich testen.

Habe so in der overall_header.tpl eingetragen:

Code: Alles auswählen

if ($mode != 'register')
{
Mein Skript!
}
hinter: <!-- BEGIN switch_user_logged_out --> und vor <!-- END switch_user_logged_out --> , da mein Script nur für nicht angemeldete User, die nicht auf der Registrierungsseite sind laufen soll.

Dummerweise schreibt mir mein Forum nun immer oben links in die Ecke "if ($mode != 'register') { }" -> reagiert dementsprechend nicht auf die IF-Anweisung. Mein Skript läuft weiterhin auf allen Seiten für nicht registrierte User. Wie kann ich das beheben?

Danke, Sebastian

Verfasst: 25.10.2004 11:39
von Leuchte
Nicht overall_header.tpl sondern in page_header.php musst du den Code einfügen.

Verfasst: 25.10.2004 11:54
von star1
Gut, das sehe ich ein ;-) ...

Aber in welcher Form soll ich mein Skript einfügen? Es ist ein Javascript, welches eine Art "Pop-Up" reinfliegen lässt...

Wenn ich es in die geschweiften Klammer hinter ($mode!=register) setze, bekomme ich folgende Message:
Parse error: parse error, unexpected '<' in /srv/www/htdocs/web66/html/phpBB2/includes/page_header.php on line 773
Das '<' bezieht sich wohl auf '<script>' meines JS.

Verfasst: 25.10.2004 11:57
von Leuchte
Versuchs mal in diese Richtung

Code: Alles auswählen

if ($mode != 'register') 
{ 
$dein_script = '<script language="Javascript" type="text/javascript">
..
..
..
//-->
</script>'; 
}
Dann findest du

Code: Alles auswählen

$template->assign_vars(array(
	'SITENAME' => $board_config['sitename'],
Füge danach ein

Code: Alles auswählen

'DEIN_SCRIPT' => $dein_script,
In der overall_header.tpl kannst du dann {DEIN_SCRIPT} nutzen.

Verfasst: 25.10.2004 13:49
von star1
Ja danke für die Info. Das hat mir zum Verständnis noch gefehlt.

Eine Frage hab ich noch:
ich bekomme, nachdem ich dein letztes Posting befolgt habe, die Meldung:

Code: Alles auswählen

Parse error: parse error, unexpected T_STRING in /MEIN_SERVERPFAD/phpBB2/includes/page_header.php on line 782
Kann das daran liegen, dass in meinem Javascript dieses Zeichen ' vorkommt, welches Jahr als Variableninhaltsende (oder so) verstanden wird?

Danke schon mal für deine Mühe, Leuchte!

Verfasst: 25.10.2004 13:50
von Leuchte
Poste doch mal dein Script. Aber wird wohl an dem ' liegen.

Verfasst: 25.10.2004 14:09
von star1
Hier ist mein Skript, so wie es in der page_header Datei steht:

Code: Alles auswählen

if ($mode != 'register') {
$reg_now = '<script>
x = -550
h = 400
w = 500
y = 1
function moveit() {
	if (x < 250) {
		y = 1
		document.getElementById('block').style.left = x
		document.getElementById('block').style.width = w
		document.getElementById('block').style.height = h
		x++
		// block.left = block.xpos
		setTimeout("moveit()",10)
	}
}
function moveitaway() {
if (y > 0) {
	if (x < 1030) {
		document.getElementById('block').style.left = x
		document.getElementById('block').style.width = w
		document.getElementById('block').style.height = h
		x++
		x++
		// block.left = block.xpos
		setTimeout("moveitaway()",10)
	if (x > 1029) {
		x = -550
		document.getElementById('block').style.left = x
		document.getElementById('block').style.width = w
		document.getElementById('block').style.height = h
		y = 0
		}
	}
	}
}
window.setTimeout("moveit()",5000)
</script>';
}
Kann ich das ' irgendwie ersetzen?

Verfasst: 25.10.2004 14:13
von Leuchte
Versuchs mal so

Code: Alles auswählen

if ($mode != 'register') { 
$reg_now = '<script> 
x = -550 
h = 400 
w = 500 
y = 1 
function moveit() { 
   if (x < 250) { 
      y = 1 
      document.getElementById("block").style.left = x 
      document.getElementById("block").style.width = w 
      document.getElementById("block").style.height = h 
      x++ 
      // block.left = block.xpos 
      setTimeout("moveit()",10) 
   } 
} 
function moveitaway() { 
if (y > 0) { 
   if (x < 1030) { 
      document.getElementById("block").style.left = x 
      document.getElementById("block").style.width = w 
      document.getElementById("block").style.height = h 
      x++ 
      x++ 
      // block.left = block.xpos 
      setTimeout("moveitaway()",10) 
   if (x > 1029) { 
      x = -550 
      document.getElementById("block").style.left = x 
      document.getElementById("block").style.width = w 
      document.getElementById("block").style.height = h 
      y = 0 
      } 
   } 
   } 
} 
window.setTimeout("moveit()",5000) 
</script>'; 
}